Question :
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>
Answer :
<!-- 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 -->
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>
&