Clayton Postado Janeiro 16, 2016 Denunciar Share Postado Janeiro 16, 2016 Caros amigos gostaria da ajuda de vocês pois estou com muita dificuldade para fazer meu carrinho de compras exibir o preço e calcular o total automaticamente, gostaria de ajuda para poder resolver este problema. abaixo o código do carrinho: <?php session_start(); if(!isset($_SESSION['shop'])){ $_SESSION['shop'] = array(); } //adiciona produto if(isset($_GET['acao'])){ if($_GET['acao'] == 'add'){ $id = intval($_GET['id']); if(!isset($_SESSION['shop'][$id])){ $_SESSION['shop'][$id] = 1; } } //REMOVER shop if($_GET['acao'] == 'del'){ $id = intval($_GET['id']); if(isset($_SESSION['shop'][$id])){ unset($_SESSION['shop'][$id]); } } //ALTERAR QUANTIDADE //Se existir $_POST['prod'] então começa.. if( isset( $_POST['prod'] ) ) if($_GET['acao'] == 'atualizar'){ if(is_array($_POST['prod'])){ foreach($_POST['prod'] as $id => $qtd){ $id = intval($id); $qtd = intval($qtd); if(!empty($qtd) || $qtd <> 0){ $_SESSION['shop'][$id] = $qtd; }else{ unset($_SESSION['shop'][$id]); } } } } } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlinhas="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-utf8" /> <title>Seja Bem Vindo !</title> </head> <link rel="stylesheet" type="text/css" href="css/default.css" /> <body> <head> <div align = "center"><h2>Suas Compras Efetuadas:</h2> <br> <form action="shop.php?acao=up" method="post"> <table border="1" color = width="100%"> <tr> <td width="10%"><strong>FOTO</strong></td> <td width="10%"><strong>NOME</strong></td> <td width="10%"><strong>DESCRIÇÃO</strong></td> <td width="10%"><strong>TAMANHO</strong></td> <td width="10%"><strong>COR</strong></td> <td width="10%"><strong>PREÇO</strong></td> <td width="10%"><strong>QTD.</strong></td> <td width="10%"><strong>SUBTOTAL</strong></td> <td width="10%"><strong>REMOVER</strong></td> </tr> </thead> </br> <form action="?acao=atualizar" method="post"> <tfoot> <tr> <td colspan="9"><input type="submit" value="Atualizar" /></td> <tr> <td colspan="9"><a href="./index.php">Continuar Comprando</a></td> <tr> <tr> <td colspan="9"><a href="./admin/finalizar.php">Finalizar Pedido</a></td> </tfoot> <tbody> <?php $total = 0; if(count($_SESSION['shop']) == 0){ echo '<tr><td colspan="9"><div class = "#" align ="center">O cesto de compras esta vazio ! </td></tr>'; }else{ foreach($_SESSION['shop'] as $id => $qtd){ $conn = new PDO("mysql:host=localhost;dbname=loja", "root", ""); $cart = $conn->prepare("SELECT * FROM `produtos` WHERE `id` = '$id' "); $cart->execute(array()); $cart->setFetchMode(PDO::FETCH_ASSOC); $cart->execute(); while($linha = $cart->fetch()) { $foto = $linha['foto']; $nome = $linha['nome']; $descricao = $linha['descricao']; $tamanho = $linha['tamanho']; $cor = $linha['cor']; $preço = number_format((float)$linha['preço'] * $qtd, 2, ',', '.'); $sub = number_format((float)$linha['preço'] * $qtd, 2, ',', '.'); $total += $linha['preço'] * $qtd; // $total = number_format($total, 2, ',', '.'); echo '<tr>'; echo '<td><img src = "'.$foto.' " width = "100px"</td>'; echo '<td>'.$nome.'</td>'; echo '<td>'.$descricao.'</td>'; echo '<td>'.$tamanho.'</td>'; echo '<td>'.$cor.'</td>'; echo '<td>R$ '.$preço.'</td>'; echo '<td><input type="text" size="3" name="prod['.$id.']" value="'.$qtd.'" /></td>'; echo '<td>R$ '.$sub.'</td>'; echo '<td colspan = "9"><a href="?acao=del&id='.$id.'"><img src="./imagens/remover.png" width="70" height="70" ></td>'; echo '</tr>'; } echo '<tr>'; } } ?> Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 lowys Postado Janeiro 16, 2016 Denunciar Share Postado Janeiro 16, 2016 Olá! Não encontrei onde você exibe a variável $total. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Clayton Postado Janeiro 18, 2016 Autor Denunciar Share Postado Janeiro 18, 2016 $total = 0; if (count($_SESSION['shop']) == 0) { echo '<tr><td colspan="9"><div class="#">O cesto de compras esta vazio!</td></tr>'; } else { Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 lowys Postado Janeiro 18, 2016 Denunciar Share Postado Janeiro 18, 2016 Oi Clayton! Aparentemente, a variável $total vai somando os preços dos produtos... Mas no trecho de código, não pude perceber onde é exibido o valor da variável $total. Se você tentar algo do tipo: echo $total; Depois do final do while, Que valor aparece na tela??? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Clayton Postado Janeiro 26, 2016 Autor Denunciar Share Postado Janeiro 26, 2016 Este é o carrinho: <?php include(dirname(__FILE__) . './funcao/conecta.php'); //include(dirname(__FILE__) . './classes/shop.class.php'); session_start(); if(!isset($_SESSION['shop'])){ $_SESSION['shop'] = array(); } //adiciona produto if(isset($_GET['acao'])){ if($_GET['acao'] == 'add'){ $id = intval($_GET['id']); if(!isset($_SESSION['shop'][$id])){ $_SESSION['shop'][$id] = 1; } } //subtrari produto do cesto if($_GET['acao'] == 'sub'){ $id = intval($_GET['id']); if(!isset($_SESSION['shop'][$id])){ $_SESSION['shop'][$id] = 1; }else{ $_SESSION['shop'][$id] -= 1; }if ($_SESSION['shop'][$id] == 0 ) { unset ($_SESSION['shop'][$id]) ; } } //remove produto do cesto if($_GET['acao'] == 'del'){ $id = intval($_GET['id']); if(isset($_SESSION['shop'][$id])){ unset($_SESSION['shop'][$id]); } } //ALTERAR QUANTIDADE //Se existir $_POST['prod'] então começa.. if (isset($_POST['prod'])) if($_GET['acao'] == 'up'){ if(is_array($_POST['prod'])){ foreach($_POST['prod'] as $id => $qtd){ $id = intval($id); $qtd = intval($qtd); if(!empty($qtd) || $qtd <> 0){ $_SESSION['shop'][$id] = $qtd; }else{ unset($_SESSION['shop'][$id]); } } } } } aki as variáveis: $foto = $linha['foto']; $nome = $linha['nome']; $descricao = $linha['descricao']; $tamanho = $linha['tamanho']; $cor = $linha['cor']; $preço = $linha['preço']; $linha['preço'] = str_replace(",",".",$linha['preço']); $sub = str_replace(",",".",$linha['preço']) * $qtd ; $total += $preço; aki os inputs: echo '<td><strong><font size="4" color="yellow">R$ '.$preço.'</td>'; echo' <td><input type="text" size ="3" name="prod['.$id.']" value="'.$qtd.'" /></td>'; echo '<td><strong><font size="4" color="yellow">R$ '.$sub.'</td>'; Está aparecendo assim: Como posso fazer para alterar no meu carrinho a quantidade e atualizar o subtotal automaticamente em ajax , não conheço ajax , gostaria que alguém pudesse me mostrar como fazer,pois como na imagem quando adiciono 1 produto ele mostra o preço e a quantidade certa, mas se adiciono mais um ele não calcula. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Clayton
Caros amigos gostaria da ajuda de vocês pois estou com muita dificuldade para fazer meu carrinho de compras exibir o preço e calcular o total automaticamente, gostaria de ajuda
para poder resolver este problema. abaixo o código do carrinho:
<?php
session_start();
if(!isset($_SESSION['shop'])){
$_SESSION['shop'] = array();
}
//adiciona produto
if(isset($_GET['acao'])){
if($_GET['acao'] == 'add'){
$id = intval($_GET['id']);
if(!isset($_SESSION['shop'][$id])){
$_SESSION['shop'][$id] = 1;
}
}
//REMOVER shop
if($_GET['acao'] == 'del'){
$id = intval($_GET['id']);
if(isset($_SESSION['shop'][$id])){
unset($_SESSION['shop'][$id]);
}
}
//ALTERAR QUANTIDADE
//Se existir $_POST['prod'] então começa..
if( isset( $_POST['prod'] ) )
if($_GET['acao'] == 'atualizar'){
if(is_array($_POST['prod'])){
foreach($_POST['prod'] as $id => $qtd){
$id = intval($id);
$qtd = intval($qtd);
if(!empty($qtd) || $qtd <> 0){
$_SESSION['shop'][$id] = $qtd;
}else{
unset($_SESSION['shop'][$id]);
}
}
}
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlinhas="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-utf8" />
<title>Seja Bem Vindo !</title>
</head>
<link rel="stylesheet" type="text/css" href="css/default.css" />
<body>
<head>
<div align = "center"><h2>Suas Compras Efetuadas:</h2>
<br>
<form action="shop.php?acao=up" method="post">
<table border="1" color = width="100%">
<tr>
<td width="10%"><strong>FOTO</strong></td>
<td width="10%"><strong>NOME</strong></td>
<td width="10%"><strong>DESCRIÇÃO</strong></td>
<td width="10%"><strong>TAMANHO</strong></td>
<td width="10%"><strong>COR</strong></td>
<td width="10%"><strong>PREÇO</strong></td>
<td width="10%"><strong>QTD.</strong></td>
<td width="10%"><strong>SUBTOTAL</strong></td>
<td width="10%"><strong>REMOVER</strong></td>
</tr>
</thead>
</br>
<form action="?acao=atualizar" method="post">
<tfoot>
<tr>
<td colspan="9"><input type="submit" value="Atualizar" /></td>
<tr>
<td colspan="9"><a href="./index.php">Continuar Comprando</a></td>
<tr>
<tr>
<td colspan="9"><a href="./admin/finalizar.php">Finalizar Pedido</a></td>
</tfoot>
<tbody>
<?php
$total = 0;
if(count($_SESSION['shop']) == 0){
echo '<tr><td colspan="9"><div class = "#" align ="center">O cesto de compras esta vazio ! </td></tr>';
}else{
foreach($_SESSION['shop'] as $id => $qtd){
$conn = new PDO("mysql:host=localhost;dbname=loja", "root", "");
$cart = $conn->prepare("SELECT * FROM `produtos` WHERE `id` = '$id' ");
$cart->execute(array());
$cart->setFetchMode(PDO::FETCH_ASSOC);
$cart->execute();
while($linha = $cart->fetch()) {
$foto = $linha['foto'];
$nome = $linha['nome'];
$descricao = $linha['descricao'];
$tamanho = $linha['tamanho'];
$cor = $linha['cor'];
$preço = number_format((float)$linha['preço'] * $qtd, 2, ',', '.');
$sub = number_format((float)$linha['preço'] * $qtd, 2, ',', '.');
$total += $linha['preço'] * $qtd;
// $total = number_format($total, 2, ',', '.');
echo '<tr>';
echo '<td><img src = "'.$foto.' " width = "100px"</td>';
echo '<td>'.$nome.'</td>';
echo '<td>'.$descricao.'</td>';
echo '<td>'.$tamanho.'</td>';
echo '<td>'.$cor.'</td>';
echo '<td>R$ '.$preço.'</td>';
echo '<td><input type="text" size="3" name="prod['.$id.']" value="'.$qtd.'" /></td>';
echo '<td>R$ '.$sub.'</td>';
echo '<td colspan = "9"><a href="?acao=del&id='.$id.'"><img src="./imagens/remover.png" width="70" height="70" ></td>';
echo '</tr>';
}
echo '<tr>';
}
}
?>
Link para o comentário
Compartilhar em outros sites
4 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.