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: </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!!!
Paginar Resultaso De Uma Busca
Started By Eng-Haw, 14/09/2010, 22:13
1 reply to this topic
#1
Posted 14/09/2010, 22:13
#2
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
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)










