Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

luccasrodrigo

Sistema de Busca com Paginação

Recommended Posts

A questão é:

Quando faço a consulta obtenho o seguinte resultado [imagem1]
Ao clicar para ir para página 2, obtenho o seguinte resultado [imagem2]
Ou seja, na página "1" tudo funcionando com o total de resultados exibidos (10) e com os total de links (2), só que ao ir para página "2", aparece muito mais links, o que indica que ele consultou e retornou toda tabela, preencheu com a quantidade respectiva de links e mostrou o conteúdo errado na página 2.
Obs:
19 campos com o termo CONFEF;
10 resultados por paginação;
4 links para página anterior e seguinte;
77 campos na tabela duvidas;
[imagem1]
451932-20150903-191647.png
[imagem2]
451932-20150903-191711%20%281%29.png
formulario.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>
pesquisa.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://cref14.org.br/visualizar_resposta.php?id='.$id.'">• <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 -->

 

Compartilhar este post


Link para o post
Compartilhar em outros sites


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

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por landerbadi
      Boa tarde pessoal. Estou tentado fazer uma consulta no banco de dados porém estou tendo dificuldades. Tenho uma tabela chamada "itens" com os seguintes campos: id, item, ativo. Nela tem cadastrado vários itens. No campo ativo eu coloco a letra "S" para informar que este item está ativo no sistema. Por exemplo: 1, casa, S 2, mesa, S 3, cama, S 4, moto S 5, rádio O quinto registro "radio" não está ativo no sistema pois não tem um "S" no campo ativo. E outra tabela chamada "produtos" com os seguintes campos (id, item1, item2, item3) com os seguintes registros: 1, casa, mesa, moto 2, mesa, casa, cama 3, rádio, cama, mesa Eu preciso fazer uma busca na tabela produtos da seguinte maneira: Eu escolho um registro na tabela "itens", por exemplo "mesa". Preciso fazer com que o php me liste todos os registros da tabela "produtos" que contenham a palavra "mesa". Até aqui tudo bem eu consigo listar. Estou fazendo assim: <?php $item = "mesa" $sql = mysqli_query($conn, "SELECT * FROM produtos WHERE item1 LIKE '$item' OR item2 LIKE '$item' OR item3 LIKE '$item' LIMIT 10"); while($aux = mysqli_fetch_assoc($sql)) { $id = $aux["id"]; $item1 = $aux["item1"]; $item2 = $aux["item2"]; $item3 = $aux["item3"]; echo $id . " - " . $item1 . ", " . $item2 . ", " $item3 . "<br>"; } ?> O problema é que está listando todos os registros que contém o item mesa. Eu preciso que o php verifique os demais item e me liste somente os registro em que todos os registros estejam ativos no sistema. No exemplo acima ele não deveria listar o registro 3. pois nesse registro contém o item "radio" e este item não está ativo no sistema. Ou seja, o registro "radio" na tabela itens não possui um "S" na coluna "ativo". Alguém sabe como resolver isso?
    • Por ILR master
      Fala galera.
      Espero que todos estejam bem.
      Seguinte: Tenho um arquivo xml onde alguns campos estão com : (dois pontos), como o exemplo abaixo:
       
      <item>
      <title>
      d sa dsad sad sadasdas
      </title>
      <link>
      dsadas dsa sad asd as dsada
      </link>
      <pubDate>sadasdasdsa as</pubDate>
      <dc:creator>
      d sad sad sa ad as das
      </dc:creator>
      </item>
       
      Meu código:
       
      $link = "noticias.xml"; 
      $xml = simplexml_load_file($link); 
      foreach($xml -> channel as $ite) {     
           $titulo = $ite -> item->title;
           $urltitulo = $ite -> item->link;
           print $urltitulo = $ite -> item->dc:creator;
      } //fim do foreach
      ?>
       
      Esse campo dc:creator eu não consigo ler. Como faço?
       
      Agradeço quem puder me ajudar.
       
      Abs
       
       
    • Por First
      Olá a todos!
       
      Eu estou criando um sistema do zero mas estou encontnrando algumas dificuldades e não estou sabendo resolver, então vim recorrer ajuda de vocês.
      Aqui está todo o meu código: https://github.com/PauloJagata/aprendizado/
       
      Eu fiz um sistema de rotas mas só mostra o conteúdo da '/' não sei porque, quando eu tento acessar o register nada muda.
      E eu também quero que se não estiver liberado na rota mostra o erro de 404, mas quando eu tento acessar um link inválido, nada acontece.
      Alguém pode me ajudar com isso? E se tiver algumas sugestão para melhoria do código também estou aceitando.
       
       
      Desde já, obrigado.
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.