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

Dúvida no Ex. 2 do Capítulo 10 - Alterando produtos

Estou recebendo a seguinte mensagem de erro ... ( ! ) Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in C:\wamp\www\loja\banco-produto.php on line 22 Call Stack Time Memory Function Location 1 0.0024 137064 {main}( ) ..\produto-altera-formulario.php:0 2 0.1527 151840 buscaProduto( ) ..\produto-altera-formulario.php:7 3 0.1531 152024 mysqli_fetch_assoc ( ) ..\banco-produto.php:22

4 respostas

segue os códigos... BANCO PRODUTOS: <?php function listaProdutos($conexao) { $produtos = array(); $resultado = mysqli_query($conexao, "select p.,c.nome as categoria_nome from produtos as p join categorias as c on c.id=p.categoria_id"); while ($produto= mysqli_fetch_assoc($resultado)) { array_push($produtos, $produto); } return $produtos; } function insereProduto($conexao, $nome, $preco, $descricao, $categoria_id, $usado) { $query = "insert into produtos (nome, preco, descricao, categoria_id, usado) value ('{$nome}', {$preco}, '{$descricao}', {$categoria_id}, {$usado})"; return mysqli_query($conexao, $query); } function removeProduto($conexao, $id) { $query = "delete from produtos where id = {$id}"; return mysqli_query($conexao, $query); } function buscaProduto($conexao, $id) { $query="select from produtos where id = {$id}"; $resultado = mysqli_query($conexao, $query); echo $query; return mysqli_fetch_assoc($resultado);

PRODUTO ALTERA FORMULARIO:

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

$id = $_GET['id'];
$produto = buscaProduto($conexao, $id);
$categorias = listaCategorias($conexao);
?>
            <h1> Alterando produto </h1>
<form action = "altera-produto.php" method = "post">
    <table class = "table">
        <tr>
            <td>Nome</td>
            <td><input class="form-control" type="text" name="nome" value="<?=$produto['nome']?>"></td>
        </tr>
        <tr>
            <td>Preço</td>
            <td><input class  = "form-control" type = "number" name = "preco"></td>
        </tr>
        <tr>
            <td>Descrição</td>
            <td><textarea class = "form-control" name ="descricao"></textarea></td>
        </tr>
        <tr>
        <td></td>
        <td><input type="checkbox" name="usado" value="true">Usado
        <tr>
            <td>Categoria</td>
            <td>
            <select name="categoria_id" class="form-control">
            <?php foreach ($categorias as $categoria) : ?>
                <option value="<?=$categoria['id']?>">
                    <?=$categoria['nome']?></br>
                </option>
            <?php  endforeach;?>
            </select>
        </td>
        <tr>
            <td>
            <button class = "btn btn-primary" type = "submit">Alterar</button>
            </td>
        </tr>
    </table>
</form>
<?php include("rodape.php");?>

Desculpe não formatei corretamente o primeiro: Segue BANCO PRODUTO:

<?php
function listaProdutos($conexao) {
 $produtos = array();
 $resultado = mysqli_query($conexao, "select p.*,c.nome as categoria_nome from produtos as p join categorias as c on c.id=p.categoria_id");
 while ($produto= mysqli_fetch_assoc($resultado)) {
     array_push($produtos, $produto);
     }
     return $produtos;
 }
 function insereProduto($conexao, $nome, $preco, $descricao, $categoria_id, $usado) {
    $query = "insert into produtos (nome, preco, descricao, categoria_id, usado) value ('{$nome}', {$preco}, '{$descricao}', {$categoria_id}, {$usado})";
    return    mysqli_query($conexao, $query);
}
function removeProduto($conexao, $id) {
    $query = "delete from produtos where id = {$id}";
    return mysqli_query($conexao, $query);
}
function buscaProduto($conexao, $id) {
    $query="select * from produtos where id = {$id}";
    $resultado = mysqli_query($conexao, $query);
    echo $query;
    return mysqli_fetch_assoc($resultado);
}
solução!

Achei resposta... era um erro de digitação meu... no formulário lista produto....

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software