10
respostas

Problema com o banco de dados

Assim está meu código no banco-produtos.php, porém quando atualizo a lista de produtos, nada aparece. O que pode ser? Os bancos de dados estão iguais aos da aula.

<?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;
}
10 respostas
  1. Pega a query (select p.*, c.nome as categoria_nome from produtos as p join categorias as c on p.categoria_id = c.id) e roda no seu banco. Assim vc ira saber se a sua query está correta.

  2. onde vc recebe o produtos manda ele exibi a quantidade de produtos produtos. Assim vc ira ver se existe algo dentro do array produtos, caso ele seja 0 é algum problema na hora que ele coloca os produtos no array ou na sua conexão com o banco. Caso ele retorne algo maior que 0 o erro esta na hora de exibir o produto.

Fiz o teste no banco e deu esse erro:

1046 - Nenhum banco de dados foi selecionado

manda primeiro o use NOME DO BANCO DE DADOS

esse comando vai selecionar o banco que vc quer. O erro foi dado porque vc executo uma busca mas não disse em qual banco que ela deve ser feita.

Funcionou em ambos os bancos, tanto de produto quanto de categoria. Porém continua sem aparecer nada em minha lista de produtos no site.

disponibiliza o código e o script do banco para que eu possa pegar e analisar.

Opa Boari você por aqui? Matgsan aqui caso queira saber ahah.

Tenta dar um var_dump($produto) dentro do while e verifica se está realmente retornando algo. Caso não esteje já sabe onde está o problema.

Já não programo PHP a algum tempo por isso não consigo olhar e dizer ao certo o erro, mas tenta fazer um debug para identificar.

Boa tarde Matheus!

Se puder, disponibilize todo seu código aqui. O script do banco de dados também.

Copia e cola o resultado da query que você executou direto no mysql pra a gente ver aqui

Matheus, Tudo Bem!

Você consegue me mandar um var_dump de sua funciton?

faça isso e me mande!

eu tenho esse código veja se o mesmo é compatível com o seu projeto

function listaProduto($conn){
$produtos = array();
$resultado = mysqli_query($conn, "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;
}

ai na página do produto-lista.php veja se o código se encontra igual a esse?

<?php include ("cabecalho.php");
 include ("conecta.php");
 include ("banco-produto.php");?>
<?php
if( array_key_exists("removido", $_GET) && $_GET["removido"] && $_GET["removido"]==true){ ?>
    <p class="alert-success">Produto Apagado Com sucesso!</p>
<?php } ?>




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

 $produtos = listaProduto($conn);
foreach ($produtos as $produto):
    ?>
        <tr>
            <td><?=$produto ['nome']?></td>
            <td><?=$produto ['preco']?></td>
            <td><?=substr($produto ['descricao'],0,40)?></td>
            <td><?= $produto['categoria_nome']?></td>
            <td><?=$produto['func_ativo']?></td>
            <td><a class="btn btn-primary" href="funcionario-altera-formulario.php?id=<?=$produto['id']?>">Alterar</a></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");?>

Veja se no cabeçalho de seu código você instanciou as devidas functions

<?php include ("cabecalho.php");
 include ("conecta.php");
 include ("banco-produto.php");?>
<?php
if( array_key_exists("removido", $_GET) && $_GET["removido"] && $_GET["removido"]==true){ ?>
    <p class="alert-success">Produto Apagado Com sucesso!</p>
<?php } ?>

teste e nos mostre espero ter ajudado?

abraços!

Sempre que tiver uma duvida desse tipo procure olhar o manual do php.

http://php.net/manual/pt_BR/function.date.php