Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Estou seguindo uma video aula de php com mysql e estou conseguindo listar os dados de uma tabela em uma lista (list), só pra que saibam que o problema de conexão com o banco já está superado. Tentei aproveitar o mesmo código para listar a mesma tabela numa combobox, e não tá preenchendo. Aparece a combo, mas não preenche com os dados. Alguém sabe onde estou errando? Segue código:
<body>
<ul>
<?php
// Passo 4 - Listagem dos dados
while($registro = mysqli_fetch_assoc($categorias)){
?>
<li><?php echo $registro ["nomecategoria"]?></li>
<?php
}
?>
</ul>
<form name="produto" method="post" action="">
<label for="">Selecione um produto</label>
<select>
<option>Selecione...</option>
<?php
while($registro = mysqli_fetch_assoc($categorias)) { ?>
<option = "<?php echo $registro['categoriaID'] ?>"><?php echo $registro["nomecategoria"] ?></option>
<?php } ?>
</select>
</form>
<?php
//Passo 5 - Liberar dados da memória
mysqli_free_result($categorias);
?>
</body>Verdade Gabriel. Obrigado pela dica. Como eu só precisava mostrar os dados em um, ou outro, exclui o list, e começou a listar na combobox. Tá ok agora.
Uma vez que você já percorreu o resultado de uma consulta (mysqli_result), ele não pode ser percorrido novamente. O que você deve fazer é salvar os dados em uma variável e percorrer o resultado nesta variável.
//funciona apenas com o driver Mysql Native Driver (mysqlnd)
{
}
MysqlND: http://php.net/manual/en/mysqli-result.fetch-all.php#refsect1-mysqli-result.fetch-all-mysqlnd
Caso não possua instalado o mysqlnd (é recomendado que tenha), deve iterar uma vez e salvar o resultado:
while($registro = mysqli_fetch_assoc($categorias)) {