Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

Solucionado
(ver solução)
13
respostas

Erro ao Listar

boa tarde,

ao executar a pagina com o código produto-lista.php a mensagem abaixo é exibida. Oque pode está ocorrendo?

Warning: mysqli_query() expects parameter 1 to be mysqli, null given in C:\xampp\htdocs\loja\produto-lista.php on line 3

Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, null given in C:\xampp\htdocs\loja\produto-lista.php on line 5

13 respostas

Opa Lucas, pode postar seu código aqui? O erro indica que certas variáveis que precisam estar preenchidas não estão, mas só vendo o código para acertarmos.

olá Alberto, segue o código do produto-lista.php:

<?php include ("cabecalho.php"); ?>
<?php include ("conecta.php"); 
$resultado = mysqli_query ($conexao, "select * from produtos");
while($produto = mysqli_fetch_assoc ($resultado)){
    echo $produto ['nome'] . "<br/>";
}

?>



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

Opa Lucas, acho que a variável $conexao não está definida. Pode verificar?

Alberto, criei um arquivo conecta.php , acredito que esteja declarada abaixo:

<?php
$conexao = mysqli_connect("localhost", "root", "", "loja");

está faltando alguma variável?

Oi Lucas, parece que o código está certo sim. Confere para mim se a variável $conexao está preenchida? Depois, a mesma coisa vale para a variável $resultado.

Alberto, não encontrei a variável $conexão declarada em outro ponto do código, apenas no arquivo acima, já a variável $resultado está apenas no código banco-produto.php:

$resultado = mysqli_query ($conexão, "select * from produtos");

existe outro arquivo que essas variáveis devem estar declaradas?

Lucas, só para desencargo de consciência... o seu arquivo cabecalho.php tenta usar a conexão? Repare que o arquivo conexao.php só é adicionado após o cabecalho.php

Abraços,

Bons estudos.

Outro detalhe

$resultado = mysqli_query ($conexão, "select * from produtos");

Repare que variáveis não devem ter acentos no nome. Você está tentando acessar a variável conexão e não a variável conexao.

Abraços.

olá Renan, a variável está correta: $conexao, eu que escrevi ela errada aqui, respondendo a outra pergunta, pe que percebi o arquivo cobecalho.php não está utilizando esta variável, segue o código abaixo:

<html>
    <head>
        <title>Minha loja</title>
<meta charset="utf-8">
        <link href="css/bootstrap.css" rel="stylesheet">
        <link href="css/loja.css" rel="stylesheet">
    </head>
    <body>

        <div class="navbar navbar-inverse navbar-fixed-top">
        <div class="container">
            <div class="navbar-header">


                    </div>
            </div>
            <ul class="nav navbar-nav">
            <li><a href="produto-formulario.php">Adiciona Produto</a></li>
                <li><a href="sobre.php">Sobre</a></li>
                <li><a href="produto-lista.php">Lista de Produtos</a></li>
                <li><a href="index.php">Minha Loja</a></li>

            </ul>
        </div>

        <div class="container">
            <div class="principal">

Troca todos os includes para require e me fala se aconteceu algum erro.

Abraços.

Renan, desculpe a demora, realizei a alteração em todos os documento, porem outro erro ocorreu.

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

<table class="table table-striped table-bordered">
    <?php
    $produtos = listaProdutos($conexao);
foreach ($produtos as $produto) :
?>
<tr>
    <td><?= $produto ['nome'] ?></td>
    <td><?= $produto['preco']?></td>
</tr>
<?php
endforeach
?>
</table>

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


Erro abaixo:


Parse error: syntax error, unexpected 'require' (T_REQUIRE) in C:\xampp\htdocs\loja\produto-lista.php on line 2
solução!

Oi Lucas,

Como você está fazendo tudo na mesma diretiva php você só precisa dela na primeira linha.

Troque de:

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

para:

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

Abraço!

obrigado, Joviane. Funcionou lindamente!