Pagination losing the data

Asked

Viewed 49 times

-4

I am developing a page that has paging. However, when I click on a page number I get the error:

Notice: Undefined index: tipo_consulta in C: xampp htdocs controle_gastos tipoconsulta.php on line 37

Code:

<html>
<head>
<title>Tipo de consulta</title>
</head>

<body>

<table border="1">

<tr>
<td>Descrição:</td> 
<td>Forma de pagamento:</td>
<td>Valor da parcela: </td>
<td>Quantidade de parcelas:</td>
<td>Numero da parcela:</td>
<td>Pago:</td>
<td>Cartão:</td>
<td>Numero do cart&atildeo:</td>
<td>Data de vencimento:</td>
</tr>


<?php

include "conecta_banco.php";

$idusu = $_SESSION["id"];
$consulta = $_POST["tipo_consulta"];

switch($consulta){

    case "exibe_tudo": 

        $pagina = (isset($_GET['pagina']))? $_GET['pagina'] : 1;

        //seleciona todos os itens da tabela
        $sent_sql = "SELECT * FROM gastos WHERE usu_id = '$idusu'";
        $result = mysql_query($sent_sql);

        //conta o total de itens
        $total = mysql_num_rows($result);

        //seta a quantidade de itens por página, neste caso, 20 itens
        $registros = 20;

        //calcula o número de páginas arredondando o resultado para cima
        $numPaginas = ceil($total/$registros);

        //variavel para calcular o início da visualização com base na página atual
        $inicio = ($registros*$pagina)-$registros;

        //seleciona os itens por página
        $sent_sql = "SELECT * FROM gastos LIMIT $inicio,$registros";
        $result = mysql_query($sent_sql);
        $total = mysql_num_rows($result);



        while($tbl = mysql_fetch_array($result))
        {            
            $descricao = $tbl["descricao_gasto"];
            $formapagamento = $tbl["moeda"];
            $valor = $tbl["valor_gasto"];
            $quantidade = $tbl["quant_parcela"];
            $numerodaparcela = $tbl["num_parcela"];
            $tapago = $tbl["pago"];
            $cartao = $tbl["cartao"];
            $numcartao= $tbl["num_cartao"];
            $datavencimento = $tbl["data_venc"];                                             




            /* Aqui converto a data que vem do mysql no formato y/m/d
             * para d/m/y */

            $datavencimentoconv = date("d/m/Y",strtotime($datavencimento));  



            echo "<tr>";
            echo "<td>$descricao </td>";
            echo "<td>$formapagamento </td>";
            echo "<td>R$ $valor </td>";
            echo "<td>$quantidade </td>";
            echo "<td>$numerodaparcela</td>";
            echo "<td>$tapago</td>";
            echo "<td>$cartao </td>";
            echo "<td>$numcartao </td>";
            echo "<td>$datavencimentoconv </td>";
            echo "</tr>";

                    }          



        $sent_sql2 = "SELECT sum(valor_gasto) FROM gastos WHERE usu_id='$idusu'";
        $result2 = mysql_query($sent_sql2);

        while($sum = mysql_fetch_array($result2)){
            $soma = $sum['sum(valor_gasto)'];

            echo "<tr>";
            echo "<td>Total: </td>";
            echo "<td>R$ $soma</td>";
            echo "</tr>";


        }

        //exibe a paginação
        for($i = 1; $i < $numPaginas + 1; $i++) {
            echo "<a href='tipoconsulta.php?pagina=$i'>".$i."</a> ";

        }



       break;
}


?>

</table>

</body>

</html>

Remembering that the variable $consulta get on the radio tipo_consulta from another page.

  • Which error is returned?

  • The normal pagination appears up there,ai when I click on the number of the following message: Notice: Undefined index: tipo_query in C: xampp htdocs controle_expense tipoconsulta.php on line 37

  • The error occurs because you do not pass any parameter with the name tipo_consulta in URL.

  • What do you mean? .

1 answer

-1

Speak, my dear, next. The error that occurs is that when the query page is loaded you pass the value query type via POST (sent by a form), so when paging this request type POST there is no longer what causes the error. And how you use its value to demonstrate the results, or you will have to pass the value via GET (URL, as with the page number) or set it in a $_SESSION. Do not forget to make the check if the $_POST exists or not. An example:

<html>
<head>
<title>Tipo de consulta</title>
</head>

<body>

<table border="1">

<tr>
<td>Descrição:</td> 
<td>Forma de pagamento:</td>
<td>Valor da parcela: </td>
<td>Quantidade de parcelas:</td>
<td>Numero da parcela:</td>
<td>Pago:</td>
<td>Cartão:</td>
<td>Numero do cart&atildeo:</td>
<td>Data de vencimento:</td>
</tr>


<?php

include "conecta_banco.php";

$idusu = $_SESSION["id"];
if( isset( $_POST["tipo_consulta"] ) ){
    $consulta = $_POST["tipo_consulta"];    
}elseif( isset( $_GET["tipo_consulta"] ) ){
    $consulta = $_GET["tipo_consulta"];
}


switch($consulta){

    case "exibe_tudo": 

        $pagina = (isset($_GET['pagina']))? $_GET['pagina'] : 1;

        //seleciona todos os itens da tabela
        $sent_sql = "SELECT * FROM gastos WHERE usu_id = '$idusu'";
        $result = mysql_query($sent_sql);

        //conta o total de itens
        $total = mysql_num_rows($result);

        //seta a quantidade de itens por página, neste caso, 20 itens
        $registros = 20;

        //calcula o número de páginas arredondando o resultado para cima
        $numPaginas = ceil($total/$registros);

        //variavel para calcular o início da visualização com base na página atual
        $inicio = ($registros*$pagina)-$registros;

        //seleciona os itens por página
        $sent_sql = "SELECT * FROM gastos LIMIT $inicio,$registros";
        $result = mysql_query($sent_sql);
        $total = mysql_num_rows($result);



        while($tbl = mysql_fetch_array($result))
        {            
            $descricao = $tbl["descricao_gasto"];
            $formapagamento = $tbl["moeda"];
            $valor = $tbl["valor_gasto"];
            $quantidade = $tbl["quant_parcela"];
            $numerodaparcela = $tbl["num_parcela"];
            $tapago = $tbl["pago"];
            $cartao = $tbl["cartao"];
            $numcartao= $tbl["num_cartao"];
            $datavencimento = $tbl["data_venc"];                                             




            /* Aqui converto a data que vem do mysql no formato y/m/d
             * para d/m/y */

            $datavencimentoconv = date("d/m/Y",strtotime($datavencimento));  



            echo "<tr>";
            echo "<td>$descricao </td>";
            echo "<td>$formapagamento </td>";
            echo "<td>R$ $valor </td>";
            echo "<td>$quantidade </td>";
            echo "<td>$numerodaparcela</td>";
            echo "<td>$tapago</td>";
            echo "<td>$cartao </td>";
            echo "<td>$numcartao </td>";
            echo "<td>$datavencimentoconv </td>";
            echo "</tr>";

                    }          



        $sent_sql2 = "SELECT sum(valor_gasto) FROM gastos WHERE usu_id='$idusu'";
        $result2 = mysql_query($sent_sql2);

        while($sum = mysql_fetch_array($result2)){
            $soma = $sum['sum(valor_gasto)'];

            echo "<tr>";
            echo "<td>Total: </td>";
            echo "<td>R$ $soma</td>";
            echo "</tr>";


        }

        //exibe a paginação
        for($i = 1; $i < $numPaginas + 1; $i++) {
            echo "<a href='tipoconsulta.php?pagina=$i&tipo_consulta=$consulta'>".$i."</a> ";

        }



       break;
}


?>

</table>

</body>

</html>

If it doesn’t work, please comment.

  • friend tried here, but it didn’t work.I’m beginner in php yet.

  • how do I set it via $_SESSION?

  • assign $_SESSION["query type"] the same time with the $query variable. But in this case it would be more feasible to do via $_GET . I will edit and post the code with $_GET.

  • Hey, I just had time to test it today. I tried with the code you gave me, but the error remains the same, the first page works, but when I click on some number of the error paging.

  • The error that shows is that there is no query type variable. Something in your code is wrong.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.