Jump to content


Photo

Paginar Resultaso De Uma Busca


  • Faça o login para participar
1 reply to this topic

#1 Eng-Haw

Eng-Haw

    Novato no fórum

  • Usuários
  • 4 posts
  • Sexo:Masculino
  • Localidade:São José do Rio Preto

Posted 14/09/2010, 22:13

Bom galera, com muito sacrificio, eu consegui fazer um sisteminha de busca que gera os links das noticias para os resultados, pesquisei e estudei muito para conseguir, porem eu queria fazer com que apareça apenas 20 resultados por pagina.

Bom muitos aqui devem saber como funciona para aparecer da seguinte maneira << Anterior 1 2 3 4 5 Proxima >>

É só isso que eu preciso!

A baixo segue meu codigo

o banco de dados ----------->

CREATE TABLE `noticia` (
`id` int(11) NOT NULL auto_increment,
`titulo` varchar(100) default NULL,
`sessao` varchar(25) default NULL,
`noticia` text NOT NULL,
`video` text NOT NULL,
`data_hora` timestamp NOT NULL default CURRENT_TIMESTAMP,
`ip` varchar(50) NOT NULL,
`publicado` char(1) default 'N',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=27 ;

------------------------------------------------------>
O formulario


<form name="frmBusca" method="post" action="<?php echo $_SERVER['PHP_SELF'] ?>?a=buscar" >
<table>
<tr>
<td>Busca no site:&nbsp;&nbsp;&nbsp;</td>
<td><label>
<input name="palavra" type="text" id="palavra" size="10" style="border:none" height="15"/>
</label></td>
<td><label>
<input name="ok" type="submit" id="ok" value="ok" align="top" height="18" width="18" style="background-color:#C40000; font:'Trebuchet MS', Arial, Helvetica, sans-serif; color:#FFF; border:none; font-size:13px "/>
</label></td>
</tr>
</table>
</form>
------------------------------------------------------>

Nesse script pega o resultado do formulario e exibe-os como um link, para cada noticia
São esses links que eu quero paginar

<?php

//conexão com banco de dados
include "conexao.php";

// Recuperamos a ação enviada pelo formulário
$a = $_GET['a'];

// Verificamos se a ação é de busca
if ($a == "buscar") {

// Pegamos a palavra
$palavra = trim($_POST['palavra']);

// Verificamos no banco de dados as noticias equivalentes a palavra digitada
$sql = mysql_query("SELECT * FROM noticia WHERE noticia LIKE '%".$palavra."%' ORDER BY titulo");

// Descobrimos o total de registros encontrados
$numRegistros = mysql_num_rows($sql);

// Se houver pelo menos um registro, exibe-o
if ($numRegistros != 0) {
// Exibe o titulo da noticia como um link
while ($resultado = mysql_fetch_object($sql)) {
echo "<a href='resultados_da_busca.php?id={$resultado->id}'>{$resultado->titulo}</a>";
echo "<br /> <br />";
echo "<hr width=\"490\" align=\"center\" color=\"#CCCCCC\"/>";
}
// Se não houver registros
} else {
echo "Nenhuma noticia foi encontrada com a palavra ".$palavra."<br /><br />";
}
}

?>

------------------------------------------------------>

Quando clicar no link gerado pelo script acima, ele direciona para essa pagina
resultados_da_busca.php
Ela mostra o conteudo da noticia clicada apenas.


<?php
//conexão com o banco
include "conexao.php";
$id = (int)$_GET['id'];//recebe o id passado na url
$sql = mysql_query("SELECT * FROM noticia WHERE id={$id}") or die (mysql_error());
$resultado = mysql_fetch_object($sql);
//aki você exibe os dados
echo "<font color='#111111' face='Trebuchet MS, Arial, Helvetica, sans-serif' size='3'/><b>$resultado->titulo</b></p><font color='#444444' face='Trebuchet MS, Arial, Helvetica, sans-serif' size='2'/> <font color='#444444' face='Trebuchet MS, Arial, Helvetica, sans-serif' size='2'/><br />$resultado->noticia<center><br />$resultado->video</center><hr width='490' align='center' color='#E5E5E5'/><br />";
?>

Bom galera, espero que não seja um pouco demais, mas estou aprendendo php e ainda não consegui incluir a paginação mesmo vendo outros topicos.

valeu, abraço!!!

#2 Eng-Haw

Eng-Haw

    Novato no fórum

  • Usuários
  • 4 posts
  • Sexo:Masculino
  • Localidade:São José do Rio Preto

Posted 26/09/2010, 20:43

Galera vejam o que eu fiz agora, o problema é como encaixar direito o negócio

aparece a paginação la em baixo, mas quando vc clica vai para uma pagina vazia, mas parece que agora ja estou mais perto de conseguir, outra coisa que notei é que fala que foram encontrados 5 resultados mesmo que tenham mais que isso.

Aparece 5 que é exatamente o que eu coloquei por pagina para testar.

Se alguem poder me dar um toque eu agradeço
segue codigo modificado

<?php 


include "conexao.php"; 

if (!isset($_GET["pagina"])) { 
$pagina = 1; 
} 
else { 
$pagina = $_GET["pagina"]; 

} 

$max=5; 



$inicio = $pagina - 1; 
$inicio = $max * $inicio; 

$sql=("SELECT * FROM noticia"); 

$query=mysql_query($sql); 
$total=mysql_num_rows($query); 

if ($total == 0) 
echo "<center>Nenhum registro encontrado!</center><br />"; 
else 

// Recuperamos a ação enviada pelo formulário 
$a = $_GET['a']; 

// Verificamos se a ação é de busca 
if ($a == "buscar") { 

// Pegamos a palavra 
$palavra = trim($_POST['palavra']); 

// Verificamos no banco de dados produtos equivalente a palavra digitada 
$sql2 = mysql_query("SELECT * FROM noticia WHERE noticia LIKE '%".$palavra."%' ORDER BY id DESC LIMIT $inicio,$max "); 

// Descobrimos o total de registros encontrados 
$numRegistro = mysql_num_rows($sql2); 

// Se houver pelo menos um registro, exibe-o 
if ($numRegistro != 0) { 
echo"<center><font color=\"silver\" size='2'/>".$numRegistro." resultados encontrados com a palavra \"".$palavra."\".</font><br /><br /></center>"; 
// Exibe os produtos e seus respectivos preços 

?> 
<?php 

$i = 0; 
while ($resultado = mysql_fetch_object($sql2)) { 
// se a divisão de i com 3 sobrar 0 então pule de linha 
if($i % 4 == 0){	
} 
// Exibimos o resultado 

echo "<a href='resultados_da_busca.php?id={$resultado->id}'>{$resultado->titulo}</a>"; 
echo "<br />"; 
echo "<br />"; 
echo "<hr width=\"490\" align=\"center\" color=\"#CCCCCC\"/><br />"; 
$i++; 


} 


// Se não houver registros 
} else { 
echo "Nenhuma noticia foi encontrada com a palavra ".$palavra."<br /><br />"; 


} 



?> 

<center> 

<?php 
// Calculando pagina anterior 
echo "<br />"; 
$menos = $pagina - 1; 
// Calculando pagina posterior 
$mais = $pagina + 1; 
$pgs = ceil($total / $max); 
if($pgs > 1 ) 
{ 
if($menos >0) 
echo "<a href=\"?pagina=$menos\" class='texto_paginacao'>Anterior</a> "; 

if (($pagina-4) < 1 ) 

$anterior = 1; 

else 
$anterior = $pagina-4; 

if (($pagina+4) > $pgs ) 
$posterior = $pgs; 
else 

$posterior = $pagina + 4; 

for($i=$anterior;$i <= $posterior; $i++) 
if($i != $pagina) 

echo " <a href=\"?pagina=".($i)."\" class='texto_paginacao'>$i</a>"; 

else 
echo " <strong class='texto_paginacao_pgatual'>".$i."</strong>"; 

if($mais <= $pgs) 
echo " <a href=\"?pagina=$mais\" class='texto_paginacao'>Proxima</a>"; 
} 

?> 

</center> 
<?php }?> 






1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq