click01 0 Denunciar post Postado Julho 3, 2009 Ae amigo, Faça o seguinte. você vai trabalhar com duas tabelas nesse caso. Uma que registra os ID's e quantidades dos produtos cadastrados em cada carrinho (produtos_car) e outra que registra os carrinhos de cada sessão (carrinhos). Ae você vai relacionar as duas. IMPORTANTE: A tabela produtos_car NÃO contém as informações dos produtos cadastrados no site. Estas devem estar em outra tabela e o id do produto a ser adicionado deve ser passado via URL. Copie e cole o seguinte código pra criar as tabelas SQL: CREATE TABLE `carrinhos` ( `carrinho_id` int(15) NOT NULL auto_increment, `sessao_carrinho` varchar(50) NOT NULL, PRIMARY KEY (`carrinho_id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=0; CREATE TABLE `produtos_car` ( `id_produto` int(15) NOT NULL, `carrinho_p` int(15) NOT NULL, `quantidade` int(15) NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1; Agora utilize o seguinte código na página carrinho.php: <?php session_start(); include "conexao.php"; $sessao = session_id(); $prod = intval($_GET["produto"]); // Aqui verifico se existe algum carrinho pra essa sessão $selc = mysql_query("SELECT * FROM carrinhos WHERE sessao_carrinho='$sessao'") or die(mysql_error()); $numrowsc = mysql_num_rows($selc); //Se existir, cadastro os produtos dentro desse carrinho if($numrowsc > 0) { $arr = mysql_fetch_array($selc); $id_carrinho = $arr["carrinho_id"]; // Pego o id do carrinho em questão $selp = mysql_query("SELECT * FROM produtos_car WHERE id_produto='$prod' AND carrinho_p='$id_carrinho'") or die(mysql_error()); // Seleciono o produto desse carrinho if(mysql_num_rows($selp) > 0) { // Verifico se já existe um produto igual registrado pra esse carrinho. Se existir, aumento a quantidade em +1 $info = mysql_fetch_array($selp); $qtde = $info["quantidade"]; $nova_qtde = $qtde + 1; $sql = "UPDATE produtos_car SET quantidade='$nova_qtde' WHERE id_produto='$prod' AND carrinho_p='$id_carrinho'"; } else { // Se não existir, registro com quantidade = 1 $sql = "INSERT INTO produtos_car (id_produto, carrinho_p, quantidade) VALUES('$prod', '$id_carrinho', '1')"; } $query = mysql_query($sql); } //Se não existir, crio o carrinho para então registrar os produtos else { $crio_carrinho = mysql_query("INSERT INTO carrinhos(carrinho_id, sessao_carrinho) VALUES('', '$sessao')"); $selcar = mysql_query("SELECT * FROM carrinhos WHERE sessao_carrinho='$sessao'") or die(mysql_error()); $arr = mysql_fetch_array($selcar); $id_carrinho = $arr["carrinho_id"]; // Pego o id do carrinho em questão $selp = mysql_query("SELECT * FROM produtos_car WHERE id_produto='$prod' AND carrinho_p='$id_carrinho'") or die(mysql_error()); // Seleciono o produto desse carrinho if(mysql_num_rows($selp) > 0) { // Verifico se já existe um produto igual registrado pra esse carrinho. Se existir, aumento a quantidade em +1 $info = mysql_fetch_array($selp); $qtde = $info["quantidade"]; $nova_qtde = $qtde + 1; $sql = "UPDATE produtos_car SET quantidade='$nova_qtde' WHERE id_produto='$prod' AND carrinho_p='$id_carrinho'"; } else { // Se não existir, registro com quantidade = 1 $sql = "INSERT INTO produtos_car (id_produto, carrinho_p, quantidade) VALUES('$prod', '$id_carrinho', '1')"; } $query = mysql_query($sql); } if($query) { echo "Ok! Produto adicionado ao carrinho com sucesso!<br />"; echo "<a href='#'>Voltar às compras</a>"; } else { echo "O produto não pôde ser adicionado ao carrinho!<br />"; echo "<a href='#'>Voltar</a>"; } ?> Você pode adaptar às suas necessidades Abraços xiiii agradeço a ajuda, mas isso de criar novas tabelas iria fazer com que tivesse que alterar todos os codigos ja existentes http://forum.imasters.com.br/public/style_emoticons/default/upset.gif eu colo aqui as minhas tabelas para veres se não da para usar como ta: CREATE TABLE IF NOT EXISTS `carrinho` ( `id` int(11) NOT NULL auto_increment, `cod` int(11) NOT NULL, `quant` int(11) NOT NULL, `sessao` varchar(64) NOT NULL, PRIMARY KEY (`id`), KEY `sessao` (`sessao`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=159 ; CREATE TABLE IF NOT EXISTS `produtos` ( `id` int(11) NOT NULL auto_increment, `nome` varchar(130) NOT NULL, `img` varchar(36) NOT NULL, `preco` float NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ; sao estas as que estou a usar... todo o carrinho funciona mt bem, excepto que n altera o numero de produtos e em vez disso adiciona 2 ou mais iguais Compartilhar este post Link para o post Compartilhar em outros sites
Red FeniX 4 Denunciar post Postado Julho 3, 2009 Veja se assim resolve seu problema: <?php session_start(); include "conexao.php"; $sessao = session_id(); $prod = intval($_GET["produto"]); // Aqui verifico se existe algum carrinho pra essa sessão $selc = mysql_query("SELECT * FROM carrinho WHERE sessao='$sessao' AND cod='$prod'") or die(mysql_error()); $numrows = mysql_num_rows($selc); $arr = mysql_fetch_array($selc); if($numrows > 0) { // Se retornar carrinhos para esta sessão, a var $qtde assume o valor do campo quant $qtde = $arr["quant"]; } else { // Caso contrário, assume valor 0 $qtde = "0"; } if($qtde >= 1) { // Verifico se já existe um produto igual registrado pra esse carrinho. Se existir, aumento quantidade em +1 $nova_qtde = $qtde + 1; $sql = "UPDATE carrinho SET quant='$nova_qtde' WHERE sessao='$sessao' AND cod='$prod'"; } else { // Se não existir, registro com quantidade = 1 $sql = "INSERT INTO carrinho (id, cod, quant, sessao) VALUES('', '$prod', '1', '$sessao')"; } $query = mysql_query($sql); if($query) { echo "Ok! Produto adicionado ao carrinho com sucesso!"; echo "<a href='#'>Voltar às compras</a>"; } else { echo "O produto não pôde ser adicionado ao carrinho!"; echo "<a href='#'>Voltar</a>"; } ?> Falo Compartilhar este post Link para o post Compartilhar em outros sites
click01 0 Denunciar post Postado Julho 3, 2009 Veja se assim resolve seu problema: <?php session_start(); include "conexao.php"; $sessao = session_id(); $prod = intval($_GET["produto"]); // Aqui verifico se existe algum carrinho pra essa sessão $selc = mysql_query("SELECT * FROM carrinho WHERE sessao='$sessao' AND cod='$prod'") or die(mysql_error()); $numrows = mysql_num_rows($selc); $arr = mysql_fetch_array($selc); if($numrows > 0) { // Se retornar carrinhos para esta sessão, a var $qtde assume o valor do campo quant $qtde = $arr["quant"]; } else { // Caso contrário, assume valor 0 $qtde = "0"; } if($qtde >= 1) { // Verifico se já existe um produto igual registrado pra esse carrinho. Se existir, aumento quantidade em +1 $nova_qtde = $qtde + 1; $sql = "UPDATE carrinho SET quant='$nova_qtde' WHERE sessao='$sessao' AND cod='$prod'"; } else { // Se não existir, registro com quantidade = 1 $sql = "INSERT INTO carrinho (id, cod, quant, sessao) VALUES('', '$prod', '1', '$sessao')"; } $query = mysql_query($sql); if($query) { echo "Ok! Produto adicionado ao carrinho com sucesso!"; echo "<a href='#'>Voltar às compras</a>"; } else { echo "O produto não pôde ser adicionado ao carrinho!"; echo "<a href='#'>Voltar</a>"; } ?> Falo resolveu sim... deu um erro no botao voltar, mas eu ja arranjei :) mt mt obrigado... eu tenho ainda mais 2 duvidas que gostava de resolver... uma era meter os produtos no index.php a aparecerem em 4 colunas de 3 produtos cada, com a paginação em baixo e outra era em detalhes.php mostrar a imagem com marca de agua... será que podias ajudar-me a conseguir isso? vou colar os codigos para veres... index.php <? session_start(); include('conexao.php'); ?> <html> <body> <center> <img src='BannerLoja.png' border='0'><br> <table cellpadding='5' cellspacing='1' width='800'> <tr> <td align='center'> <? // Faz o pedido à base de dados. $produtos = mysql_query('SELECT * FROM produtos ORDER BY RAND()', $con); while($produto = mysql_fetch_assoc($produtos)){ echo '<div>'; // Mostra a imagem e nome do produto. echo '<br><img width=120 height=90 border=0 src="Imagens/'.$produto['img'].'"><br><b>'.$produto['nome'].'</b><br>'; // Mostra o preço. echo '€ '.number_format($produto['preco'], 2, ',', '').'<br>'; // Mostra o link pra adicionar ao carrinho. echo '<a href="carrinho.php?produto='.$produto['id'].'"><img src="BotAdicionar.png" border="0"></a><br>'; echo '<a href="verProdutos.php"><img src="BotCarrinho.png" border="0"></a></div>'; } ?> </td> </tr> </table> </body> </html> detalhes.php <? include('conexao.php'); ?> <html> <body> <? $id = $_GET['id']; $itens = mysql_query("SELECT * FROM produtos WHERE id = '$id'") or die(mysql_error()); if(mysql_num_rows($itens) < 1){ echo "Produto inválido!<br><br><a href='index.php'>Ir para a loja</a>"; } else { while($item = mysql_fetch_assoc($itens)){ ?> <center> <img src='BannerLoja.png' border='0'><br> <table bgcolor='#99cc33' cellpadding='5' cellspacing='1' width='800'> <tr> <td bgcolor='#ffffff' align='center'> <? echo '<br><img width=400 height=300 border=0 src="Imagens/'.$item['img'].'"><br><b>'.$produto['nome'].'</b><br>'; ?> </td> </tr> <tr> <td bgcolor='#99cc33' align='center'> <center> <font size='2' color='#ffffff'><b>Detalhes do Produto:</b></font> </td> </tr> <tr> <td bgcolor='#e3e3e3' align='center'> <font size='4' color='#000000'><b><? echo $item['cod'] ?><? echo $item['nome'] ?></b></font> <br> <font size='3' color='#666666'> <b>€</b> <? echo number_format($item['preco'], 2, ',', '') ?> </td> </tr> <tr> <td bgcolor='#99cc33' align='center'> <a href="verProdutos.php"><img src="BotCarrinho.png" border="0"></a> <a href="index.php"><img src="BotLoja.png" border="0"></a> <a href="finalizar.php"><img src="BotFinalizar.png" border="0"></a> </td> </tr> </table> <? }} ?> </body> </html> é isso aí acima... obrigado por tudo mais uma vez! Compartilhar este post Link para o post Compartilhar em outros sites
Red FeniX 4 Denunciar post Postado Julho 3, 2009 Ae parceiro, Quanto a sua primeira dúvida, vou te passar a lógica: Você cria uma div com um id que passe um width de, por exemplo, 800px para englobar toda a exibição de produtos. Ae você coloca, quando exibir os produtos, uma div que delimite um width de 200px por produto e coloque um float:left em cada uma dessas divs. Depois joga um LIMIT 12 na query SQL. Mais ou menos isso. Não pude analisar seus códigos ainda pq estou ocupado agora... Já a segunda, dê uma olhada nesses links: http://codigofonte.uol.com.br/codigo/php/i...-marca-dagua%5D http://clares.wordpress.com/2008/07/17/mar...gua-em-imagens/ Falo Compartilhar este post Link para o post Compartilhar em outros sites
click01 0 Denunciar post Postado Julho 3, 2009 Ae parceiro, Quanto a sua primeira dúvida, vou te passar a lógica: Você cria uma div com um id que passe um width de, por exemplo, 800px para englobar toda a exibição de produtos. Ae você coloca, quando exibir os produtos, uma div que delimite um width de 200px por produto e coloque um float:left em cada uma dessas divs. Depois joga um LIMIT 12 na query SQL. Mais ou menos isso. Não pude analisar seus códigos ainda pq estou ocupado agora... Já a segunda, dê uma olhada nesses links: http://codigofonte.uol.com.br/codigo/php/i...-marca-dagua%5D http://clares.wordpress.com/2008/07/17/mar...gua-em-imagens/ Falo ja avancei com o codigo no index.php <? session_start(); include('conexao.php'); ?> <html> <body> <center> <img src='BannerLoja.png' border='0'><br> <table cellpadding='5' cellspacing='1' width='800'> <tr> <td align='center'> <? // Faz o pedido à base de dados. $produtos = mysql_query('SELECT * FROM produtos ORDER BY RAND() LIMIT 12', $con); while($produto = mysql_fetch_assoc($produtos)){ echo '<div style="border: 0px width: 800px; float: center;">'; // Mostra a imagem e nome do produto. echo '<div width="200" style="border: 1px solid white; width: 195px; float: left;"><br><img width=120 height=90 border=0 src="Imagens/'.$produto['img'].'"><br><b>'.$produto['nome'].'</b><br>'; // Mostra o preço. echo '€ '.number_format($produto['preco'], 2, ',', '').'<br>'; // Mostra o link pra adicionar ao carrinho. echo '<a href="carrinho.php?produto='.$produto['id'].'"><img src="BotAdicionar.png" border="0"></a><br><br></div>'; } ?> </td> </tr> </table> <? echo '<hr size=1 width=800 color=green><a href="verProdutos.php"><img src="BotCarrinho.png" border="0"></a> <a href="finalizar.php"><img src="BotFinalizar.png" border="0"></a></div>'; ?> </body> </html> está a funcionar bem, porem assim so mostra os 12 produtos, n cria a paginaçao :unsure: Compartilhar este post Link para o post Compartilhar em outros sites
Red FeniX 4 Denunciar post Postado Julho 3, 2009 Amigo, A paginação você tem buscar no google. Existem vários sistemas de páginação por ae, inclusive aqui mesmo no fórum. Falo Compartilhar este post Link para o post Compartilhar em outros sites
click01 0 Denunciar post Postado Julho 3, 2009 tentei usar esta aqui... // Paginação dos Produtos <? $regsporpagina = 2; $ini = $pagina*$regsporpagina; $sql_logs = "select * from produtos"; $cont_rows = mysql_query($sql_logs, $con) or die(mysql_error()); $cont_total = mysql_num_rows($cont_rows); $sql_logs.=" limit $ini, $regsporpagina "; $res_logs = mysql_query($sql_logs, $con) or die(mysql_error()); $i = 0; $totalpaginas = ceil($cont_total / $regsporpagina); if ($totalpaginas < 1){$totalpaginas =1;} ?> <br> <tr> <td colspan="4" height="20" align="center"> <? //Montando o Rodapé de Navegação if ($_GET['pagina'] > 0){ $menos = $_GET['pagina'] - 1; echo "<a href='index.php?produtos=$produtos&acao=N&pagina=0&tab=7'>« Anteriores</a>"; }else{ echo "« Anterior"; } for($i = 0; $i < $totalpaginas; $i++){ $linksp = $i + 1; if ($_GET['pagina'] == $i){ echo " | <b>".$linksp."</b>"; }else{ echo " | <a href='index.php?produtos=$produtos&acao=N&pagina=$i&tab=7'>$linksp</a>"; }} if($_GET['pagina'] < ($totalpaginas - 1)){ $mais = $_GET['pagina'] + 1; echo " | <a href='index.php?produtos=$produtos&acao=N&pagina=$mais&tab=7'>Próximos »</a>"; }else{ echo " | Próximos »"; } ?> acontece que mostra os links td certo e tal, mas ao clicar n vai a lado algum... Compartilhar este post Link para o post Compartilhar em outros sites