Ir para conteúdo

Arquivado

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

nadoweb

Carrinho de compra funcional

Recommended Posts

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

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

×

Informação importante

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