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

exercicio aula 8

nao esta exibindo os produtos

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

<?php
$produtos = listaProdutos($conexao);
?>

<?php

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

?>

    <table class="table table-striped table-bordered">

                <?php
                foreach($produtos as $produto) :
                    ?>

                    <tr>
                        <td><?= $produto['nome'] ?></td>
                        <td><?= $produto['preco'] ?></td>
                        <td><?= substr($produto['descricao'], 0, 50) ?></td>
                        <td><?= $produto['categoria_nome'] ?></td>
                        <td>
                            <form action="remove-produto.php" method="post">
                                <input type="hidden" name="id" value="<?=$produto['id']?>"/>
                                <button class="btn btn-danger">Remover</a></button>
                            </form>
                        </td>
                    </tr>

                    <?php
                        endforeach
                    ?>
    </table>


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




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

$categorias = listaCategorias($conexao);
?>

    <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>

            <td>Descrição</td>
            <td><textarea class="form-control" name="descricao" cols="30" rows="5"></textarea></td>

            <tr>
                <td>Categorias</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" value="Cadastrar"/></td>
            </tr>
        </table>

    </form>

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



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

<?php
$nome = $_POST["nome"];
$preco = $_POST["preco"];
$descricao = $_POST["descricao"];
$categoria_id = $_POST["categoria_id"];


$conexao = mysqli_connect('localhost', 'root', '', 'loja');

function insereProduto($conexao, $nome, $preco, $descricao, $categoria_id) {
   $query = "insert into produtos (nome, preco, descricao) values ('{$nome}', {$preco}, '{$descricao}', {$categoria_id})";
   $resultadoDaInsercao = mysqli_query($conexao, $query);
   return $resultadoDaInsercao;
}
?>

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

   <?php

      }else {
         $msg = mysqli_error($conexao);

   ?>
      <p class="text-danger">O produto <?php echo $nome; ?> não foi adicionado: <?php echo $msg ?></p>
      <?php
      }
?>





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




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


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

    return $produtos;

}

function insereProduto($conexao, $nome, $preco, $descricao, $categoria_id) {
    $query = "insert into produtos (nome, preco, descricao, categoria_id) values ('{$nome}', ${preco}, '{$descricao}', {$categoria_id})";
    $resultadoDaInsercao = mysqli_query($conexao, $query);
    return $resultadoDaInsercao;
}


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

}
7 respostas

Nome Preço Descrição

Você não deveria declarar elas assim: (?) $Nome $Preço $Descrição

nao o erro esta aqui nessa linha de codigo pois quando mudo volta a aparecer

$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");

Oi João,

Tenta mudar para isso aqui

$resultado = mysqli_query($conexao, "select * from produtos as p join categorias as c on p.categoria_id = c.id");

Assim ele já informações da categoria também.

Felipe não deu certo agora nao esta nem cadastrando

"Column count doesn't match value count at row 1"

solução!

Paulo, essa alteração não deveria afetar o inserir você sabe qual linha o php fala que o erro está?

Felipe nao aparece erro algum

Felipe obrigado achei o erro estava na listagem esqueci de passar o categoria_id hegegegeheheh

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