Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Carrinho de compras, array de $_SESSION

Gente é o seguinte, fiz um formulário bem simples

<form action="add-to-cart.php" method="post">
   <label for="">Name</label>
   <input type="text" name="name">
   <br> <br>

   <label for="">Money</label>
   <input type="text" name="money">
   <br> <br>

   <input type="submit" value="Submit">
</form>

Ao colocar os valores, irá para a página add-to-cart.php, criando um Array de Session e armazenando o valor de $_POST

<?php

   session_start();

   if (empty($_SESSION['cart'])) {
      $_SESSION['cart'] = [];
   }

   array_push($_SESSION['cart'], $_POST);

?>

<p>
   O Lançamento foi feito com sucesso.
   <a href="lancamento.php">Clique aqui</a>
</p>

Quando chegar na página lancamento.php, coloquei um print_r com a tag pre para ter uma melhor visualização do Array de Session, obtendo o seguinte resultado:

Array
(
    [0] => Array
        (
            [name] => Mathews
            [money] => 50
        )

    [1] => Array
        (
            [name] => Jonas
            [money] => 15
        )
)

Código da página lancamento.php:

<?php
   session_start();

echo "<pre>";
   print_r($_SESSION['cart']);
echo "</pre>";

foreach ($_SESSION['cart'] as $key => $value) :
   $query = implode(',', $value);
   echo "INSERT INTO teste (nome, dinheiro) VALUES ('{$query}')";

endforeach;

O resultado do echo é:

INSERT INTO tb01 (name, money) VALUES ('Mathews,10')INSERT INTO tb01 (nome, dinheiro) VALUES ('Nate,500')

Eu tentei fazer o Insert, mas não estou conseguindo. Caso tenha algum campo NN no Schema, aparece o erro:

Column count doesn't match value count at row 1

Eu também percebi que no echo ele colocou os dois valores em aspas simples, sendo que o campo name é varchar e o campo money é decimal. Imaginei que este seja o motivo do erro, estou certo?

Minha idéia é fazer como se fosse um carrinho de compras,receber vários valores do Input e armazenar tudo em uma $_SESSION, tendo a possibilidade de excluir uma posição fazendo o session_unset(), e no final fazer vários insert no banco de dados.

Gostaria de saber se estou no caminho certo. Quero saber apenas como fazer multiplos insert, seguindo esta lógica de carrinho de compras.

Garanta sua matrícula hoje e ganhe + 2 meses grátis

Continue sua jornada tech com ainda mais tempo para aprender e evoluir

Quero aproveitar agora
2 respostas
solução!

O problema do insert é esse que você relatou, os campos tem tipos diferentes, no seu exemplo, você quer gravar dois campos, mas na parte do values, os dois valores estão dentro das aspas, é como se fosse apenas 1 informação. Uma forma de resolver o problema seria fazer algo assim:

foreach ($_SESSION['cart'] as $key => $value) :
   echo "INSERT INTO teste (nome, dinheiro) VALUES ('" . $value["name"] . "'," . $value["money"] . ")";

endforeach;

Puts mano, que fácil... E eu não sabia como arrumar kkk

Vivendo e aprendendo :)

Daniel Bins, muito obrigado... Cara, você não imagina minha felicidade por ter conseguido fazer isto ᕕ( ᐛ )ᕗ