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

Aula 8! Erro ao tentar mostrar as categorias na página de formulário

Estou com um erro persistente ao tentar executar meu código com o while que pega as categorias e bota dentro da array para mostrar na tela de formulário, deixei exatamente como nos exercícios, apelei até para o Ctrl+C e Ctrl+V depois de um tempo. O seguinte erro aparece:

 Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in C:\wamp64\www\loja\banco-categoria.php on line 7

meu código está assim: banco-categoria.php

<?php

function listaCategorias($conexao) {
    $categorias = array();
    $query = "select * from categorias";
    $resultado = mysqli_query($conexao, $query);
    while($categoria = mysqli_fetch_assoc($resultado)) {
        array_push($categorias, $categoria);
    }
    return $categorias;
}

produto-formulario.php

<?php   include("cabecalho.php");
        include("conecta.php");
        include("banco-categoria.php");

        $categorias = listaCategorias($conexao);
?>
            <h1>Formulário de Produto!</h1>
<form action="adiciona-produto.php" method="post">
    <table class="table">
        <tr>
            <td>Nome</td>
            <td><input class="form-control" type="text" name="nome"></td>
        </tr>
        <tr>
            <td>Preço</td>
            <td><input class="form-control" type="decimal" name="preco"</td>
        </tr>
        <tr>
            <td>Descrição</td>
            <td><textarea class="form-control" name="descricao"></textarea></td>
        </tr>

        <tr>
            <td>Categoria</td>
            <td>
                <?php foreach($categorias as $categoria) : ?>
                    <input type="radio" name="categoria_id" value="<?=$categoria['id']?>"><?=$categoria['nome']?></br>
                <?php endforeach ?>
            </td>
        </tr>

        <tr>
            <td><input class="btn btn-primary" type="submit" name="Cadastrar"></td>
        </tr>
    </table>
</form>
<?php include("rodape.php")?>
3 respostas
solução!

Oi Pedro, tudo bem? A função mysqli_query deve retornar o resultado da query, mas ela pode retornar false como valor caso não consiga executar a query. Pra isso acontecer, você deve estar tendo outro problema, por exemplo, a conexão não está sendo feita, a tabela categoria não existe ou mesmo está com o nome diferente. Pode ser muita coisa.

Verifica pra gente se tá tudo ok mesmo? A conexão existe? A tabela é com esse nome mesmo?

Olá Wanderson, era exatamente a última possibilidade que tu deu, a tabela criada no banco estava no singular, e não no plural como no código, um errinho besta de iniciante hehe obrigado Wanderson!

Boa Pedro! Fico feliz em ter ajudado! Qualquer coisa, conta com a gente! Bons Estudos!