Ir para conteúdo

POWERED BY:

Arquivado

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

Maxweell

[Resolvido] Inserir dados do Foreach

Recommended Posts

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

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

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

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

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

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

×

Informação importante

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