nadoweb 0 Denunciar post Postado Fevereiro 2, 2008 Boa noite Galera acabei de terminar um vídeo tutorial muito bom que está em http://www.videotutoriais.net/videos/carri...ho_compras.html sobre como construir um carrinho de compra em PHP e MySQL. Achei muito bom mesmo. No exemplo o autor colocou o código que altera a quantidade do produto só que aqui em meu servidor local e na internet também não rodou. O carrinho qu eu fiz está inserindo e deletando só falta mesmo é alterar a quantidade dos produtos. Vou disponibilizar tudo e peço a vocês que me ajudem a resolver este problema. Estrutura do Banco de Dados: -- Estrutura da tabela `carrinho` -- CREATE TABLE `carrinho` ( `id_produto` int(11) NOT NULL default '0', `nome_produto` varchar(200) NOT NULL default '', `preco_produto` double(10,2) NOT NULL default '0.00', `qtd_produto` int(11) NOT NULL default '0', `sessao` text NOT NULL ) TYPE=MyISAM; -- -------------------------------------------------------- -- -- Estrutura da tabela `produtos` -- CREATE TABLE `produtos` ( `id_produto` int(11) NOT NULL auto_increment, `nome_produto` varchar(200) NOT NULL default '', `preco_produto` double(10,2) NOT NULL default '0.00', PRIMARY KEY (`id_produto`) ) TYPE=MyISAM AUTO_INCREMENT=5 ; -- -- Extraindo dados da tabela `produtos` -- INSERT INTO `produtos` VALUES (1, 'Memória Ram 256 MB', 62.00); INSERT INTO `produtos` VALUES (2, 'Placa de Vídeo XYZ', 150.00); INSERT INTO `produtos` VALUES (3, 'Notebook Duo', 2300.00); INSERT INTO `produtos` VALUES (4, 'Mouse Top', 57.00); ##################################################### página produtos.php <?php include "config.php"; conexao(); ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Lista de Produtos</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head> <body> <h1>Veja nossos produtos</h1> <table border="1" width="100%"> <tr> <td width="25%"><strong>ID</strong></td> <td width="25%"><strong>PRODUTO</strong></td> <td width="25%"><strong>PREÇO</strong></td> <td width="25%"></td> </tr> <?php $sql_lista = "SELECT * FROM produtos ORDER BY nome_produto ASC"; $exe_lista = mysql_query($sql_lista, $base) or die (mysql_error()); $num_lista = mysql_num_rows($exe_lista); if ($num_lista > 0){ while ($reg_lista = mysql_fetch_array($exe_lista, MYSQL_ASSOC)){ ?> <tr> <td width="25%"><?=$reg_lista['id_produto']?></td> <td width="25%"><?=$reg_lista['nome_produto']?></td> <td width="25%"><?=number_format($reg_lista['preco_produto'],2,",",".")?></td> <td width="25%"><a href="cart.php?acao=add&id=<?=$reg_lista['id_produto']?>">adicionar ao carrinho</a></td> </tr> <?php } } ?> </table> </body> </html> ################################################### página cart.php <?php session_start(); include "config.php"; conexao(); if (isset($_GET['acao'])){ if ($_GET['acao'] == "add"){ if (isset($_GET['id'])){ if (is_numeric($_GET['id'])){ $id_prod = addslashes(htmlentities($_GET['id'])); $sql_cont = "SELECT COUNT(*) AS n_prod FROM carrinho WHERE id_produto = '$id_prod' AND sessao = '".session_id()."'"; $exe_cont = mysql_query($sql_cont, $base) or die (mysql_error()); $reg_cont = mysql_fetch_array($exe_cont, MYSQL_ASSOC); if ($reg_cont['n_prod'] == 0){ $sql_prod = "SELECT * FROM produtos WHERE id_produto = '$id_prod'"; $exe_prod = mysql_query($sql_prod, $base) or die (mysql_error()); $num_prod = mysql_num_rows($exe_prod); if ($num_prod > 0){ $reg_prod = mysql_fetch_array($exe_prod, MYSQL_ASSOC); $sql_add = "INSERT INTO carrinho (id_produto, nome_produto, preco_produto, qtd_produto, sessao) VALUES ('".$reg_prod['id_produto']."', '".$reg_prod['nome_produto']."', '".$reg_prod['preco_produto']."', 1, '".session_id()."')"; $exe_add = mysql_query($sql_add, $base) or die (mysql_error()); } } } } } if ($_GET['acao'] == "del"){ if (isset($_GET['id'])){ if (is_numeric($_GET['id'])){ $id_prod = addslashes(htmlentities($_GET['id'])); $sql_del = "DELETE FROM carrinho WHERE id_produto = '$id_prod' AND sessao = '".session_id()."'"; $exe_del = mysql_query($sql_del, $base) or die (mysql_error()); } } } if ($_GET['acao'] == "altera_qtd"){ if (isset($_POST['qtd'])){ if (is_array($_POST['qtd'])){ foreach ($_POST['qtd'] as $id_produto => $qtd){ if (is_numeric($id_produto) && is_numeric($qtd)){ $sql_alt = "UPDATE carrinho SET qtd_produto = '$qtd' WHERE id_produto = '$id_produto' AND sessao = '".session_id()."' "; $exe_alt = mysql_query($sql_alt, $base) or die (mysql_error()); } } } } } } ?> <html> <head> <title>Carrinho de Compras</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head> <body> <h1>Carrinho de Compras</h1> <form action="cart.php?acao=altera_qtd" method="post"> <table border="1" width="100%"> <tr> <td width="10%"><strong>ID</strong></td> <td width="30%"><strong>PRODUTO</strong></td> <td width="15%"><strong>REMOVER</strong></td> <td width="15%"><strong>PREÇO</strong></td> <td width="15%"><strong>QTD.</strong></td> <td width="15%"><strong>SUBTOTAL</strong></td> </tr> <?php $sql_lista = "SELECT * FROM carrinho WHERE sessao = '".session_id()."' ORDER BY nome_produto ASC"; $exe_lista = mysql_query($sql_lista, $base) or die (mysql_error()); $num_lista = mysql_num_rows($exe_lista); if ($num_lista > 0){ $total_carrinho = 0; while ($reg_lista = mysql_fetch_array($exe_lista, MYSQL_ASSOC)){ $total_carrinho += ($reg_lista['preco_produto']*$reg_lista['qtd_produto']); ?> <tr> <td width="10%"><?=$reg_lista['id_produto']?></td> <td width="30%"><?=$reg_lista['nome_produto']?></td> <td width="15%"><a href="cart.php?acao=del&id=<?=$reg_lista['id_produto']?>">X</a></td> <td width="15%"><?=number_format($reg_lista['preco_produto'],2,",",".")?></td> <td width="15%"><input type="text" size="3" name="qtd['<?=$reg_lista['id_produto']?>']" value="<?=$reg_lista['qtd_produto']?>" /></td> <td width="15%"><?=number_format($reg_lista['preco_produto']*$reg_lista['qtd_produto'],2,",",".")?></td> </tr> <?php } } ?> <tr> <td colspan="5" width="85%" align="right">Total </td> <td width="15%"><?=number_format($total_carrinho, 2,",",".")?></td> </tr> </table> <input type="submit" value="Alterar quantidade" /> </form> <a href="produtos.php">Continuar comprando</a> </body> </html> ############################################# É isso ai galera agora é com vocês espero contar com ajuda de todos. Afinal esse carrinho vai servir para muita gente. Obrigado. Compartilhar este post Link para o post Compartilhar em outros sites
Jackson Kriiger 0 Denunciar post Postado Abril 3, 2008 Revisando o carrinho... descobri o que tá errado em seu script na linha: <td width="15%"><input type="text" size="3" name="qtd['<?=$reg_lista['id_produto]?>']" value="<?=$reg_lista['qtd_produto']?>" /></td> // onde registra o número de ítens retire as aspas simpes (duplicadas), conforme modelo abaixo: <td width="15%"><input type="text" size="3" name="qtd[<?=$reg_lista['id_produto']?>]" value="<?=$reg_lista['qtd_produto']?>" /></td> Compartilhar este post Link para o post Compartilhar em outros sites