Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

marcossantana10

Problema com laço de repetição - ForEach

Recommended Posts

O código que vou postar abaixo é de um carrinho de compra, o qual salva a venda e os itens de uma venda, cada um em sua respectiva tabela. O que não to conseguindo é armazenar na tabela item_venda o preço que cada item foi vendido. Quando tento colocar, ele pega só o valor do ultimo item adicionado e coloca para todos os outros.

 

Essa é a parte em questão do sistema:

 

 

<?php
foreach($_SESSION['venda'] as $prod => $quantidade):
$qProd = "SELECT * FROM produtos WHERE id = '$prod'";
$queryProd = mysql_query ($qProd);
$produtos = mysql_fetch_assoc($queryProd);
<tr>
<td><?php echo removeAcentos($produtos['nome']);?></td>
<td><center><?php echo $quantidade ?></td>
<td><center>R$ <?php echo number_format ($produtos['preco_venda'], 2, ",", ".");?></center></td>
<td><center>R$ <?php echo number_format ($produtos['preco_venda'] * $quantidade, 2, ",", "."); ?></center></td>
</tr>
<?php
@$totalCompra += $produtos['preco_venda'] * $quantidade;
$preco_venda = $produtos['preco_venda'];
// se eu fizer um echo $preco_venda exatamente aqui ele imprime os preços como quero, referente a cada produto
endforeach;
echo '<tr>';
echo '<td colspan="5" align="right"><strong>TOTAL DA COMPRA: R$ '.number_format(@$totalCompra, 2,",",".").'</strong></td>';
echo '</tr>';
?>
</table>
</form>
<?php // realizar venda
if(isset($_POST['enviar'])){
$id_cliente = $_POST['id_cliente'];
$id_vendedor = $_POST['id_vendedor'];
$data_venda = $_POST['data_venda'];
$inserirVenda = @insert("venda", "valor, id_cliente, id_vendedor, data_venda", "$totalCompra, $id_cliente, $id_vendedor, '$data_venda'");
$sqlVenda = mysql_query ("SELECT MAX(id) FROM venda");
$idVenda = mysql_result ($sqlVenda,0);
foreach($_SESSION['venda'] as $produtosInseridos => $qtd):
$inserirItens = insert("item_venda", "id_venda, id_produto, quantidade, preco_venda", "{$idVenda}, {$produtosInseridos}, {$qtd}, {$preco_venda}"); //mas aqui ele não salva, acredito q por causa do laço de repetição, mas não sei como fazer pra salvar.
endforeach;

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vamos tentar usar a cabeça um pouco, como uma variável vai armazenar VÁRIOS valores? Como dentre esses vários valores o PHP vai saber qual é o que pertence aquele produto que você está salvando, se você apenas se fizer essas duas perguntas vai ver o quão absurdo é o que você está fazendo.

 

Solução, dentro do laço monte um novo array, salvando todos os preços, e atrele isto a algum tipo de ID que exista na sessão que você está lendo no foreach...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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