Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

David Ramires

Carrinho de Compras Com Cookies

Recommended Posts

Bom Dia Pessoal! estou montando um carrinho de compras, e tenho algumas dúvidas....

 

é o seguinte, pode ser que eu não consiga ver a solução tão bem quanto o pessoal mais craque em php..

 

bom vou tentar explicar....

 

Como faço para identificar que determinada compra ( carrinho ) é do usuário Fulano? Imagem Postada

ou seja, por exemplo, na hora que eu for mostrar o carrinho de Fulano, como faço para identificar que aquele carrinho é relamente dele....

 

entenderam ? rsrs.. isso era uma dúvida minha... lembrando que eu estou usando Banco de Dados (MySql) ....

 

.....outra dúvida minha..

 

eu estava pesando em fazer assim:

 

 

Na hora em que o Fulano colocar o 1º produto no carrinho, eu pego o ID (último id) da minha tabela carrinho, e quardo o ID numa sessão para poder identificar as compras de Fulano no site...... Imagem Postada

será que fui claro.. ??? tomara que sim.. procurei algo semelhante no forum, no imasters também, entre outros sites...

 

até tem carrinhos prontos e tals, mas quero fazer o meu carrinho, ai quem sabe se ele ficar bom eu posso postar aqui!!!!

 

Gostaria de opinões da Galera que já fizeram algo assim....

 

 

 

Obrigado! :thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

valew pela resposta rápida! :thumbsup:Bom o carrinho será gravado no BD....algumas pessoas me deram dicas, e disseram que usar o bd é melhor do que usar sessão.... fica mais fácil.... mas agora num sei como posso fazer....Posso usar BD e sessão juntos ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Thiago tenho sim.... tá bem simples pq estou começando a fazer....Tabelas..

TB_produtosid_prodnomeprecodescfoto

---------------------------------

TB_carrinhoid_carid_prod_fkqtd

bom ta ai !!! era isso neh :assobiando:

Compartilhar este post


Link para o post
Compartilhar em outros sites

okay..... mas ai Thiago, se acha que posso fazer daquele jeito que sitei acima??

Compartilhar este post


Link para o post
Compartilhar em outros sites

oh.. eu estava querendo fazer o mesmo esquema dessa loja Loja exemploa Pessoa entra no site, não é necessário se cadastrar (para preencher o carrinho) ai na hora da finalização ai sim ele se cadastra......Quando você sitou sobre o ID do cliente, ele também vai servir para a identidicação da compra certo? mas isso quando o usuáro já estiver cadastrado.....agora nesse caso que eu sitei acima, sem ele estar cadastrado mesmo....

Posso sempre pegar o último id da tabela Carrinho e registrar numa sessão ? para poder identificar a compra de fulano (antes dele efetuar o cadastro)

:rolleyes:

Compartilhar este post


Link para o post
Compartilhar em outros sites

:thumbsup: Obrigado Thiago ... foi de grande ajuda!!! agora vou trabalhar um pouco....Ah.. eu poderia fazer assim oh.. eu vou fazer aqui.. depois que eu testar ele... Poderia postara aqui para pessoal ver.. como ficou, ou alguém que tenha uma dúvida parecida... :!:Falows!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa a tabela ficaria legal da seguinte forma..

 

Tabela produto

tb_produtoid_produto || nome || descricao || preco_unitario
tabela cliente basico

tb_clienteid_cliente || nome || email || login || senha
Produto x Imagem pois sabemos que o produto pode ter mais de 1 imagem então 1 pra muitos

 

tb_produto_imgfk_produto || nome || descricao || url || tipo
Carrinho

 

tb_carrinhofk_cliente || fk_produto || quantidade || datatime
Bem com tudo isso você já dá para criar uma loginha basica online... =D Imagem Postada

 

Agora é o seguinte.. você tem que pensar no seguinte se você quer que seu site seja amigavel e preve a natureza humana. você iria salar o carrinho no banco porque isso? imagina que o cliente está lá fazendo seu carrinho de compra Ok ai de-repente a energia cai. como fica? se tivesse salvo na sessão ele iria perder tudo correto? bem ai tá o esquema quando ele logar novamente no site o carrinho vai está intacto até o seu ultimo lançamento a ela Imagem Postada

Agora imagina que você quer fazer com que ele possa adicionar produtos ao carrinho.. mais ele não está logado. ai você salvaria não em sessions e sim cookies pois se cair a energia bay bay todo o pedido dele.. ai quando ele entra-se novamente no site após religar o micro estaria lá pendente esse carrinho de cookies.. Imagem Postada

 

Sako as ideias? se o kra tiver logado salva no db se não tiver salva no cookies

 

Como seria gravado no cookies? eu gravaria o seguinte..

 

$_COOKIES["carrinho"] = serealize( array("id_produto"=>01,"qtd"=>5) )

 

depois recupera assim:

 

$carrinho = unserealize( $_COOKIES["carrinho"] )

 

Bem agora só estudar a análise desse seu projeto para melhorar ainda mais o seu objetivo Imagem Postada

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito Obrigado Lion.. gostei da sua solução.... :thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

:upset:

 

Galera.. não estou conseguindo colocar mais de 1 produto no meu carrinho... poxa que vergonha! nem queria postar nada, mas ainda não consegui....

estou fazendo assim oh para tentar colocar mais de 1 produto no carrinho:

 

if (array_key_exists($cod_prod, $_COOKIES['carrinho'])) {

$_COOKIES['carrinho'][$cod_prod]['qtde'] += $qtde;

} else {

$_COOKIES['carrinho'][$cod_prod]['qtde'] = $qtde;

}

será que tenho direito as dicas. ou tenho que me matar mais um pouco!!!! Imagem Postada

 

 

Valew...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Thiago.. beleza!!! :thumbsup:

 

então ontem eu tentei fazer essa parte co carrinho com Cookie, depois com Sessão ....

acho que algum tempo você tinha feito respondido alguma coisa parecida no forum, eu li ... tentei fazer mas não deu certo

 

o codigo era bem parecido com esse que você postou....

das 2 vezes ele dá o mesmo erro:

Warning: array_key_exists(): The second argument should be either an array or an object in C:apache2triadhtdocs_sitescarrinhodavidvercarrinho.php on line 45

linha 45

 

if (array_key_exists($cod_prod, $_COOKIES['carrinho'])) {
ontem eu procurei resolver este problema, mas não consegui... (este erro no 2º agurmento) procurei sobre array, mas não consegui!

então tanto com cookie ou com sessão dá o mesmo erro ? o poderá ser ? Imagem Postada

eu estou usando PHP Version 4.4.0

 

Obrigado...

Compartilhar este post


Link para o post
Compartilhar em outros sites

:rolleyes:ainda aparece o mesmo erro!!!!!

Warning: array_key_exists(): The second argument should be either an array or an object in C:apache2triadhtdocs_sitescarrinhodavidvercarrinho.php on line 45

echo "<pre>";print_r($_COOKIE['carrinho']);echo "</pre>";[b]if (array_key_exists($cod_prod, $_COOKIE['carrinho'])) {[/b]$_COOKIE['carrinho'][$cod_prod]['qtde'] += $qtde;} else {$_COOKIE['carrinho'][$cod_prod]['qtde'] = $qtde;}echo "<pre>";print_r($_COOKIE['carrinho']);echo "</pre>";

Compartilhar este post


Link para o post
Compartilhar em outros sites

mostra apenas o botão de voltar...... (não tem muita interface gráfica...no site ainda)....nesa linha

if (array_key_exists($cod_prod, $_COOKIE['carrinho'])) {

ele não está querendo aceitar o 2º argumento que é $_COOKIE['carrinho']

ai eu sai pesquisando....achei um exemplo assim:
$busca_array = array("primeiro" => 1, "segundo" => 4);if (array_key_exists("primeiro", $busca_array)) {	echo "O elemento 'primeiro' está no array!";}
bom depois eu achei outra coisa... não sei se poderia usae isso:(para ver se já tem o valor X no array) :!:
$os = array ("Mac", "NT", "Irix", "Linux");if (in_array ("Irix", $os)) {	print "Tem Irix";}
....o problema tá sendo que ele não quer incluir mais de um produto no carrinho..... :upset:estou lendo um tópico bem parecido, que tem o mesmo problema...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Legal... agora nem deu erro!!!! :thumbsup:mas... ainda não quer ficar mais de 1 produto no carrinho.... :upset: ...não sei pq com cookie não quer dar certo.................oh eu fiz assim com sessão e deu:

if(isset($_POST['qtd'])){	$qtde = $_POST['qtd'];	} else {	$qtde = "";}if(isset($_POST['id_produ'])){	$cod_prod = $_POST['id_produ'];	} else {	$cod_prod = "";}$_SESSION['carrinho'][$cod_prod]['qtd'] = $qtde;print_r($_SESSION['carrinho']);
mas preciso mesmo usar cookie..... :rolleyes:vixi.. acho que alguém nunca deu tanto trampo para vcs neh!!! :assobiando: rsrsOh.. na linha:
if (isset($_COOKIE['carrinho'])) {
ele verifica se está setado certo ?então nessa condição, acho que ele está retornando falso, ou seja ele tá indo direto para :
} else {	$_COOKIE['carrinho'][$cod_prod]['qtde'] = $qtde;}
por algum motivo o $_COOKIE não está vindo setado.... :devil: .. rs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Serialize e Unserialize Arrays

 

Serializar um array é nada mais que salvar o seu conteúdo (que está na memória), em um arquivo TXT, banco de dados, XML, etc. Unserializar é o processo inverso, ou seja, recuperar o conteúdo que foi salvo e reconstruílo na memória novamente.

 

 

Nesse caso do seu exemplo não é necessario usa -los, para gravar ???

 

....

 

fiz assim.. eu fiu na página index.php e :

print_r($_COOKIE['carrinho']);

para ver se aparecia alguma coisa, não sei se deria aparecer....

Compartilhar este post


Link para o post
Compartilhar em outros sites

tudo bem.... não tinha esse conhecimento com Cookie... :thumbsup:

 

fiz sim Thiago.... usei print_r($_COOKIE['carrinho']); para ver se tem alguma coisa...

 

mas nada aprece....

 

eh como se tivesse zero o cookie....

 

será que eu estou esquecendo de fazer alguma coisa ??? Imagem Postada

 

 

 

agora se eu colocar print_r($_COOKIE['carrinho']); depois do script que você montou, ai sim aparece o produto que acabou de ser inserido... ai eu volto para a outra página para selecionar outro produto.. ai é quando ele coloca por cima...

Compartilhar este post


Link para o post
Compartilhar em outros sites

beleza.... Thiago vou colocar o básico aqui...páginas:

index.php

<?require_once("admin/includes/class_dbmanager.php");	$produto = array();	$idprod  = array();	$valor   = array();	$img	 = array();	$con = new DbManager();	$con->connect();	$resultado = $con->execQuery("select * from produtos");	while ($linhas = mysql_fetch_array($resultado)){			if ($linhas["id_prod"] !=''){			 array_push($idprod, $linhas["id_prod"]);		}				 if ($linhas["nome"] !=''){			 array_push($produto, $linhas["nome"]);		}				 if ($linhas["preco"] !=''){			 array_push($valor, $linhas["preco"]);		}				 if ($linhas["foto"] !=''){			 array_push($img, $linhas["foto"]);		}	}?><table border="0" width="50%" cellspacing="0" cellpadding="0" align="center"><tr><? if(count($produto) > 0) {		$_k ='1';		for($i = 0; $i < count($produto); $i++){	 		if($_k > 2){ $tr = '<tr>'; $_k ='1';} ?> 		<?=$tr;?><td>				<table width="25%" border="0" cellspacing="0" cellpadding="0" align="center"><tr>	<td rowspan="3" width="18%"><img src="imagens/<?=$img[$i]?>" /></td>	<td><?=$produto[$i]?></td></tr><tr>	<td><?=$valor[$i]?></td></tr><tr>	<td>texto</td></tr><tr align="center">	<td><form name="escolha" method="post" action="vercarrinho.php">		<td><input type="hidden" name="id_produ" value="<?=$idprod[$i]?>" />		<input type="hidden" name="car" value="incluir" />		<input type="hidden" name="qtd" value="1" />		<input type="submit" name="comprar" value="comprar" />		</form></td>				<td><input type="submit" name="detalhes" value="+Detalhes" /></td>			 </tr></table></td><? $_k++;  unset($tr);   }} print_r($carrinho = unserialize($_COOKIES["carrinho"]));?>

carrinho.php

<?if(isset($_POST['car'])){	$dadocar = $_POST['car'];	} else {	$dadocar = "";}if(isset($_POST['qtd'])){	$qtde = $_POST['qtd'];	} else {	$qtde = "";}if(isset($_POST['id_produ'])){	$cod_prod = $_POST['id_produ'];	} else {	$cod_prod = "";}if (isset($_COOKIE['carrinho'])) {	if (array_key_exists($cod_prod, $_COOKIE['carrinho'])) {		$_COOKIE['carrinho'][$cod_prod]['qtde'] += $qtde;	} else {		$_COOKIE['carrinho'][$cod_prod]['qtde'] = $qtde;	}} else {	$_COOKIE['carrinho'][$cod_prod]['qtde'] = $qtde;}echo "<pre>";print_r($_COOKIE['carrinho']);echo "</pre>";?>
soh tenho essas 2 páginas.. mesmo...!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Thiago, obrigado Obrigado pela força até agora... :rolleyes:agora está acumulando certinho.. :thumbsup:eu estou tão nervoso com esse projeto, que as vezes eu deixo passar coisas tão simples assim....quando eu tinha sitado sobre Serialize e Unserialize, pensava que falta alguma coisa para gravar o txt.. mas não estava dando muito certo...bom agora preciso fazer funcionar todo o resto do carrinho.. e vou botar a mão na massa....depois que tiver pronto meu carrinho, vou postar aqui no fórum para o pessoal olhar e utilizar....vou ver se faço um carrinho com SESSÃO e outro com COOKIEValew........

Compartilhar este post


Link para o post
Compartilhar em outros sites

uma outra coisinha....

caso eu queria colocar no cookie o nome do produto:

nessa linha:

setcookie("carrinho[$cod][qtde_prod]", $qtde);

vou ter fazer alguma coisa assim:

setcookie("carrinho[$cod][qtde_prod][nome_pod]", $qtde);

?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom... acho que vou ter que pagar um PIZZA para você neh Thiago.. rsrsrs

 

vamos supor que eu tenho um botão para Limpar todo o carrinho...

você aconselha eu usar:

 

setcookie("carrinho");

ou é melhor usar o time(); ??

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.