Show all products of a Mysql order

Asked

Viewed 62 times

1

Good morning!
I created a shop online , this same one consists of a shopping cart. After the user has chosen all the products, a "payment.php" page will appear, before that he inserts it into the database order, and all products associated with such an order, for example:

This is Order 1
inserir a descrição da imagem aqui


And in that order were inserted these products
inserir a descrição da imagem aqui


So far so good!
What I intend is that on the next page (payment.php) show the output as follows:

Information on products purchased
(id 27)
Name: Nars Contour Blush
Price: 39.95€
Quantity: 2

(id 87)
Name: Clarins
Price: 19.95€
Quantity: 1


But the way I did it first shows all the names, then the prices and so,... Here is a part of my code to search and show information

$procura=("SELECT encomenda.* , prod_encomenda.* , produtos.*
    from encomenda 
    join prod_encomenda on prod_encomenda.id_encomenda=encomenda.id_encomenda
    join produtos on produtos.id_produto = prod_encomenda.id_produto
    where encomenda.id_encomenda=(
    SELECT max(encomenda.id_encomenda) from encomenda)");


    $resultado = mysqli_query($link,$procura) or die(mysqli_error($link));
    while ($linha = mysqli_fetch_array($resultado)) 
    {
        $nome_produtoarray[] = $linha['nome_produto'];
        $preco_produtoarray[] = $linha['preco_produto'];
        $preco_total_produto = $linha['preco_total'];
        $quantidadearray[] = $linha['quantidade'];
    }

foreach ($nome_produtoarray as $produto) {
        echo "Nome do produto: ".$produto."<br>"; 
    }

    echo "<br><p style='background:black; color:white; padding:6px;'>Preço dos produtos comprados:</p>";

    foreach ($preco_produtoarray as $preco) {
        echo "Preço do produto: ".$preco."€<br>"; 
    }

    echo "<br><p style='background:black; color:white; padding:6px;'>Quantidade de cada produto:</p>";

    foreach ($quantidadearray as $quantidade) 
    {
        echo "Quantidade: ".$quantidade."<br>"; 
    }


I appreciate anyone who can help!

1 answer

4


You can do everything within one foreach. Just take the indexes of the other arrays using =>:

foreach ($nome_produtoarray as $i => $produto) {
                               ↑        ↑
                             índice   valor

Then it would be:

foreach ($nome_produtoarray as $i => $produto) {
   echo "Nome do produto: ".$produto."<br>";
   echo "Preço do produto: ".$preco_produtoarray[$i]."€<br>";
   echo "Quantidade: ".$quantidadearray[$i]."<br>"; 
}
  • Very good, it worked perfectly, thank you!

Browser other questions tagged

You are not signed in. Login or sign up in order to post.