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)
18
respostas

`pq ele nao reconhece a data ?

Notice: Undefined variable: data in C:\xampp\htdocs\engfoa\tabelames.php on line 21

<?php include("cabecalho.php");?>
<?php include("conecta.php");?>
<?php
$data = $_GET["data"];

$queryx = "select sum(preco) as total from contaeng where data = '{$data}' ";
$retorno = mysqli_query($conexao, $queryx);
$total = mysqli_fetch_assoc($retorno);
?>
<center>

    <h3>Neste Mês:</h3>
<p class="alert-success">A empresa tem em caixa atualmente R$ <?= $total['total'] ?></p>
</center>
<?php

$data = $_GET["data"];

function listaProdutos($conexao) {
    $produtos = array();
    $resultado = mysqli_query($conexao, "SELECT nome, preco FROM contaeng where data = '{$data}' ");

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

    return $produtos;

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

</table>

<?php include("rodape.php")?>
18 respostas

Augusto, tu tens um select, onde pega nome e preço.

Portanto podes te referenciar a

$produto['nome'] e $produto['preco']

mas não podes te referenciar a $produto['data']

Faz um teste: altera o teu select para

$resultado = mysqli_query($conexao, "SELECT nome, preco, data FROM contaeng where data = '{$data}' ");

Se der certo, podemos arrumar mais.

O erro que mencionei acima, não deve nem ter acontecido ainda.

Onde tu montas o $data?

Tem algum form onde a data é digitada?

Faz um echo $data, logo após $data = $_GET["data"];

o que ele mostra??

Se tens a variável $data com conteúdo, o teu problema é escopo.

A variável $data não está definida dentro da função listaProdutos.

Tu podes enviar para a função como parâmetro (desde que $data esteja realmente com conteúdo)

function listaProdutos($conexão, $data) {



    $produtos = array();
    $resultado = mysqli_query($conexao, "SELECT nome, preco FROM contaeng where data = '{$data}' ");

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

    return $produtos;

}

E na chamada da função também altera

 $produtos= listaProdutos($conexão, $data);

sim , tenho um formulario e ele esta enviando certinho pois esta indo po get e da pr aver em cima da pagina, mas ele nao esta pegando.

Está assim, e ele esta vendo o total só nao esta mostrando a tabela pois fala que n achou a data.

<?php include("cabecalho.php");?>
<?php include("conecta.php");?>
<?php
$data1 = $_GET["data1"];
$data2 = $_GET["data2"];

$queryx = "select sum(preco) as total from contaeng where data >= '{$data1}' and data <= '{$data2}'";
$retorno = mysqli_query($conexao, $queryx);
$total = mysqli_fetch_assoc($retorno);
?>
<center>

    <h3>Neste Mês:</h3>
<p class="alert-success">Total de R$ <?= $total['total'] ?> neste mês!</p>
</center>
<?php

$data1 = $_GET["data1"];
$data2 = $_GET["data2"];

function listaProdutos($conexao, $data1, $data2) {
    $produtos = array();
    $resultado = mysqli_query($conexao, "SELECT nome, preco, data FROM contaeng where data >= '{$data1}' and data <= '{$data2}' ");

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

    return $produtos;

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

</table>

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

A sua chamada para a function listaProdutos está incorreta - falta enviar as duas datas.

Qualo erro que dá?

Em qual linha?

copia a linha que dá erro, pois eu não sei qual n° delinha corresponde ao erro

Se tu garantes que $dat1 e $data2 tem valor, altera a chamada:

$produtos= listaProdutos($conexão, $data1, $data2);

Warning: Missing argument 2 for listaProdutos(), called in C:\xampp\htdocs\engfoa\tabelames.php on line 31 and defined in C:\xampp\htdocs\engfoa\tabelames.php on line 17

Warning: Missing argument 3 for listaProdutos(), called in C:\xampp\htdocs\engfoa\tabelames.php on line 31 and defined in C:\xampp\htdocs\engfoa\tabelames.php on line 17

Notice: Undefined variable: data1 in C:\xampp\htdocs\engfoa\tabelames.php on line 19

Notice: Undefined variable: data2 in C:\xampp\htdocs\engfoa\tabelames.php on line 19

linha 17 é

function listaProdutos($conexao, $data1, $data2) {

linha 19 é

 $resultado = mysqli_query($conexao, "SELECT nome, preco, data FROM contaeng where data >= '{$data1}' and data <= '{$data2}' ");

Você não leu o que falei...

Tem que chamar passando os argumentos...

a sua chamada à função listaProdutos deve ficar assim:

$produtos= listaProdutos($conexão, $data1, $data2);

fiz isso e nao deu

apos mudar isto o erro foi este Notice: Undefined variable: conexão in C:\xampp\htdocs\engfoa\tabelames.php on line 31

Warning: mysqli_query() expects parameter 1 to be mysqli, null given in C:\xampp\htdocs\engfoa\tabelames.php on line 19

Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, null given in C:\xampp\htdocs\engfoa\tabelames.php on line 21

sendo as respectivas linhas:

linha 31=> $produtos= listaProdutos($conexão, $data1, $data2); linha 19 => $resultado = mysqli_query($conexao, "SELECT nome, preco, data FROM contaeng where data >= '{$data1}' and data <= '{$data2}' ");

linha 21 => while($produto = mysqli_fetch_assoc($resultado)) {

Você tem a variável $conexão definida?

Até ontem tinha.

Tanto que listava o total.

Continua mostrando o total?

Mexeste no include do conecta.php?

espero que você não esteja usando o til ~ em conexão...

dá uma olhada, rs

correto $conexao

errado $conexão

solução!

Pelo notice vc está usando $conexão (com til) Os outros erros decorrem daí.

Dá retorno, ok? Já tou tão ansioso quanto tu.

KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK que vergonha pqp

Puxa gastamos um tempão. É legal caçar erros, porque assim aprendo também.

Nesta aventura me lembrei do escopo.

Acho que nunca mais o php me pega nesta.