+ Responder ao Tópico



  1. #1
    Spelk
    Visitante

    Padrão Paginação MySQL + PHP

    8O Ae pessoal, tô precisando de uma ajudona!!!

    Montei um formulário em HTML + PHP para fazer umas consultas personalizadas no BD (MySQL), ele funciona normalmente, porém a minha query é montada de acordo com as opções escolhidas no formulário (extract ($_POST) ).

    É apresentada a primeira página normalmente, quando clico para ir para outra, ele apresenta 0 resultados, dei uma debugada no código e constatei que devido a minha query conter variáveis geradas pelo $_POST, qdo chamou outra página elas (as variáreis) são zeradas. :cry:

    O que posso fazer? :roll:

  2. #2

    Padrão Paginação MySQL + PHP

    bom vc ta fazendo uma paginacao igual aquela do google q aparece o numero da pagina embaixo?
    bom se for parece que sua query soh eh executada qdo ocorre um post de form, ela tb tem q ser executada qdo ocorrer um GET (que eh link)
    manda sua query ae pra gente e se possivel o codigo onde ele monta ela tb

  3. #3
    Spelk
    Visitante

    Padrão Paginação MySQL + PHP

    É isso msm, ela apresenta os números sim!!!
    No caso e bem grande a parte de geração das variáveis $condicoes e $opcoes, mas foi feita da seguinte maneira, dei um extract ($_POST) e depois fui usando o if para ir montando-as

    Segue abaixo parte do código, não coloquei o pedaço de de montagem da tabela para não ficar ainda maior.

    Código :
    ##### Paginação
     
    $total_links = "5";
    $total_reg = "25";
     
    ##### Inicio Do Código
     
    if(!$pagina) {
    $pc = "1";
    } else {
    $pc = $pagina;
    }
     
    $intervalo = $total_links;
    $inicio = $pc-1;
    $inicio = $inicio*$total_reg;
     
    ##### Consulta BD
    conectar ();
    $sql = mysql_query("SELECT id, $opcoes FROM ulog WHERE $condicoes ORDER BY oob_time_sec");
    $tr = mysql_num_rows ($sql);
    $sql2 = mysql_query("SELECT id, $opcoes FROM ulog WHERE $condicoes ORDER BY oob_time_sec LIMIT $inicio,$total_reg");
    $tp = ($tr/$total_reg);
    $tp = (int) $tp;
     
     
    ##### Exibindo os dados
    echo "Página $pc de $tp <br> Total de registros: $tr<br><br>";
    while($dados=mysql_fetch_array($sql2)) {
     ( muito grande, por isso não inclui, mas está funfando legal )
    }
     
    ##### Continuação dos Códigos
    $flag = $tp/$intervalo;
    $flag1 = $pc/$intervalo;
    $pi = $flag1 * $intervalo;
    if ($pi == "0") {
    $pi = "1";
    }
    $pf = $pi + $intervalo -1;
    $anterior = $pi-$intervalo;
    if($pc<=$intervalo) {
    $anterior = 1;
    }
    $proximo = $pf;
    if($pi>1) {
    echo "<a href='busca.php?pagina=$anterior'><b>Anterior</b></a>&nbsp;";
    }
     
    for ($pi;$pi<$pf;$pi++) {
          if($pi<=$tp) {
              if($pc==$pi) {
                 echo "<b>[" . $pi . "]</b>&nbsp;";
              } else {
                 echo "<a href='busca.php?pagina=" . $pi . "'>" . $pi . "</a>&nbsp;";
              }
          }
    }
     
        if($pf < $tp) {
          echo "<a href='busca.php?pagina=$proximo'><b>Próximo</b></a>&nbsp;";
        }

  4. #4

    Padrão Paginação MySQL + PHP

    Hmmm eu tenho a leve impressao que vc soh pega as variaveis se elas virem pelo metodo POST mesmo
    Código :
    $sql = mysql_query("SELECT id, $opcoes FROM ulog WHERE $condicoes ORDER BY oob_time_sec");
    $tr = mysql_num_rows ($sql);
    $sql2 = mysql_query("SELECT id, $opcoes FROM ulog WHERE $condicoes ORDER BY oob_time_sec LIMIT $inicio,$total_reg");

    faça o seguinte em algum lugar da pagina
    Código :
    echo "Inicio: $inicio<br>";
    echo "Total: $total_reg<br>";
    echo "Opções: $opcoes<br>";
    echo "Condições: $condicoes<br>";

    As variaveis nao devem estar sendo passadas de uma pagina para a outra, se for isso mesmo vc vai precisar trabalhar com cookies ou sessões para armazena-las,
    Eh claro q vc pode passar elas no link mesmo assim:

    Código :
    <a href=link.php&inicio=$inicio>link</a>

    mas ai vc corre o risco de algum abelhudo ficar tentando mudar os codigos e te ferrar

  5. #5
    jamba
    Visitante

    Padrão Paginação MySQL + PHP

    Tente usar um $_REQUEST['variavel']

  6. #6
    Spelk
    Visitante

    Padrão Paginação MySQL + PHP

    É isso msm, as variáveis ficam vazias, não consigo resgatar os valores nem usando o $_REQUEST('variavel'), qto a mudar de página muda normalmente porém não mostra os resultados (pois as var $opcoes e $condicoes aparecem sem valores, já a $inicio tem valor correto), acho q terei q usar sessões msm.

    Então vai mais um probleminha:

    Qdo coloco o session_start();, aparece o seguinte erro no navegador:

    Código :
    Warning: Cannot send session cookie - headers already sent by (output started at /var/www/html/netfilter/includes/busca.php:1) in /var/www/html/netfilter/includes/busca.php on line 2
     
    Warning: Cannot send session cache limiter - headers already sent (output started at /var/www/html/netfilter/includes/busca.php:1) in /var/www/html/netfilter/includes/busca.php on line 2

    Abaixo disso ele exibe a página nomal, mas continua sem exibir as próximas.

    Alguma dica?

    Obs.: O session_start(); está na segunda linha do código, sendo que a primeira é somente <?php

  7. #7

    Padrão Paginação MySQL + PHP

    cara tanto session qto cookie tem uma "frescura" num pode ter nenhuma linha html antes deles, NEM COMENTARIO HTML se naum da pau... coloque eles sempre como a primeira coisa da pagina

  8. #8

    Padrão Paginação MySQL + PHP

    alias da uma checada nissu aki pra ver se vc num eskeceu nda
    http://www.php.net/manual/en/functio...n-register.php

  9. #9
    Spelk
    Visitante

    Padrão Paginação MySQL + PHP

    As linhas de registro de variaveis de sessão, eu já comentei, para ter certeza que o problema não era nelas.

    Esse problema está ocorrendo de apenas colocar:

    Código :
    <?php
     session_start();
    (restante do código)...
    ?>

    Dei uma lida no link q vc enviou (valeu) li tb sobre a função session_start();, lá fala que o [i]id[/id] deve ser passo atraves de um cookie ou metodo GET, mas qdo ainda não existe sessão, não é só colocar da maneira como citei acima?

    Mais uma dúvida, a sessão deve ser criada na página onde eu vou fazer a busca (no meu caso busca.php, que é a que postei parte do código) ou na página onde tem o formulário?

  10. #10

    Padrão Paginação MySQL + PHP

    vc cria a sessao inicialmente na primeira pagina depois q o cara usa a busca, dai em diante vc soh altera os valores das variaveis

  11. #11
    Spelk
    Visitante

    Padrão Paginação MySQL + PHP

    Valeu pessoal pela ajuda, consegui fazer com q tudo funcionasse corretamente!!!

    Qto as msgs de erro de sessão q citei, não achei como solucionar, então apenas mandei não exibir ("@").

    Brigadão msm!!!