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

Listar o produto USADO

Olá Pessoal.

Como faço pra mostrar na página "produto-lista.php" se o produto é usado ou não, assim como mostra o nome, valor, descrição e etc?

Obrigado.

9 respostas

Fala Arthur tudo bem?

Você pode fazer via código da maneira descrita abaixo.

Vê se te ajuda.

        <tr>
            <td><?= $produto['nome'] ?></td>
            <td><?= $produto['preco'] ?></td>
            <td><?= substr($produto['descricao'], 0, 60) ?></td>
            <td><?= $produto['categoria_nome'] ?></td>

<!--            Mostra se o produto é usado ou novo-->

            <td><?php
                if ($produto['usado']) {
                    echo 'Usado';
                } else {
                    echo 'Novo';
                }
                ?>
            </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>

Fala Ricardo, tudo certo!!!

Cara, fiz o teste aqui e não funcionou. Meu código está idêntico ao descrito acima e acrescentei a condição entre as tags

também, mas dá erro. Você testou no seu código e funcionou?? Já tentei com "isset($_POST['usado'])" e também nada.

Fala Arthur, funcionou sim.

Quando você informa somente o código abaixo:

<td><?= $produto['usado'] ?></td>

Ele te retorna 0 ou 1, como está cadastrado na base?

Ricardo, a primeira coisa que fiz foi adicionar o "

<?= $produto['usado'] ?>" no produto-lista.php e achei muito estranho ele retornar um erro (Notice: Undefined index: usado in C:\wamp\www\loja\produto-lista.php on line 35). Então o erro está aí... tem algo errado no meu código... por isso não retorna o valor. Mas, agora, o que será q está errado?? rssss... Vou postar meu código do produto-lista.php:
<?php include("cabecalho.php");
include("conecta.php");
include("banco-produto.php"); ?>

<?php
    if(array_key_exists("removido", $_GET) && $_GET["removido"]=="true"){
?>
    <p class="alert-success">Produto removido com sucesso!<p>    
<?php
}
?>

<table class="table table-striped table-bordered">
    <thead>
        <tr>
            <th>Produto</th>
            <th>Valor</th>
            <th>Descrição</th>
            <th>Categoria</th>
            <th>Usado/Novo</th>
            <th>Remover</th>
        </tr>
    </thead>

<?php
    $produtos = listaProdutos($conexao);
    foreach($produtos as $produto) :
?>

    <tr>
        <td><?=$produto['nome'] ?></td>
        <td><?=$produto['preco'] ?></td>
        <td><?=substr($produto['descricao'], 0,60)?></td>
        <td><?=$produto['categoria_nome'] ?></td>
        <td><?=$produto['usado'] ?></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>

<?php
    endforeach
?>
</table>

<?php include("rodape.php"); ?>

Copie e colei seu código completo no meu projeto e funcionou legal. Então deve ser algum outro problema,

como está a sua função lista produto?

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 p.categoria_id = c.id");

    while ($produto = mysqli_fetch_assoc($resultado)) {
        array_push($produtos, $produto);
    }

    return $produtos;
}

A função está exatamente igual. : (

Vou encaminhar alguns arquivos como estão aqui pra você dar uma olhada. Segue abaixo:

"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) values ('{$nome}', {$preco}, '{$descricao}', {$categoria_id}, {$usado})";
    $resultadoDaInsercao = mysqli_query($conexao, $query);
    return $resultadoDaInsercao;
}

function removeProduto($conexao, $id){
    $query = "delete from produtos where id = {$id}";
    return mysqli_query($conexao, $query);
}

"produto-formulario.php":

<?php include("cabecalho.php");
include("conecta.php");
include("banco-categoria.php");
$categorias = listaCategorias($conexao);
?>

<h1>Formulário de Cadastro</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="number" name="preco"></td>
            </tr>
            <tr>
                <td>Descrição:</td>
                <td><textarea name="descricao" class="form-control"></textarea></td>
            </tr>
            <tr>
                <td></td>
                <td><input type="checkbox" name="usado" value="true"> Usado</td>
            </tr>
            <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>
                <td>
                    <button class="btn btn-primary" type="submit">Cadastrar</button>
                </td>
            </td>
        </table>
    </form>

<?php include("rodape.php"); ?>

"adiciona-produto.php"

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

$nome = $_POST["nome"];
$preco = $_POST["preco"];
$descricao = $_POST["descricao"];
$categoria_id = $_POST["categoria_id"];

if(array_key_exists('usado', $_POST)) {
    $usado = "true";
} else {
    $usado = "false";
}

if(insereProduto($conexao, $nome, $preco, $descricao, $categoria_id, $usado)) {
?>
    <p class="alert-success">O Produto <?= $nome; ?> - R$ <?php echo $preco; ?> foi adicionado com sucesso!</p>

<?php } else {
    $msg= mysqli_error($conexao);
?>
    <p class="alert-danger">O Produto <?= $nome; ?> não foi adicionado. <?php echo $msg ?></p>
<?php
    }
?>

<?php include("rodape.php"); ?>
solução!

Ricardo, cara você não vai acreditar onde estava o erro.

Eu inseri o campo "usado" na tabela como "Usado"... com o U maiúsculo.. hahahahaha

Fiz a seguinte alteração no terminal: "alter table produtos change Usado usado boolean default false;"

E pronto! funcionou!

Tava ficando louco já... estava tudo certo e não funcionava... que erro besta! : )

Muito obrigado pela ajuda Ricardo.

Grande abraço.

Opa beleza valeu.

Aprendemos mais uma.

Abraço.

Olá Ricardo, tudo certo?

Cara, será que você poderia me ajudar em outra dúvida que estou tendo??

A discussão está com o nome Imagem de produtos! em PHP, MySQL e Fundamentos da Web.

Se puder, eu agradeço muito.

Abraços.

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