Maxweell 0 Denunciar post Postado Outubro 15, 2010 Ola a todos. Tenho um codigo de carrinho de compras que é com array e sessao. o codigo é esse: Ja altera, exclui, tudo funcionando. <body> <table> <caption>Carrinho de Compras</caption> <thead> <tr> <th width="244">Produto</th> <th width="79">Quantidade</th> <th width="89">Preço</th> <th width="100">SubTotal</th> <th width="64">Remover</th> </tr> </thead> <form action="?acao=up" method="post"> <tfoot> <tr> <td><input type="submit" value="Atualizar Carrinho" /></td> <tr> <td colspan="5"><a href="index2.php">Continuar Comprando</a></td> </tfoot> <tbody> <?php if(count($_SESSION['carrinho']) == 0){ echo '<tr><td colspan="5">Não há produto no carrinho</td></tr>'; }else{ require("config/conexao.php"); $total = 0; foreach($_SESSION['carrinho'] as $cod_produto => $qtd){ $sql = "SELECT * FROM produtos WHERE cod_produto= '$cod_produto'"; $qr = mysql_query($sql) or die(mysql_error()); $i = mysql_fetch_assoc($qr); $nome = $i['nome_produto']; $preco = number_format($i['valor_produto'], 2, ',', '.'); $sub = number_format($i['valor_produto'] * $qtd, 2, ',', '.'); $total += $i['valor_produto'] * $qtd; echo '<tr> <td>'.$nome.'</td> <td><input type="text" size="3" name="carrinho['.$cod_produto.']" value="'.$qtd.'" /></td> <td>R$ '.$preco.'</td> <td>R$ '.$sub.'</td> <td><a href="?acao=del&cod_produto='.$cod_produto.'">Remove</a></td> </tr>'; } $total = number_format($total, 2, ',', '.'); echo '<tr> <td colspan="4">Total</td> <td>R$ '.$total.'</td> </tr>'; //Para saber o total de produtos no carrinho (quantidade) $PegaDados = split(";", $qtd); $tgp = $PegaDados[0]; for($i = 0; $i < count($PegaDados[0]); $i++){ $contar = $tgp * $qtd; $soma = $soma + $contar; } } ?> </tbody> </form> Eu preciso gravar os dados no banco, andei dando uma pesquisada, encontrei alguma coisa mas está dando erro! <?php include "config/conexao.php"; session_start(); $id_sessao = session_id(); $cod_prudoto = $_POST['cod_produto']; $nome_produto = $_POST['nome_produto']; $quant_produto = $_POST['quant_produto']; $valor_produto = $_POST['valor_produto']; $subtotal = $_POST['subtotal']; $valor_total = $_POST['valor_total']; $i = 0; foreach ($cod_produto as $cod_produto) { ++$i; $sql = "INSERT INTO carrinho (cod_carrinho, cod_requisicao, cod_produto, quant_produto, valor_produto, subtotal, valor_total, id_sessao, data_cadastro) VALUES ('null','null','.$cod_produto[$i].','.$quant_produto[$i].','.$valor_produto[$i].','.$subtotal[$i].','.$valor_total[$i].','.$id_sessao.',now()"; $query = mysql_query($sql); } ?> Ta dando esse erro : Warning: Invalid argument supplied for foreach() on line 15 Alguem pode me dar uma força? Compartilhar este post Link para o post Compartilhar em outros sites
gremio10 14 Denunciar post Postado Outubro 15, 2010 pelo que eu sei de foreach , tu tah utilizando ele errado , por que nao tenta fazer com while , for o laço ? foreach eh mais para separar arrays.... Compartilhar este post Link para o post Compartilhar em outros sites
Maxweell 0 Denunciar post Postado Outubro 15, 2010 Voce diz na hora de inserir no banco? eu coloquei foreach, pq o que eu achei, estava com foreach... E estava funcionando... Compartilhar este post Link para o post Compartilhar em outros sites
gremio10 14 Denunciar post Postado Outubro 15, 2010 tenta com o while ou for , para usar o foreach , seria mais para tu separar e colocar os dados no insert Compartilhar este post Link para o post Compartilhar em outros sites
Maxweell 0 Denunciar post Postado Outubro 15, 2010 Pode me dar alguma ideia de como fazer? eu tenho que pegar os dados do foreach e gravar no banco, da pagina anterior e gravar linha por linha do foreach Compartilhar este post Link para o post Compartilhar em outros sites
gremio10 14 Denunciar post Postado Outubro 15, 2010 tipo : <?php for($i = 0; $i < $PegaDados(digamos) ; $i ++){ $sql = "INSERT INTO carrinho (cod_carrinho, cod_requisicao, cod_produto, quant_produto, valor_produto, subtotal, valor_total, id_sessao, data_cadastro) VALUES ('null','null','.$cod_produto[$i].','.$quant_produto[$i].','.$valor_produto[$i].','.$subtotal[$i].','.$valor_total[$i].','.$id_sessao.',now()"; $query = mysql_query($sql); } ?> Compartilhar este post Link para o post Compartilhar em outros sites
Maxweell 0 Denunciar post Postado Outubro 15, 2010 Tentei com for, mas nao deu sinal nenhum, eu nao tenho noçao de como fazer, nao sei se peguei o indice errado, no caso citado $PegaDados, nao sei se é. O que eu entendo é qe, foreach($_SESSION['carrinho'] as $cod_produto => $qtd){ $sql = "SELECT * FROM produtos WHERE cod_produto= '$cod_produto'"; $qr = mysql_query($sql) or die(mysql_error()); $i = mysql_fetch_assoc($qr); $nome = $i['nome_produto']; $preco = number_format($i['valor_produto'], 2, ',', '.'); $sub = number_format($i['valor_produto'] * $qtd, 2, ',', '.'); $total += $i['valor_produto'] * $qtd; echo '<tr> <td>'.$nome.'</td> <td><input type="text" size="3" name="carrinho['.$cod_produto.']" value="'.$qtd.'" /></td> <td>R$ '.$preco.'</td> <td>R$ '.$sub.'</td> <td><a href="?acao=del&cod_produto='.$cod_produto.'">Remove</a></td> </tr>'; Tenho que inserir no banco, as instruçoes que tem ae, isso seria 1 linha do carrinho... Compartilhar este post Link para o post Compartilhar em outros sites
Maxweell 0 Denunciar post Postado Outubro 18, 2010 Bom, tentei aqui de varias maneiras mas nao consegui.. tava pensando.. o codigo tem as funçoes "Alterar, Excluir e Adicionar"... //ADICIONAR CARRINHO if($_GET['acao'] == 'add'){ $cod_produto = intval($_GET['cod_produto']); if(!isset($_SESSION['carrinho'][$cod_produto])){ $_SESSION['carrinho'][$cod_produto] = 1; }else{ // $_SESSION['carrinho'][$cod_produto] += 1; } }Alguem tem ideia de como fazer nesse mesmo padrao para gravar? Acho que seria mais facil doque eu ja mostrei ae Compartilhar este post Link para o post Compartilhar em outros sites
Maxweell 0 Denunciar post Postado Outubro 19, 2010 Ae pessoal, como ninguem mandou uma luz, tentei aqui, até que consegui! nao tá 100%, falta algumas coisas...mas pra quem nao tinha nada, ta bo né Bom, eu fui na mesma ideia dos codigos de alterar, inserir, excluir... //gravar if($_GET['acao'] == 'gravar'){ if(isset($_SESSION['carrinho'][$cod_produto])){ $nome = $i['nome_produto']; $cod_produto = intval($_GET['cod_produto']); foreach($_SESSION['carrinho'] as $cod_produto => $qtd){ $sql = "SELECT * FROM produtos WHERE cod_produto= '$cod_produto'"; $qr = mysql_query($sql) or die(mysql_error()); $i = mysql_fetch_assoc($qr); $sub = number_format($i['valor_produto'] * $qtd, 2, ',', '.'); $preco = number_format($i['valor_produto'], 2, ',', '.'); $grava = "INSERT INTO carrinho (cod_carrinho,cod_requisicao,cod_produto,quant_produto,valor_produto,subtotal,valor_total,id_sessao,data_cadastro) VALUES (NULL, NULL, '$cod_produto', '$qtd', '$preco','$sub', '$id_sessao',now())"; $gravar = mysql_query($grava); } } else { // Se o carrinho estiver vazio e se tentarem gravar echo "<script type \"text/javascript\"> alert(\"Impossível gerar sua requisição! Não há produtos no carrinho!\"); </script>"; } //Apos gravar no banco, "zera" o carrinho $_SESSION['carrinho'] = array(); }É isso. Compartilhar este post Link para o post Compartilhar em outros sites