Jump to content
Aureo Almeida

Colocar itens de um carrinho de compras numa tabela do BD

Recommended Posts

Eu possuo um carrinho de compras que me mostra os itens selecionados pelo cliente dentro de um foreach, conforme código abaixo:

     <?php foreach($resultsCarts as $result) : ?>
        <tr>
         <td><?php echo $result['name']?></td>
         <td><input type="text" name="prod[<?php echo $result['id']?>]" value="<?php echo $result['quantity']?>" size="1" max="<?php echo $result['estoque']?>" min="1"/></td>
          <td>R$<?php echo number_format($result['price'], 2, ',', '.')?></td>
          <td>R$<?php echo number_format($result['subtotal'], 2, ',', '.')?></td>
         </tr>
            <?php endforeach;?>

Eu gostaria de inserir todos os itens retornados dentro de uma tabela chamada itens_pedido, vinculando todos eles ao último pedido feito.

O código que insere os dados do último pedido e que me retorna o identificador dela é o que segue abaixo, e funciona:

$sql = "INSERT INTO psd_pedidos (pedido_id, pedido_data, pedido_data_hora, pedido_valor, pedido_status) values('','".date('Y-m-d')."','".date('Y-m-d H:i:s')."', '".$ttpagseguro."','finalizado')";
        $stmt = $conn->prepare($sql);
        $stmt->execute();
        $ultpedido = $conn->lastInsertId();

O problema que não estou conseguindo resolver é: como pegar a informação que e é retornada pela variável $ultpedido, que é o identificador do último pedido feito, e todos os itens do carrinho de compras e inseri-los na tabela psd_itens, vinculados a este último pedido. O campo que armazena o último pedido na tabela psd_itens é uma chave estrangeira da tabela psd_pedidos e tem o nome de pedido_id.

Eu desenvolvi o seguinte código, que me parece não ter problemas, mas não estou sabendo usa-lo:

//VARIAVEIS COM VALORES QUE RETORNAM NO FOREACH
    $nmproduto = $result['name'];
    $vlproduto = $result['price'];
    $qtproduto = $result['quantity'];
    $sbtproduto = $result['subtotal'];

$sql = "INSERT INTO psd_itens(itens_id, pedido_id, itens_produto, itens_quantidade, itens_valor_produto, itens_total ) values(
'',
'".$ultpedido."',
'".$nmproduto."',
'".$vlproduto."',
'".$qtproduto."',
'".$sbtproduto."')
";
   $stmt = $conn->prepare($sql);
   $stmt->execute();

Sei que ele deve estar dentro do foreach mas todas as minhas tentativas com soluções de outras experiências retornaram erros. Alguém sabe como eu resolvo estes problemas?

Share this post


Link to post
Share on other sites

Consegui o que queria com este script:

 

foreach ($resultsCarts as $result){

    $sql1 = "INSERT INTO psd_itens(itens_id, pedido_id, itens_produto, itens_quantidade, itens_valor_produto, itens_total )
    values(
    '',
    '".$ultpedido."',
    '".$result['name']."',
    '".$result['quantity']."',
    '".$result['price']."',
    '".$result['subtotal']."'
    )";
    $stmt1 = $conn->prepare($sql1);
    $stmt1->execute();
        }

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By eiwes
      Fiz uma iteração foreach para gerar categorias e subcategorias, pois não queria fazer DOIS SELECTS, ficando assim:
       
      //----> Foreach para gerar a categoria, pois são vários items com as mesmas chaves, portanto agrupo foreach($exibeLista as $row){ $dlD[$row["nameD"]][] = [ "nameD"=>$row["nameD"], "idD"=>$row["idD"], "qtdR"=>$row["qtdR"], "qtdF"=>$row["qtdF"] ]; } //----> Foreach para gerar subcategorias foreach($exibeLista as $row){ $dLA[$row["nameP"]][] = [ "nameD"=>$row["nameD"], "idD"=>$row["idD"], "idAss"=>$row["idAss"], "idT"=>$row["idT"], "nameP"=>$row["nameP"], "qtdR"=>$row["qtdR"], "qtdF"=>$row["qtdF"] ]; } $fsHTML = []; $rateD = 0; $qtdAss = 0; if(is_array($dlD) || is_object($dlD)){ foreach ($dlD as $key => $ds) { if ($key <> '' && $key <> NULL) { $rateD += (($ds[0]["qtdR"]*100)/$ds[0]["qtdF"]); $qtdAss += count($dlD[$key]); //----> Array para inserir HTML da Categoria criada e criar accordion $fsHTML[] = ' <div class="col-md-12 col-sm-12 col-xs-12"> <div class="x_panel overflow_hidden padding-into-row-qsts bg-white-row filtro-on"> <span class="rateD">'.ceil($rateD/$qtdAss).'%</span> <span class="opcao-into-top">'.$ds[0]["idD"].' - '.$ds[0]["nameD"].' <a class="collapse-link open-filter-qsts border-radius8"><i class="fa fa-chevron-up"></i></a></span> <div class="x_content" style="display:none;padding-top:10px"> <div class="accordion" id="accordion" role="tablist" aria-multiselectable="true"> '; //----> Verificar se a subcategoria contém a categoria, se contém é incluída na array foreach ($dLA as $keys => $ass) { if($ass[0]["idD"] == $ds[0]["idD"] ){ if($ass[0]['idT'] <> 0){ $link = 't='.$ass[0]['idT']; }else{ $link = 'a='.$ass[0]['idAss'];} $fsHTML[] = ' <div class="panel"> <a class="panel-heading collapsed" href="/v/fs/st?mz=y&type=c&'.$link.'"> <span class="eficiencia-accordion">'.ceil(($ass[0]['qtdR']*100)/$ass[0]['qtdF']).'%</span> <h4 class="panel-title">'.$ass[0]['nameP'].'</h4> <span class="unicamente">'.$ass[0]['qtdR'].' respondido de '.$ass[0]['qtdF'].'</span> </a> </div> '; }//if ass }//foreach ass }//if ds //----> Aqui é aonde ocorre o ERRO! Era pra fazer o fechamento do Accordion e gerar uma nova DIV. //No índice [0] isso ocorre normalmente, porém no [1] ela agrupa todos os accordions. (abaixo farei a amostra) $fsHTML[] = '</div></div></div></div>'; }//foreach ds }//if verifica se é array e se é objeto return implode('', array_unique($fsHTML)); O correto seria assim:
       
      - Categoria
        - Subcategoria
        - Subcategoria
       
      - Categoria
       - Subcategoria
       - Subcategoria
       
       
      Como está acontecendo:
       
      - Categoria
        - Subcategoria
        - Subcategoria
       
      - Categoria
        - Subcategoria
        - Subcategoria
          - Categoria
            - Subcategoria
            - Subcategoria
              - Categoria
                - Subcategoria
                - Subcategoria
                  - Categoria
                    - Subcategoria
                    - Subcategoria
       
       
      Não consigo entender de jeito nenhum pq o primeiro fecha corretamente e a partir do segundo não.
      Alguém me ajuda?
       
       
    • By ViniciusRamoa
      Olá, eu possuo o código:
       
      @foreach ($manga['chapters'] as $chapter) <div class="manga-chapter" > <h6 class="events-subtitle" style="left: -165px; top: 30px; position: relative;"> {{ link_to_route('front.manga.reader', "≫"." ".$chapter['chapter_name'], [$manga['manga_slug'], $chapter['chapter_slug']]) }} </h6> </div> @endforeach Mas ele acaba exibindo muitos itens, eu gostaria de limitar para apenas 5 itens, e que esses 5 itens, o menor fosse "apagado" e aparecesse o mais recente, exemplo:

      Atualmente:
      Item 5
      Item 4
      Item 3
      Item 2
      Item 1

      Quando um novo item for publicado, ficaria:
       
      Item 6
      Item 5
      Item 4
      Item 3
      Item 2

      Agradeço a ajuda, se puder pelo menos indicar um caminho, já ajuda muito, estou perdido aqui
       
    • By helkton
      oi galera, seguinte preciso salvar os dados de um carrinho no banco de dados
      olha só como fiz a gambiarra, me ajudem a consertar rsss
      array_map ( function ($id,$qdade,$valor) { echo 'idProd '.$id; echo ' qdadeProd '.$qdade; echo ' valorProd '.$valor; echo '<br>'; },$idProduto, $qdadeProduto, $valorProduto); já tenho os dados gravados no banco em um carrinho temporario agora depois que o cliente finalizar o pagamento eu quero jogar esses dados na tabela pedidos
      a saida esta pegando esses devidos valores $id - $qdade e $valor certinho mais não consigo jogar no banco de dados
    • By granderodeo
      No meu código $this->details() me retorna todos os detalhes dos produtos, tais como ID, nome do produto, descrição etc. No carrinho de compras quando o usuário finaliza a compra os dados dos itens que ele pediu são inseridos no BD. O problema é que cada produto tem um nome, e quando o usuário finaliza a compra está sendo inserido apenas o Nome do primeiro produto do carrinho repetitivamente. Vejam na foto que o ID do produto é diferente, mas o nome é repetido em todos. Tentei fazer um foreach para tentar resolver o problema, mas continua a mesma coisa. Se alguém puder me ajudar por gentileza, agradeço :)
      $this->start(); foreach($this->details() as $product_name){ $product = $product_name['product_name']; } // Insert the items if ($pass) { $this->details(); $this->orderID = $this->lastID; $sql = "INSERT INTO `orders_items` (`order_id`, `product_id`, `quantity`, `product_name`) VALUES "; $cond = []; foreach ($_SESSION['cart'] as $id=>$qty) { $sql .= "(?, ?, ?, ?),"; array_push($cond, $this->orderID, $id, $qty, $product); } $sql = substr($sql, 0, -1) . ";"; $pass = $this->exec($sql, $cond); }  

    • By brendow
      Olá Pessoal!
      Como valores dentro de um loop foreach para gravar os valores selecionados, exemplo:
      $alunos = "1,2";
      $arr = [$alunos];
      foreach($arr as $dado => $value) {
      $list = explode(',', $value);
      PRECISO DE AJUDA AQUI e depois:
      mysqli_query($conn, "INSERT INTO tb_alunos (id) VALUES ('$???')");
      }
       
      E quando isso acontece?
      $alunos = "1"; OU $alunos = "";
       
      Desde já agradeço!
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.