Jump to content


Photo

Paginação Em Resultado De Busca


  • Faça o login para participar
3 replies to this topic

#1 Naty_Za

Naty_Za

    Normal

  • Usuários
  • 92 posts
  • Sexo:Feminino
  • Localidade:Campinas

Posted 16/08/2007, 14:59

Oi pessoal.. to com um probleminha...

to tentando implementar um script de paginação no resultado de busca do meu site..

só que assim: os registros aparecem somente na 1º página.. a partir da 2º fica em branco...

sendo q tem mais resultados a serem mostrados ainda....

pq será??? vou postar meu código:

[codebox]<?
include("config.php");

$link_p_pag = 5;
$reg_p_pag = 10;
$pag = $_GET['pag'];

$busca = mysql_query("SELECT count(*) FROM cadastros;");
$registros = mysql_result($busca,0);

$num_total_paginas = ($registros%$reg_p_pag==0)?$registros/$reg_p_pag:floor($registros/$reg_p_pag)+1;



if ($pag>$num_total_paginas)
echo "Error<br><br>";
else

if (!$pag)
$pag = 1;

$inicio = ($reg_p_pag*$pag)-$reg_p_pag;
echo "Inicia em: $inicio<br><br>";

if(!empty($HTTP_POST_VARS[palavra])) {
$palavra = str_replace(" ", "%", $HTTP_POST_VARS[palavra]); // Altera os espaços adicionando no lugar o simbolo %

$qr = "SELECT * FROM cadastros WHERE titulo LIKE '%".$palavra."%' OR cidade LIKE '%".$palavra."%' OR servicos LIKE '%".$palavra."%' OR estado LIKE '%".$palavra."%' OR palavras LIKE '%".$palavra."%' ORDER BY titulo ASC LIMIT $inicio, $reg_p_pag"; // definimos para buscar no campo1 e ordenar pelo campo que você quiser.
$result = @mysql_query($qr);

$sql = mysql_query($qr) or die (mysql_error()); // Executa a query no Banco de Dados

$total = mysql_num_rows($sql); // Conta o total ded resultados encontrados

echo "<font face=Verdana, Arial, Helvetica, sans-serif><font size=1>Sua busca retornou <b>$total</b> resultados.</font><br><br>\n"; // mostra quantos resultados retornou e logo depois exibe

while ($dados = mysql_fetch_array($sql)) {
$campo1 = $dados["titulo"];
$campo2 = $dados["endereco"];
$campo3 = $dados["cidade"];
$campo4 = $dados["tel"];
$campo5 = $dados["id"];
$campo6 = $dados["http"];
$campo7 = $dados["email"];
$campo8 = $dados["estado"];
$campo9 = $dados["servicos"];


echo "
<font face=Verdana, Arial, Helvetica, sans-serif><strong><font size=1><a href=\"http://$campo6\"
target=\"_blank\" >$campo1</strong></a></font><br>
$campo9 <BR>
$campo2<BR>
$campo3 / $campo8 <br>
Tel: $campo4<BR>
Email: <a href=mailto:$campo7>$campo7</a><BR>
<BR>
";
}

echo "<hr><br>";

$anterior = $pag-1;
if ($anterior<1)
echo "Anterior - ";
else
echo "<a href=\"{$_SERVER['PHP_SELF']}?pag=$anterior\">Anterior</a> - ";

for($i=1; $i<$pag; $i++)
if($i>=$pag-$link_p_pag)
echo "<a href=\"{$_SERVER['PHP_SELF']}?pag=$i\">$i</a> - ";

echo "<b>$pag</b>";

for($i=$pag+1; $i<=$num_total_paginas; $i++)
if($i<=$pag+$link_p_pag)
echo " - <a href=\"{$_SERVER['PHP_SELF']}?pag=$i\">$i</a>";

$proxima = $pag+1;
if ($proxima>$num_total_paginas)
echo " - Próxima";
else
echo " - <a href=\"{$_SERVER['PHP_SELF']}?pag=$proxima\">Próxima</a>";
}
?>[/codebox]

Me ajudem aí.. pls!!!!!

Valewww

ninguém??????????

Edição feita por: savior, 23/08/2007, 10:39.
Utilize tags [codebox] para códigos longos.


#2 The Cod

The Cod

    Turista

  • Usuários
  • 42 posts
  • Sexo:Não informado

Posted 16/08/2007, 15:14

Boas...

Amigo, teu código ta meio esquesito... veja esse exemplo de paginação abaixo, e resolva seu problema.

CREATE DATABASE paginar;

USE paginar;

CREATE TABLE `nomes` (
`id` INT( 5 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`nome` VARCHAR( 70 ) NOT NULL ,
`idade` VARCHAR( 70 ) NOT NULL
) ENGINE = MYISAM;

<?php$dbhost="localhost"; // host$dbname="paginar"; // Banco de dados$dbuser="USUARIO_DATABASE"; // usuario do bd$dbpasswd="SENHA_DATABASE"; // password do db$resultado_pagina="2"; // resultados por página$tabela="nomes"; // tabela do bd$conexao = @mysql_connect($dbhost, $dbuser, $dbpasswd) or die ("Não foi possível conectar-se ao servidor MySQL");$db = @mysql_select_db($dbname) or die ("Não foi possível selecionar o banco de dados <b>$dbname</b>");$sql=mysql_query("SELECT * FROM $tabela");$total=mysql_num_rows($sql);if($pagina=="") {$pagina="1";}$maximo=$resultado_pagina;$inicio=$pagina-1;$inicio=$maximo*$inicio;$query=mysql_query("SELECT * FROM $tabela LIMIT $inicio,$maximo");while($dados=mysql_fetch_array($query)) {extract($dados);$nome=$dados['nome'];$idade=$dados['idade'];echo "$nome<br>$idade";}?><?php$menos=$pagina-1;$mais=$pagina+1;$p_ini=$mais-1;$p_ini=$maximo*$p_ini;$p_query=mysql_query("SELECT * FROM $tabela LIMIT $p_ini,$maximo");$p_total=mysql_num_rows($p_query);echo "<center>";if($menos>0) {echo "<a href=\"?pagina=$menos\">:: anterior(es)</a> ";} else {echo ":: anterior(es)";}echo " - Página atual: (<b> $pagina </b>) - ";$paginar = $total/$maximo;if($paginar>$pagina) {echo  "<a href=\"?pagina=$mais\">próxima(s) ::</a>";} else {echo "próxima(s) ::";}echo "</center>";?><div align=right>Estamos com <b><?php echo $total; ?></b> entrada(s).<br>mostrando <b><?php echo $maximo; ?></b> entrada(s) por página.<br>mostrando <b><?php echo $paginar; ?></b> página(s).</div><?phpmysql_close($conexao);?>
Espero que ajude...

Atenciosamente.

Edição feita por: savior, 23/08/2007, 10:40.

Visitem também >>>> Web Aplicações
Visitem também >>>> Portal Masters - Fórum

#3 Naty_Za

Naty_Za

    Normal

  • Usuários
  • 92 posts
  • Sexo:Feminino
  • Localidade:Campinas

Posted 23/08/2007, 10:18

oi the cod!!

então, eu fiz esse seu exemplo de paginação.. e deu certinho... mas só q esse não aparece os numeros de páginas..

só mostra o próximo e anterior.. e eu gostaria, se possivel, de uma paginação q mostrasse quantas páginas tem..

tipo assim:

Anterior - 1 2 3 4 5 6 - Próximo

e outra coisa assim.. para somente listar todos os registro do banco, a minha paginação funciona... o problema está sendo inserir ela no resultado de busca...

Me ajudem pls!!

Valeewww

#4 bobmatador

bobmatador

    12 Horas

  • Usuários
  • 210 posts
  • Sexo:Masculino
  • Localidade:Curitiba - PR

Posted 23/08/2007, 16:51

Então,

Fiz o exemplo que vc pediu aqui com Anterior - 1 2 3 4 5 6 - Próxima

Peguei uma parte de um código meu aqui,
só trocar as variaveis

// Paginação dos resultados:
							$registros_pagina = 10;
							$pagina = htmlspecialchars($_GET["pag"]);

							$sql  = "SELECT * FROM faq_perguntas WHERE 1=1";
							if (!empty($pergunta))
							{
								$sql.= " AND pergunta LIKE '%".$pergunta."%'";
							}
							if (!empty($area))
							{
								$sql.= " AND id_categoria = '".$area."'";
							}
							if (!empty($area_post))
							{
								$sql.= " AND id_categoria = '".$area_post."'";	
							}
						 	$sql.= " ORDER BY id";
							$rs   = mysql_query($sql) or die (mysql_error());
							$qtde = mysql_num_rows($rs);
							
							$total_paginas = ($qtde % $registros_pagina == 0) ? $qtde / $registros_pagina : floor($qtde / $registros_pagina) + 1;
							$pagina = (empty($pagina)) ? 1 : $pagina;
							$inicio = ($registros_pagina * $pagina) - $registros_pagina;
							
							// div que centraliza as paginas:
							?>
								<div style="height: 20px; width: 500px; text-align: center">
							<?php
								// Link "Anterior":
								$anterior = $pagina - 1;
									if ($anterior < 1)
									{
										echo '&laquo; Anterior | ';
									}else{
										echo '<a href="faq.php?pag='.$anterior.'&amp;cat_id='.$area.'">&laquo; Anterior</a> | ';
									}
								
								
								// Páginas
								for ($i = 1; $i <= $total_paginas; $i++)
								{
									if ($i == $pagina)
									{
										echo $i.' | ';
									}else{
										echo '<a href="faq.php?pag='.$i.'&amp;cat_id='.$area.'">'.$i.'</a> | ';
									}
								}
								
								
								// Link "Próxima":
								$proxima = $pagina + 1;
									if ($proxima > $total_paginas)
									{
										echo 'Próxima &raquo;';
									}else{
										echo '<a href="faq.php?pag='.$proxima.'&amp;cat_id='.$area.'">Próxima &raquo;</a>';
									}								
							?>
								</div>
					<div id="listagem_faq">
						<ul>
							<?php
							// Busca os perguntas:
							$sql = "SELECT * FROM faq_perguntas WHERE 1=1";
							if (!empty($pergunta))
							{
								$sql.= " AND pergunta LIKE '%".$pergunta."%'";
							}
							if (!empty($area))
							{
								$sql.= " AND id_categoria = '".$area."'";
							}
							if (!empty($area_post))
							{
								$sql.= " AND id_categoria = '".$area_post."'";	
							}
							$sql.= " ORDER BY id LIMIT $inicio, $registros_pagina";
							$rs  = mysql_query($sql) or die (mysql_error());
							$qtde = mysql_num_rows($rs);
								$cont = 0;
								while ($dados = mysql_fetch_array($rs))
								{
									$cont++;
									?>
										<li><?php echo "<strong>".$cont.".&nbsp;".$dados["pergunta"]."</strong>"; ?></li>
										<li><?php echo $dados["resposta"]; ?></li>
									<?php	
								}

							?>	
						</ul>
					</div>

Sua fonte de Tutoriais na Web!
TutoriaisClube.com




0 user(s) are reading this topic

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

IPB Skin By Virteq