Search system listing error with pagination

7

When I query, I get the following result [image1]

When clicking to go to page 2, I get the following result [image2]

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

Note:

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

form.php

<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>

search.php

<!-- 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 -->
    
asked by anonymous 04.09.2015 / 00:33

2 answers

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 -->
    
23.01.2017 / 22:19
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;";


?>
    
04.09.2015 / 01:25