Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Entendendo o PHP

1 <?php
2 function listaCategorias($conexao) {
3     $categorias = array();
4     $query = "select * from categorias";
5     $resultado = mysqli_query($conexao, $query);
6     while($categoria = mysqli_fetch_assoc($resultado)) {
7         array_push($categorias, $categoria);
8  }
9  return $categorias;
}

Não sei muito sobre desenvolvimento web principalmente quando se trata de back-end pois há muitas interações entre diversos arquivos. Mas pelo menos isso já consegui assimilar: as interações com os diferentes arquivos.

Agora, quero ver se compreendi de fato. A função acima vai lá no meu arquivo conecta.php e chama a função mysqli_connect conforme abaixo:

<?php
$conexao = mysqli_connect("localhost", "root", "", "loja");

Assim é feito a conexão com o meu banco de dados Loja.

Aí ele cria um array sem tamanho definido para receber todas as categorias que podem existir, certo? E nessa linha ele faz o quê: $query = "select * from categorias";? Seleciona todas as categorias que existem na tabela "categorias"? E se for isso, como ele consegue fazer isso se a variável $query não é um array?

Pra não ficar muito extendido seria legal alguém me explicar cada linha dessa função. Obrigado.

3 respostas
solução!

Oi Geovane, vamos explicar tudo que acontece nessa função então.

$categorias = array(): Cria um array que por enquanto está vazio.

$query = "select * from categorias": Nessa linha ele ainda não seleciona nada no banco de dados, ele só está atribuindo a variável $query o valor que passamos.

$resultado = mysqli_query($conexao, $query): Aqui sim, a query é executada, o valor que ela retorna é praticamente quantas linhas foram selecionadas, esse valor é armazenado na variável $resultado.

while($categoria = mysqli_fetch_assoc($resultado)): Aqui ele faz um laço de repetição, mas vamos quebrar essa parte pra deixar mais fácil de entender.

mysqli_fetch_assoc($resultado): O mysqli_fetch_assoc transforma a primeira linha do resultado que pegamos em um array com todas as informações que veio do banco de dados. Por isso que precisamos de colocar ele dentro de um laço de repetição, caso o resultado retorne mais de uma linha o laço de repetição garante que todos vão ser transformados em array.

Vamos voltar ao while

while($categoria = mysqli_fetch_assoc($resultado)): Aqui o laço faz com que cada linha que foi retornada do resultado seja transformada em um array e também que seja atribuída a variável $categoria.

array_push($categorias, $categoria): Aqui ele adiciona ao array que criamos no começo dessa função $categorias, o valor $categoria.

Não sei se ficou muito claro, principalmente esse finalzinho, mas qualquer dúvida é só perguntar.

Ah, mais uma observação, o mysqli_query executa a query e só retorna o valor de quantas linhas foram selecionadas porque estamos fazendo uma seleção, se caso estivéssemos inserindo dados por exemplo ele retornaria true ou false

Valeu Daniel!