Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

array, while, fetch_assoc

Tenho algumas duvidas sobre PHP e MYSLQ O fetch_assoc não retorna pra mim um array ?, por que a necessidade de criar um &produtos = array(); (na aula 5 do primeiro curso de php) e colocar nele os produtos ?

Por que não eh possível imprimir a lista de produtos usando o while ? se for possível como faz ?

1 resposta
solução!

Oi Guilherme, tudo bom?

Vamos dar uma olhada nos códigos da aula 5:

function listaProdutos($conexao) {
    $produtos = array(); // aqui criamos um array vazio
    $resultado = mysqli_query($conexao, "select * from produtos"); // aqui selecionamos todos os produtos do nosso banco

    while($produto = mysqli_fetch_assoc($resultado)) { // aqui dizemos que enquanto houver produtos no nosso resultado realizaremos a logica a seguir
        array_push($produtos, $produto); // finalmente colocamos nosso produto dentro do array de produtos
    }

Como você mesmo comentou, o fetch_assoc realmente retorna um array. Mas é um array que representa nosso produto. Ou seja, no array temos as chaves nome,preço,etc... e para cada chave um valor que veio do banco de dados =)

Por isso precisamos do array de produtos, para guardar cada produto dentro dele.

Assim, com um array de produtos em mão, podemos lá na nossa página imprimir um por um certinho:

<?php
foreach($produtos as $produto) : // para cada produto dentro do nosso array de produtos geramos o código abaixo
?>

    <tr>
        <td><?= $produto['nome'] ?></td> //imprime uma linha com o valor de nome
        <td><?= $produto['preco'] ?></td> // imprime uma linha com o valor de preco
    </tr>

<?php
endforeach // acaba o nosso laço de repetição
?>

Repare que ficou bem simples imprimir tudo. Com um while, precisariamos de um contador para passar por todos os elementos do array e verificar quantos produtos tem dentro dele. Seria muito mais trabalhoso!

Qualquer dificuldade, compartilhe com a gente =)