Listing error in paginated search system

Asked

Viewed 585 times

7

When I do the query I get the following result [imagem1]

By clicking to go to page 2, I get the following result [imagem2]

That is, on page "1" everything working with the total results displayed (10) and the total of links (2), only when going to page "2", appears many more links, which indicates that he consulted and returned every table, filled in the respective amount of links and showed the wrong content on page 2.

Obs:

19 fields with the term CONFEF; 10 results per pagination; 4 links to previous and next page; 77 fields in table doubts;

imagem1

imagem2

php form.

<body>
     
        <form name="frmBusca" method="post" enctype="multipart/form-data" action="pesquisa.php?pag=1" >
            <input type="text" name="palavra" />
            <input type="submit"  value="Buscar" />
        </form>
     
    </body>

php search.

<!-- Inicio do Sistema de Busca Interna -->
     
    <?php 
     
    //Se pg não existe atribui 1 a variável pag
    $pag = (isset($_GET['pag'])) ? (int)$_GET['pag'] : 1 ;
     
    if($pag=='0'){
    $pag = '1';
    }
     
    // Pegamos a palavra
    $palavra = trim($_POST['palavra']);
     
    $maximo = '10';
     
    //Atribui a variável inicio o inicio de onde os registros vão ser mostrados por página, exemplo 0 à 10, 11 à 20 e assim por diante
    $inicio = ($pag * $maximo) - $maximo;
     
    $sql = "SELECT * FROM duvidas WHERE resposta LIKE '%$palavra%' LIMIT ".$inicio. ", ". $maximo;
     
    try {
    $consulta = $conecta->prepare($sql); 
    $consulta->execute();
      $conecta->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
     
    $resultado = $consulta->fetchAll();// Recuperar todos valores encontrados
    $count = $consulta->rowCount(PDO::FETCH_ASSOC);// Quantos registros foram encontrados
    }catch (PDOException $erro) {
      die("Não foi possível conectar ao banco de dados :" . $erro->getMessage());
    }
     
    if ($count != 0) {
    foreach($resultado as $res){
    $pergunta  = $res['pergunta'];
    $id = $res['id'];
     
    echo '<br>';
    echo '<a href="http://exemplo.com.br/visualizar_resposta.php?id='.$id.'">&bull; <span style="color:black; font-size:10px;">'.$pergunta.'</span></strong>';
    echo '<br>';
    }
     
    //echo "Foram encontrados ".$count." registro(s)";
    }
    // Se não houver registros
    else {
    echo "Nenhum produto foi encontrado com a palavra ".$palavra."";
    }
     
    ?>
     
    <!-- Fim Sistema de Busca Interna -->
     
    <!-- Inicio Paginação -->
     
     <?php
    // Query de consulta
    $sql = "SELECT * FROM duvidas WHERE resposta LIKE '%$palavra%'";
     
      try {
    $consulta = $conecta->prepare($sql); 
    $consulta->execute();
      $conecta->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
     
    $resultado = $consulta->fetchAll();// Recuperar todos valores encontrados
    $count = $consulta->rowCount(PDO::FETCH_ASSOC);// Quantos registros foram encontrados
    }catch (PDOException $erro) {
      die("Não foi possível conectar ao banco de dados :" . $erro->getMessage());
    }
    $paginas = ceil($count/$maximo);
    $links = '4';
     
    echo '</br></br></br><ul id="paginacao">'; 
     
    echo '<li><a href="pesquisa.php?pag=1" >Primeira</a></li>';
     
    for($i = $pag-$links; $i <= $pag-1; $i++){
    if($i <= 0){
    }else{
    echo '<li><a href="pesquisa.php?pag='.$i.'">'.$i.'</a></li>';
    }
    }
     
    echo "<li>$pag</li>";
     
    for($i = $pag+1; $i <= $pag+$links; $i++){
    if($i > $paginas){
     
    }else{
    echo '<li><a href="pesquisa.php?pag='.$i.'">'.$i.'</a></li>';
    }
    }        
         echo '<li><a href="pesquisa.php?pag='.$paginas.'">Última</a></li></br></br></br>';
    echo'</ul>';
     
     
    ?>
     
    <!-- Fim Paginação -->

2 answers

1

See if you can understand these changes!

<?php 
$pagina =  ($_GET['pagina'];?>
<h2><img src="imagens/apontar_paginas.png" alt="" width="12" /> <?php echo $pagina; ?></h2>

<?php 


$_GET['pag'] = (!isset($_GET['pag']))? 1 :$_GET['pag'];
$pag_ = $_GET['pag'];
    if($pag_ >= 1){
$pag = $pag_;
}else{
 $pag = 1;
}
$maximo = '15'; //RESULTADOS POR PÁGINA
$inicio = ($pag * $maximo) - $maximo;

$tabela = $_GET['pagina'];  
$result = mysql_query(" SELECT * FROM cdc_".$tabela." ORDER BY id DESC LIMIT $inicio, $maximo ") 
    or die(mysql_error());
      if(@mysql_num_rows($result) == '0'){
       echo "<br><font face=arial size=4px>OPS!, ESSA PÁGINA NÃO EXISTE! <br />";
}else{


?>

}
<?php 
 }
     $sql_res = mysql_query(" SELECT id FROM cdc_".$tabela." ");
    $total = mysql_num_rows($sql_res);

    $paginas = ceil($total/$maximo);
    $links = '5'; //QUANTIDADE DE LINKS NO PAGINATOR


    echo "<a href=\"index.php?cdc=ctrl&amp;pagina=".$tabela."&amp;pag=1\">Primeira Página</a>&nbsp;&nbsp;&nbsp;";

    for ($i = $pag-$links; $i <= $pag-1; $i++){
        if ($i <= 0){
        }else{
        echo"<a href=\"index.php?cdc=ctrl&amp;pagina=".$tabela."&amp;pag=$i\">$i</a>&nbsp;&nbsp;&nbsp;";
        }
    }
    echo "$pag &nbsp;&nbsp;&nbsp;";

    for($i = $pag +1; $i != $pag+$links; $i++){
        if($i > $paginas){
        }else{
        echo "<a href=\"index.php?cdc=ctrl&amp;pagina=".$tabela."&amp;pag=$paginas\">$i</a>&nbsp;&nbsp;&nbsp;";
        }
    }
        echo "<a href=\"index.php?cdc=ctrl&amp;pagina=".$tabela."&amp;paginas=$paginas\">Última página</a>&nbsp;&nbsp;&nbsp;";


?>
  • the problem still persists =\

1


<!-- Inicio do Sistema de Busca Interna -->

<?php 

    $pag = (isset($_GET['pag'])) ? (int)$_GET['pag'] : 1; //Se 'pag' não está DEFINIDA, 'pag' recebe o valor '1'

    $maximo = '10'; // Quantidade máxima de regisros por página
    // Atribui à variável inicio, a partir de qual registro os resultados deverão ser exibidos. Exemplo: 0 à 10, 11 à 20 e assim por diante
    $inicio = ($pag * $maximo) - $maximo;

    // Pegamos a palavra
    if(isset($_POST['palavra'])){
        $palavra = trim($_POST['palavra']);
    }else{
        $palavra = trim($_GET['palavra']);
    }

    if($palavra != NULL){
        // Retorna apenas os registros PARECIDOS com 'palavra', limitando à 10 registros por página
        $sql = "SELECT * FROM duvidas WHERE resposta LIKE '%$palavra%' LIMIT $inicio, $maximo";
    }else{
        // Retorna todos os registros do BD
        $sql = "SELECT * FROM duvidas ORDER BY id LIMIT $inicio, $maximo";
    }

    try {
        $consulta = $conecta->prepare($sql); 
        $consulta->execute();
        $resultado = $consulta->fetchAll();
        //$count = $consulta->rowCount(PDO::FETCH_ASSOC); // Total de registros encontrados
    }catch (PDOException $erro) {
        echo "Erro ao selecionar: ".$erro->getMessage();
        exit;
    }

    if ($resultado) {
        foreach($resultado as $res){
            $pergunta   = $res['pergunta'];
            $id         = $res['id'];
            $resposta   = $res['resposta'];

            $texto_sem_tags = strip_tags($resposta);
            $texto_truncado = str_truncate($texto_sem_tags, 150, TRUE);
            $texto_destacado =  highlightkeyword($texto_truncado, $palavra);

            echo '<a href="http://cref14.org.br/visualizar_resposta.php?id='.$id.'"><strong><span style="color:black; font-size:10px;">'.$pergunta.'</span></strong></a>';
            echo'</br></br>';
            echo $texto_destacado;
            echo '<a href="http://cref14.org.br/visualizar_resposta.php?id='.$id.'"><strong style="color:#000;">    Continue lendo [...]</strong></a>';;
            echo'</br></br>';
        }
        //echo "Foram encontrados ".$count." registro(s).";
    }else{
        echo "Nenhum resultado encontrado com a palavra '".$palavra."'";
    }
?>

<!-- Fim Sistema de Busca Interna -->

<!-- Inicio Paginação -->

<?php

    $sql = "SELECT * FROM duvidas WHERE resposta LIKE '%$palavra%'";

    try {
        $consulta = $conecta->prepare($sql); 
        $consulta->execute();
        //$resultado = $consulta->fetchAll();
        $count = $consulta->rowCount(PDO::FETCH_ASSOC); // Total de registros encontrados
    }catch (PDOException $erro) {
        echo "Erro ao selecionar: ".$erro->getMessage();
        exit;
    }

    $paginas = ceil($count/$maximo);
    $links = '4';

    /* Primeira página */
    echo '</br></br></br><ul id="paginacao">';
    echo '<li><a href="pesquisa.php?pag=1&palavra='.$palavra.'" >Primeira</a></li>';
        for($i = $pag-$links; $i <= $pag-1; $i++){
            if($i <= 0){}
            else{
                echo '<li><a href="pesquisa.php?pag='.$i.'&palavra='.$palavra.'">'.$i.'</a></li>';
            }
        }

    /* Página atual */
    echo "<li>$pag</li>";

    /* Páginas restantes */
        for($i = $pag+1; $i <= $pag+$links; $i++){
            if($i > $paginas){}
            else{
                echo '<li><a href="pesquisa.php?pag='.$i.'&palavra='.$palavra.'">'.$i.'</a></li>';
            }
        }

    /* Última página */
    echo '<li><a href="pesquisa.php?pag='.$paginas.'&palavra='.$palavra.'">Última</a></li></br></br></br>';
    echo '</ul>';

?>

<!-- Fim Paginação -->

Browser other questions tagged

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