Ir para conteúdo

POWERED BY:

Arquivado

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

666999

[Resolvido] catar os produtos da session e gravar em um bd mysql

Recommended Posts

Ola pessoal estou quase finalizando meu projeto

 

e estou com uma duvida cruel :huh:

 

tipo tenho um carrinho com session

==============================================

<?php
      session_start();

      if(!isset($_SESSION['carrinho'])){
         $_SESSION['carrinho'] = array();
      }

      //adiciona produto

      if(isset($_GET['acao'])){
         //ADICIONAR CARRINHO
         if($_GET['acao'] == 'add'){
            $id = intval($_GET['id']);
            if(!isset($_SESSION['carrinho'][$id])){
               $_SESSION['carrinho'][$id] = 1;
            }else{
            }
         }

         //REMOVER CARRINHO
         if($_GET['acao'] == 'del'){
            $id = intval($_GET['id']);
            if(isset($_SESSION['carrinho'][$id])){
               unset($_SESSION['carrinho'][$id]);
            }
         }

         //ALTERAR QUANTIDADE
         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['carrinho'][$id] = $qtd;
                  }else{
                     unset($_SESSION['carrinho'][$id]);

                  }
               }
            }
         }

      }


?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<table>
    <caption>Carrinho de Compra</caption>
    <thead>
          <tr>
            <th width="144">Produto</th>
            <th width="79">Quantidade</th>
            <th width="64">Remover</th>
          </tr>
    </thead>
            <form action="?acao=up" method="post">
    <tfoot>
           <tr>
            <td colspan="5"><input name='Voltar' type='button' class="botao" onclick='javascript:history.back();self.location.reload();' value='Voltar' > <INPUT type="button" value="Finalizar Pedido" onClick="window.open('finalizar.php')">  <input type="submit" value="Atualizar Carrinho" />
            </td>
            <tr>
            <td colspan="5"></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/config.php");
                                                               $total = 0;
                        foreach($_SESSION['carrinho'] as $id => $qtd){
                              $sql   = "SELECT *  FROM produtos WHERE id= '$id'";
                              $qr    = mysql_query($sql) or die(mysql_error());
                              $ln    = mysql_fetch_assoc($qr);

                              $nome  = $ln['nome'];

                           echo '<tr>
                                 <td>'.$nome.'</td>
                                 <td><input type="text" size="3" name="prod['.$id.']" value="'.$qtd.'" /></td>
                                 <td><a href="?acao=del&id='.$id.'">Remove</a></td>
                              </tr>';
                        }
                           $total = number_format($total, 2, ',', '.');
                           echo '<tr>

                              </tr>';

           }
            ?>

     </tbody>
        </form>
</table>

</body>
</html>
==========================================

 

como eu faço para puchar a session carrinho

em uma outra pagina e gravar os itens do carrinho em um bd mysql ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Da mesma forma que você fez aqui, mas agora use insert

foreach($_SESSION['carrinho'] as $id => $qtd){
   $sql   = "SELECT *  FROM produtos WHERE id= '$id'";
   $qr    = mysql_query($sql) or die(mysql_error());

e só percorrer o o array da session

exemplo:

 

//percorre array SESSION do carrinho

      foreach($_SESSION['carrinho'] as $id => $qtd){

        //sql inserir item_pedido

         $sqlItemPedido  = "INSERT item_pedido (id_pedido, id_produto, quantidade) VALUES ('$ultimo_id_inserido', '$id', '$qtd')";

         //executa o SQL

         $qrItemPedido   = mysql_query($sqlItemPedido);
      }

Espero que te ajude!

Compartilhar este post


Link para o post
Compartilhar em outros sites

tipo consegui algo

 

olha a maneira que fiz

 

<?php
     include "config.php";
           session_start();
          foreach($_SESSION['carrinho'] as $id => $qtd){
          $sql   = "SELECT *    FROM produtos WHERE id= '$id'";



           $sqlItemPedido  = "INSERT cliente_produto_quantidade (idproduto,qtd) VALUES ( '$id','$qtd')";

         //executa o SQL

         $qrItemPedido   = mysql_query($sqlItemPedido);

}

?>

 

esta minha tabela mysql

CREATE TABLE IF NOT EXISTS `cliente_produto_quantidade` (
  `idproduto` int(11) NOT NULL,
  `qtd` int(11) NOT NULL,
  `nomeproduto` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

mais tipo cada id e produto ele cria uma tabela enorme

olha

1 pedido com 3 produto no carrinho

INSERT INTO `cliente_produto_quantidade` (`idproduto`, `qtd`, `nomeproduto`) VALUES
(44, 1, produto1),
(46, 1, produto2),
(59, 1, produto3);

postei uma foto para entender ...

Imagem Postada

 

 

tem como fazer esses ids e quantidade ficar tudo em uma tabela

algo como

exemplo

idproduto qtd nomeproduto

44,46,59 1,1,1 produto1,produto2,produto3

 

dessa forma ou alguma forma melhor de gravar no bd :huh:

Compartilhar este post


Link para o post
Compartilhar em outros sites

666999,

 

Algumas considerações sobre seu projeto:

Creio que você terá varios clientes e varios carrinhos, assim como varias compras, ok? Uma boa maneira de guardar os dados do carrinho no banco de dados é identificando o cliente, os produtos e a quantidade. Vejamos, são varios carrinhos; para cada carrinho há um cliente (uma sessão) e n produtos.

 

PEDIDO

ID

CLIENTE

SESSAOID

STATUS

 

ITEM PEDIDO

ID

PRODUTO

QUANTIDADE

 

É redundancia registrar o nome do produto, tanto na sessão como na tabela cliente_produto_quantidade. Esta informação está disponível na tabela de produto. O nome cliente_produto_quantidade não é um bom nome. Poderia ser apenas cliente_produto, mas ainda assim não seria bom o suficiente. Para o seu projeto, como está, carrinho_produto ou pedido_produto estaria mais de acordo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

666999,

 

Algumas considerações sobre seu projeto:

Creio que você terá varios clientes e varios carrinhos, assim como varias compras, ok? Uma boa maneira de guardar os dados do carrinho no banco de dados é identificando o cliente, os produtos e a quantidade. Vejamos, são varios carrinhos; para cada carrinho há um cliente (uma sessão) e n produtos.

 

PEDIDO

ID

CLIENTE

SESSAOID

STATUS

 

ITEM PEDIDO

ID

PRODUTO

QUANTIDADE

 

É redundancia registrar o nome do produto, tanto na sessão como na tabela cliente_produto_quantidade. Esta informação está disponível na tabela de produto. O nome cliente_produto_quantidade não é um bom nome. Poderia ser apenas cliente_produto, mas ainda assim não seria bom o suficiente. Para o seu projeto, como está, carrinho_produto ou pedido_produto estaria mais de acordo.

 

 

vou ter de fazer algumas alteração http://forum.imasters.com.br/public/style_emoticons/default/ermm.gif

o nome cliente_produto_quantidade

era um teste

 

o nome vai ser carrinho

 

e sobre o idproduto

vou mudar

 

quero tambem colocar uma tabela que grava a hora que o cliente fez pedido

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.