Gravar dados de uma lista de session em um bd. ex.: Carrinho de Compras
Olá pessoas, sou novato em PHP, estou estudando a linguagem e ao mesmo tempo tentando criar algo com o que aprendi. Quando tenho dúvidas procuro na net, tópicos e ou scripts já prontos que me façam entender. Todavia desta vez não encontrei algo claro.
Estou criando um mini sistema de vendas, do qual me permite adicionar uma lista de itens. Daí está o problema, como não tenho um conhecimento avançado de arrays não estou sabendo pegar os dados da lista criada e passar para o BD. Só consigo passar a última informação criada na lista.
Aqui está o exemplo.
<?php
// inicio consulta url
if(!isset($_SESSION['itens'])){
$_SESSION['itens'] = array();
}
if(isset($_GET['acao'])){
$id = $_GET['id'];
// Adiciona ao carrinho
if($_GET['acao'] == 'add'){
if(!isset($_SESSION['itens'][$id])){
$_SESSION['itens'][$id] = 1;
}else{
$_SESSION['itens'][$id] += 1;
}
}
// Diminui carrinho
if($_GET['acao'] == 'dim'){
if(!isset($_SESSION['itens'][$id])){
$_SESSION['itens'][$id] = 1;
}else{
if($_SESSION['itens'][$id] > 1)
$_SESSION['itens'][$id] -= 1;
}
}
//deleta item do carrinho
if($_GET['acao'] == 'del'){
$id = intval($_GET['id']);
if(isset($_SESSION['itens'][$id])){
unset($_SESSION['itens'][$id]);
}
}
}
// fim consulta url
// inicio consulta para adicionar
if(count($_SESSION['itens']) == 0){
?>
<br>
<div class="alert alert-danger alert-dismissible">
<button type="button" class="close" data-dismiss="alert">×</button>
<strong>LISTA VAZIA:</strong> Para adicionar produtos/servicos realize a busca.
</div>
<br>
<?php
}else{
require_once('db.class.php');
$objDb = new db();
$link = $objDb -> conecta_mysql();
$total = 0;
foreach ($_SESSION['itens'] as $idProdutos => $quantidade) {
$sql = "SELECT * FROM produtos WHERE id='$idProdutos'";
$consultado = mysqli_query($link, $sql) or die(mysql_error());
$linha = mysqli_fetch_array($consultado);
$id = $linha['id'];
$codigo = $linha['codigo'];
$produto = $linha['produto'];
$quantidade_disp = $linha['qtd'];
$valor = $linha['valor'];
$subTotal = $linha['valor'] * $quantidade;
$total += $linha['valor'] * $quantidade;
?>
<tr>
<td><input type="hidden" name="codigo_produto" value=""><?= $codigo; ?></td>
<td><input type="hidden" name="nome_produto" value=""><?= $produto; ?></td>
<td><input type="hidden" name="qtd_produto" value=""><?= $quantidade_disp; ?></td>
<td>
<a href="gerar_pedidos_admin.php?acao=dim&id=<?= $id; ?>"><span class="glyphicon glyphicon-minus" style="color: red"></span></a>
<input type="number" name="qtd_produto1" min="1" max="<?= $quantidade_disp; ?>" value="<?= $quantidade; ?>">
<a href="gerar_pedidos_admin.php?acao=add&id=<?= $id; ?>"><span class="glyphicon glyphicon-plus" style="color: green"></span></a>
</td>
<td><input type="hidden" name="valor_produto" value="">R$ <?= number_format($valor,2,",", "."); ?></td>
<td>R$ <?= number_format($subTotal,2,",", ".");?></td>
<td><a href="gerar_pedidos_admin.php?acao=del&id=<?= $id; ?>"><span class="glyphicon glyphicon-remove" style="color: red;"></span></a></td>
</tr>
<?php
}
?>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td><label>Total</label><br>R$ <input type="hidden" name="total_pedido" value=""><?= number_format($total,2,",", ".");?></td>
</tr>
<?php
}
?>
A pergunta e dúvida é como posso pegar os dados da lista e adicionar ao BD. Eu sei que é para usar um foreach ou um while, todavia só consigo passar a última informação da lista de modo repetido. Gostaria de uma ajuda. Não precisa faz de acordo com o meu código, gostaria de um exemplo prático.
Abçs.Discussão (3)
Carregando comentários...