Ir para conteúdo
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?

Compartilhar este post


Link para o post
Compartilhar em outros 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();
        }

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por Willian Simione
      Boa Noite, alguem poderia me ajudar em uma situação, estou tetnando gravar os dados da tela abaixo, porem nao estou conseguindo montar o jeito certo pra ele gravar todos os dados de uma vez

    • Por Giovanird
      Tenho uma tabela com a coluna média (valor decimal) .
       
      cod | media | cod_sala 1 1,98 5 2 2,34 2 3 1,32 5 4 2,51 3 5 1,65 1 6 2,78 5 7 4,95 4 8 0,75 4 9 1,23 1 10 1,63 2 11 1,55 3 Preciso no select MYSQL ou dentro do foreach multiplicar os valores do campo média, de acordo com o fitro por cod_sala
      Exemplo pelo cod_sala: 5
      Sendo o resultdo final: 1,98 * 1,32 * 2,78 = 7,26

      Desde já agradeço!
    • Por Giovanird
      Listo um array pelo foreach e preciso pegar os valores fora do foreach.
      Abaixo tenho o exemplo do foreach com os valores
       
      <?php foreach($turma $rsturma): if(($rsturma['id'] == 1){ echo $rsturma['nome']."<br>"; echo $rsturma['idade']."<br><br>"; } endforeach; //Dentro do foreach me retorna: Luis 13 Maria 12 Carlos 12 Matheus 14 Andréa 12 //Preciso pegar a posição e o valor desta lista $posicao1 = 1; $nome1 = Luis; $posicao2 = 2; $nome2 = Maria; $posicao3 = 3; $nome3 = Carlos; $posicao4 = 4; $nome4 = Matheus; $posicao5 = 5; $nome5 = Andréa;  
    • Por Ruyter
      Estou com problema para resolver uma solução que estou necessitando. Toda ajuda será bem-vinda!
       
      Tenho uma tabela onde há vários registros com um mesmo IDENTIFICADOR e vários INDENTIFICADORES diferentes em uma mesma coluna.
      Como percorrer os registros de uma tabela, com base nos IDENTIFICADORES?
      Preciso também analisar um período por data (>= e <=) e ABSTRAIR deste período o valor MIN e MAX de uma outra coluna
      Esta consulta precisa ser realizada em cada IDENTIFICADOR DISTINTO?
       
      Já utilizei o BETWEEN, mas ao usar o código com o foreach() no PHP ele lê apenas um registro.
      O código que estou trabalhando é este:
       
      SELECT conf_hidro_inatividade, cons_reg_ident_iot, cons_data, MIN(cons_leitura_atual), MAX(cons_leitura_atual), hidro_valvula, hidro_cliente FROM tab_conf_hidro, tab_consumo INNER JOIN tab_hidrometros ON cons_reg_ident_iot = hidro_ident_iot WHERE cons_reg_ident_iot = '20220701001' and conf_hidro_inatividade = 'sim' and hidro_valvula = 'aberta' and cons_data BETWEEN '2022-10-10' and '2022-10-13';  
      Com:

       
      SELECT conf_hidro_inatividade, cons_reg_ident_iot, cons_data, cons_leitura_atual, hidro_valvula, hidro_cliente /*(sem o MIN e MAX na mesma coluna)*/ WHERE cons_reg_ident_iot != ' ' and conf_hidro_inatividade = 'sim' and hidro_valvula = 'aberta';  
      usando dentro do foreach(), percorre todos os registros.
    • Por k9studio
      Meus amigos,
      preciso de um help
      seguinte tenho um credito quero lançar em varias faturas eum foreach até o valor do credito
      tipo exemplo a baixo:
      $credito = 100;
      foreach($shows as $rows){
      fatura 1 Valor 20,00  -100 marca como pago
      fatura 2 Valor 20,00  -80  marca como pago
      fatura 3 Valor 20,00  -60  marca como pago
      fatura 4 Valor 20,00  -40  marca como pago
      fatura 5 Valor 30,00  -20  aqui deixa como não pago
      }
×

Informação importante

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