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.