3
respostas

Botão "alterar" e "remover"

Estou mudando a estrutura do botão "alterar" para que fique igual ao de "remover", mas quando clico no botão alterar é apresentado este erro no browser:

( ! ) Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in C:\wamp64\www\loja\banco-produto.php on line 25
Call Stack
#    Time    Memory    Function    Location
1    0.0005    242144    {main}( )    ...\produto-altera-formulario.php:0
2    0.0050    270376    buscaProduto( )    ...\produto-altera-formulario.php:6
3    0.0056    270808    mysqli_fetch_assoc ( )    ...\banco-produto.php:25

Este é o código do banco-produto.php:

function buscaProduto($conexao,$id){
    $query ="select * from produtos where id={$id}";
    $resultado =  mysqli_query($conexao,$query); /// linha 25
    return mysqli_fetch_assoc($resultado);
}

Esta é a alteração que fiz no produto-lista.php:

    <tr>
        <td><?=$produto['nome'] ?></td>
        <td><?=$produto['preco'] ?></td>
        <td><?=substr($produto['descricao'],0,40) ?></td>
        <td><?=$produto['categoria_nome']?></td>
        <td>
            <form action="produto-altera-formulario.php" method="post">
                <input type="hidden" name="id" value="<?=$produto['id']?>">
                <button class="btn btn-primary">alterar</button>
            </form>
        </td>
        <td>
            <form action="remove-produto.php" method="post">
                <input type="hidden" name="id" value="<?=$produto['id']?>">
                <button class="btn btn-danger">remover</button>
            </form>
        </td>    
    </tr>
3 respostas

O meu fiz dessa forma e está funcionando corretamente:

<td>            
            <form method="post" action="altera-produto.php">
                <input type="hidden" name="id" value="<?=$p->id?>">
                <button class="btn btn-primary" type="submit">Alterar</button>
            </form>
        <td>
            <form method="post" action="remove-produto.php">
                <input type="hidden" name="id" value="<?=$p->id?>">
                <button class="btn btn-danger" type="submit">Remover</button>
            </form>
        </td>

Verifique se no seu produto-altera-formulario.php você alterou de $_GET para $_POST o "method" de coletar a informação.

A unica coisa que está diferente é o <?=$p->id?> por ser O, no curso PHP Orientação a Objetos você irá entender. Más o seu da forma que está <?=$produto['id']?> é correto.

Espero ter ajudado, abraços.

Srs.

O erro continua...

Abaixo o código do produto-altera-formulario.php

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

$id = $_GET['id'];
$produto = buscaProduto($conexao,$id);
$categorias = listaCategorias($conexao);
$usado = $produto['usado'] ? "checked='checked'" : "";
?>
    <h1>Alterando produto</h1>
    <form action="altera-produto.php" method="post">
        <input type="hidden" name="id" value="<?=$produto['id']?>">
        <table class="table">
            <?php include ("produto-formulario-base.php");?>
            <tr>
                <td>
                    <button class="btn btn-primary" type="submit">Alterar</button>
                </td>
            </tr>
        </table>
    </form>
<?php require_once("rodape.php"); ?>