Ir para conteúdo

POWERED BY:

Arquivado

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

Abimael

Paginação de resultados

Recommended Posts

Bom dia pessoal.

 

Estou com uma dificuldade com paginação, peguei um código bem legal no site PHPBrasil sobre o assunto, foi o melhor código que eu encontrei na net. Funcionou muito bem, porem quando eu coloquei um campo para procura começou meus problemas, meu código é este:?

 

 

<?php

# session_start();

$conn = mysql_connect("localhost","root","123");

$banco = mysql_select_db("loja");

 

?>

<?php

$busca = "SELECT * FROM tbusuarios WHERE nome LIKE '$textfield%' ORDER BY codigo";

?>

<?php

$total_reg = "3"; // número de registros por página

?>

<?php

if (!$pagina) {

$pc = "1";

} else {

$pc = $pagina;

}

?>

<?php

$inicio = $pc - 1;

$inicio = $inicio * $total_reg;

 

?>

<?php

$limite = mysql_query("$busca LIMIT $inicio,$total_reg");

$todos = mysql_query("$busca");

 

$tr = mysql_num_rows($todos); // verifica o número total de registros

$tp = $tr / $total_reg; // verifica o número total de páginas

$total= ceil($tr /$total_reg )-1;

// vamos criar a visualização

while ($dados = mysql_fetch_array($limite)) {

$nome = $dados["nome"];

$codigo = $dados["codigo"];

echo "$codigo || $nome<br>";

}

 

?>

<form name="form1" method="post" action="">

<input type="text" name="textfield">

<input type="submit" name="Submit" value="Enviar">

</form>

<p> </p>

<p> </p>

<table width="10%" border="0" cellspacing="1" cellpadding="1">

<tr>

<?

if ($pc>1) {

?>

 

<td><a href='?pagina=<?echo $proximo;?>'><img src="Img_sistem/First.gif" width="18" height="13" border="0"></a></div></td>

<?

}

?>

<?

// agora vamos criar os botões "Anterior e próximo"

$anterior = $pc -1;

$proximo = $pc +1;

if ($pc>1) {

?>

<td><a href='?pagina=<?echo $anterior;?>'><img src="Img_sistem/Previous.gif" width="14" height="13" border="0"></a></div></td>

<?

}

 

if ($pc<$tp) {

?>

<td><a href='?pagina=<?echo $proximo;?> ?procura=><?$procura;?>'><img src="Img_sistem/next.gif" width="14" height="13" border="0"></a></div></td>

<td><a href='?pagina=<?echo $total+1;?>'><img src="Img_sistem/Last.gif" width="18" height="13" border="0"></a></div></td>

<?

}

 

 

?>

</tr>

</table>

<p></p>

 

acontece que na primeira vez que abre a tela vem todos o resultado do banco de dados, se você clicar nas setas verá que funciona corretamente, porem se você não estiver na primeira página e fizer uma pesquisa a pesquisa virá em branco, se fizer a pesquisa na primeira página vira o resultado, porem ao clicar nos botões de navegação você vai perceber que foi carregado o banco inteiro somente o select fez uma ordenação. Alguém tem um código de paginaçõe decente, ou sabe como resolver este problema?

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

tem um script do Fabyo no laboratorio de scripts.. que considero um dos melhore que ja vi sobre o assunto... muito facil entender como funciona..Tem que passar os parametros para o botão proximo e outros com o valor da consulta

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se quiser você pode utilizar o meu que eu fiz... ele recupera partes de busca...

 

To postando aki o código da páginação que esta num arquivo que se chama paginacao.php e uma página que chama e utiliza essa páginação que se chama adm_index.php

 

Tipo nessa página adm_index.php se prestar atenção vai ter um lugar no começo que ele precisa pra fazer a paginação.. saum alguns dados importantes que tem que ter na página, esses dados naum podem estar no arquivo da paginação por um motivo... que um SELECT lah em cima utiliza esses dados antes de utilizar a paginação...

 

 

 

paginacao.php

<style type="text/css"><!--.pgoff {font-family: Verdana, Arial, Helvetica; font-size: 12px; color: #FF0000; text-decoration: none}a.pg {font-family: Verdana, Arial, Helvetica; font-size: 12px; color: #003366; text-decoration: none}a:hover.pg {font-family: Verdana, Arial, Helvetica; font-size: 12px; color: #0066cc; text-decoration:underline}--></style><?php	$quant_pg = ceil($quantreg/$numreg);	$quant_pg++;?><table  border="0" cellpadding="1" cellspacing="0" bgcolor="#000000">  <tr>	<td><table border="0" cellpadding="1" cellspacing="0">	  <tr bgcolor="#DDFFFF">		<td width="80" align="left" bgcolor="#DDFFFF"><div align="center">			<?php if ( $pg > 0) { ?>			<a href="<?php echo $PHP_SELF."?pg=".($pg-1)."&$id_campo=$id&ebusca=$ebusca"; ?>" class="pg"><b>« anteriores</b></a>			<?php } else { echo "<font color=#CCCCCC>« anteriores</font>";} ?>		</div></td>		<td height="22" bgcolor="#DDFFFF"><div align="center">			 			<?php 		for($i_pg=1;$i_pg<$quant_pg;$i_pg++) {			if ($pg == ($i_pg-1)) {				echo "<span class=pgoff>[".$i_pg."]</span> ";				} else {					echo "<a href=".$PHP_SELF."?pg=".($i_pg-1)."&$id_campo=$id&ebusca=$ebusca class=pg><b>".$i_pg."</b></a> ";			}		} 	?> 		</div></td>		<td width="80" align="right" bgcolor="#DDFFFF"><div align="center">			<?php if (($pg+2) < $quant_pg) { ?>			<a href="<?php echo $PHP_SELF."?pg=".($pg+1)."&$id_campo=$id&ebusca=$ebusca"; ?>" class="pg"><b>próximos »</b></a>			<?php } else { echo "<font color=#CCCCCC>próximos »</font>";} ?>		</div></td>	  </tr>	</table></td>  </tr></table>

adm_index.php

<?php	include("../../myodbconct.php");	include("../valida.php");	include("../style.php");	include("../script.php");	//######### INICIO Paginação	$numreg = 20; // Numero de registro por página	if (!isset($pg)) {		$pg = 0;	}	$inicial = $pg * $numreg;	//######### FIM dados Paginação		$qcampo = $_GET[qcampo];	$ebusca = $_GET[ebusca];		if ($qcampo == 'not_data') {		$data_mostra = $ebusca;		$data_explode = explode("/",$ebusca);		if ($data_explode[0] < '10') {			$ebusca = $data_explode[2]."-".$data_explode[1]."-0".$data_explode[0];			} else {				$ebusca = $data_explode[2]."-".$data_explode[1]."-".$data_explode[0];		}	}		if ($qcampo != "" AND $ebusca != "") {		$sql = mysql_query("SELECT * FROM pla_noticia WHERE $qcampo LIKE '%$ebusca%' ORDER BY not_data DESC LIMIT $inicial, $numreg");		$sql_conta = mysql_query("SELECT not_id FROM pla_noticia WHERE $qcampo LIKE '%$ebusca%'");		} else {			$sql = mysql_query("SELECT * FROM pla_noticia ORDER BY not_data DESC LIMIT $inicial, $numreg");			$sql_conta = mysql_query("SELECT not_id FROM pla_noticia");	}		if ($qcampo == 'not_data') {		$ebusca = $data_mostra;	}		$quantreg = mysql_num_rows($sql_conta); // Quantidade de registros pra paginação?><html><head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Administrativo ::::::::::</title><style type="text/css"><!--.style1 {font-size: 10}--></style></head><body><?php include("../menu.php"); ?><table width="100%"  border="0" cellspacing="0" cellpadding="1">  <tr>	<td><span class="adm_titulo">:: Notícias ::</span></td>  </tr>  <tr>	<td height="1" bgcolor="#3399CC"></td>  </tr>  <tr>	<td height="10"></td>  </tr>  <tr>	<td bgcolor="#000000">	<table width="100%"  border="0" cellspacing="0" cellpadding="1">	<form name="form1" method="get" action="">	  <tr>		<td bgcolor="#DDFFFF"><table width="100%"  border="0" cellspacing="1" cellpadding="1">		  <tr>			<td width="100" align="center"><input type="button" name="Button" value="Cadastrar" class="imput" onclick="javascript:AbrePagina('adm_cad.php',640,450)"></td>			<td align="center"><table  border="0" cellspacing="0" cellpadding="0">			  <tr>				<td class="titulo_menu">Buscar:</td>				<td width="10"> </td>				<td><select name="qcampo" class="imput" id="qcampo">				  <option></option>				  <option value="not_id"<?php if($qcampo == "not_id") { echo " selected";}?>>Cod.</option>				  <option value="not_titulo"<?php if($qcampo == "not_titulo") { echo " selected";}?>>Título</option>				  <option value="not_mostrar"<?php if($qcampo == "not_mostrar") { echo " selected";}?>>Mostrar</option>				  <option value="not_destaque"<?php if($qcampo == "not_destaque") { echo " selected";}?>>Destaque</option>				  <option value="not_data"<?php if($qcampo == "not_data") { echo " selected";}?>>Data</option>				</select></td>				<td width="10"> </td>				<td><input name="ebusca" type="text" class="imput" id="ebusca" value="<?php echo $ebusca; ?>" size="20"></td>				<td width="10"> </td>				<td><input type="submit" name="Submit" value="Buscar" class="imput"></td>				<td width="10"> </td>				<td><a href="adm_index.php" class="leftmenu">mostrar tudo</a> </td>			  </tr>			</table></td>		  </tr>		</table></td>	  </tr>	</form>	</table></td>  </tr>  <tr>	<td height="10"></td>  </tr>  <tr>	<td align="center"><?php include("paginacao.php"); ?></td>  </tr>  <tr>	<td height="10"></td>  </tr>  <tr>	<td bgcolor="#000000"><table width="100%"  border="0" cellspacing="1" cellpadding="1">	  <tr bgcolor="#3399CC">		<td width="30" height="20" align="center"><span class="titulo_view">Del</span></td>		<td width="30" align="center" class="titulo_view">Edit</td>		<td width="30" align="center" class="titulo_view">Vis</td>		<td width="30" align="center" class="titulo_view">Cód</td>		<td width="50" align="center" class="titulo_view">Mostrar</td>		<td width="70" align="center" bgcolor="#3399CC" class="titulo_view">Data</td>		<td width="60" align="center" bgcolor="#3399CC" class="titulo_view">Destaque</td>		<td bgcolor="#3399CC" class="titulo_view"> Título</td>	  </tr><?php	while ($aux = mysql_fetch_array($sql)) {	$data = substr($aux["not_data"],8,2)."/".substr($aux["not_data"],5,2)."/".substr($aux["not_data"],0,4);?>	  <tr bgcolor="#DDFFFF">		<td height="20" align="center"><a href="javascript:AbrePagina('adm_del.php?cod=<?php echo $aux["not_id"]; ?>',640,280)"><img src="../images/icon_adm_del.gif" alt="Excluir Registro" width="17" height="15" border="0"></a></td>		<td align="center"><a href="javascript:AbrePagina('adm_edit.php?cod=<?php echo $aux["not_id"]; ?>',640,500)"><img src="../images/icon_adm_edit.gif" alt="Editar Registro" width="17" height="15" border="0"></a></td>		<td align="center"><a href="javascript:AbrePagina('adm_show.php?cod=<?php echo $aux["not_id"]; ?>',640,400)"><img src="../images/icon_adm_show.gif" alt="Visualizar Registro" width="17" height="15" border="0"></a></td>		<td align="center" class="conteudo"><?php echo $aux["not_id"]; ?></td>		<td align="center"><?php if($aux["not_mostrar"] == "on") { ?><img src="../images/icon_adm_conf_ok.gif" alt="Mostrar (on)" width="17" height="15"><?php } else { ?><img src="../images/icon_adm_conf_no.gif" alt="Não Mostrar (off)" width="17" height="15"><?php } ?></td>		<td align="center" bgcolor="#DDFFFF" class="conteudo"><?php echo $data; ?></td>		<td width="60" align="center" bgcolor="#DDFFFF" class="conteudo"><?php echo $aux["not_destaque"]; ?></td>		<td bgcolor="#DDFFFF" class="conteudo"> <?php echo $aux["not_titulo"]; ?></td>	  </tr><?php	}?>	</table></td>  </tr></table></body></html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ótimo o código, porem como todos os outros que eu encontrei na net, quando você inclui um form com um campo para o usuário digitar o que procura começa os erros. Gostaria de um exemplo de paginação com um campo para o usuário digitar o que procura, eu não consegui achar isso, e também não consigo adaptar estes códigos para fazer isso, ta difícil!!!! Me parece que é uma duvida que muitos tem.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tipo esse meu você tem 2 campos pra procura... um listmenu e um de texto...Posta ai todo seu código da pa´gina.. que eu adapto esse meu codigo pro seu

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu cará, eu vi que o seu está bem legal, porem como sou MUITO leigo no assunto não consegui entender nada, alias com a sua licença vou utilizar varias idéias suas no meu projeto, posso???Vou colocar o código básico que eu quero desenvolver o negocio é o seguinte:Um campo para digitar o nome que o usuário procura, e um botão ok. Apertou o botão aparece uma lista em uma tabela de todos os itens que começam com aquela palavra, ai começa a dificuldade que é fazer a paginação de acordo com a palavra que o usuário escreveu. Ai vai o código. Copiei o código do Fabyo, e tentei adaptar.

<form name="form1" method="post" action=""> <input name="txtbusca" type="text" id="txtbusca"> <input type="submit" name="Submit" value="Enviar"></form><?mysql_connect("localhost","root","123");mysql_select_db("loja");$re = mysql_query("SELECT count(*) as total FROM tbusuarios WHERE nome LIKE '$txtbusca%'");$total = mysql_result($re, 0, "total");$pagina = 0;if(isset($_GET["pagina"])) {$pagina = $_GET["pagina"];}$limite = 10;$paginas = ceil($total / $limite);$inicio = $pagina * $limite; $sql = mysql_query("SELECT * FROM tbusuarios WHERE nome LIKE '$txtbusca%' LIMIT $inicio, $limite"); $conta = mysql_num_rows($sql);while($l = mysql_fetch_array($sql)) {$nome = $l["nome"];echo $nome."<br>";}if($pagina > 0) {$menos = $pagina - 1;$$url = $_SERVER["PHP_SELF"]."?pagina=".$menos;echo "<a href=\"$url\">Anterior</a>"; }for($i = 1;$i < $paginas; $i++) { $url = $_SERVER["PHP_SELF"]."?pagina=".$i;echo " | <a href=\"$url\">$i</a>";}if($pagina < $paginas) {$mais = $pagina + 1;$url = $_SERVER["PHP_SELF"]."?pagina=".$mais;echo " | <a href=\"$url\">Próxima</a>";}?>

:natalsmile:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Jah jah eu mexo nesse seu código pra você.. eh que estamos em reuniao direto hoje aki na empresa.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta fazer assim...

 

você vai ter que criar um arquivo chamado paginacao.php e nele você vai colocar esse código

 

paginacao.php

<style type="text/css"><!--.pgoff {font-family: Verdana, Arial, Helvetica; font-size: 12px; color: #FF0000; text-decoration: none}a.pg {font-family: Verdana, Arial, Helvetica; font-size: 12px; color: #003366; text-decoration: none}a:hover.pg {font-family: Verdana, Arial, Helvetica; font-size: 12px; color: #0066cc; text-decoration:underline}--></style><?php	$quant_pg = ceil($quantreg/$numreg);	$quant_pg++;?><table  border="0" cellpadding="1" cellspacing="0" bgcolor="#000000">  <tr>	<td><table border="0" cellpadding="1" cellspacing="0">	  <tr bgcolor="#DDFFFF">		<td width="80" align="left" bgcolor="#DDFFFF"><div align="center">			<?php if ( $pg > 0) { ?>			<a href="<?php echo $PHP_SELF."?pg=".($pg-1)."&txtbusca=$txtbusca"; ?>" class="pg"><b>« anteriores</b></a>			<?php } else { echo "<font color=#CCCCCC>« anteriores</font>";} ?>		</div></td>		<td height="22" bgcolor="#DDFFFF"><div align="center">			 			<?php 		for($i_pg=1;$i_pg<$quant_pg;$i_pg++) {			if ($pg == ($i_pg-1)) {				echo "<span class=pgoff>[".$i_pg."]</span> ";				} else {					echo "<a href=".$PHP_SELF."?pg=".($i_pg-1)."&txtbusca=$txtbusca class=pg><b>".$i_pg."</b></a> ";			}		} 	?> 		</div></td>		<td width="80" align="right" bgcolor="#DDFFFF"><div align="center">			<?php if (($pg+2) < $quant_pg) { ?>			<a href="<?php echo $PHP_SELF."?pg=".($pg+1)."&txtbusca=$txtbusca"; ?>" class="pg"><b>próximos »</b></a>			<?php } else { echo "<font color=#CCCCCC>próximos »</font>";} ?>		</div></td>	  </tr>	</table></td>  </tr></table>
e esse eh o arquivo que faz a consulta... tipo em páginações você deve utilizar parametros GET pra recuperar das URLs...

 

e o código ficou assim...

 

pagina.php

<?php	mysql_connect("localhost","root","123");	mysql_select_db("loja");		$txtbusca = $_GET[txtbusca];	//######### INICIO Paginação	$numreg = 10; // Numero de registro por página	if (!isset($pg)) {		$pg = 0;	}		$inicial = $pg * $numreg;	//######### FIM dados Paginação		if ($txtbusca == "") {		$sql = mysql_query("SELECT * FROM tbusuarios LIMIT $inicial, $numreg");		$sql_conta = mysql_query("SELECT * FROM tbusuarios");		} else {			$sql = mysql_query("SELECT * FROM tbusuarios WHERE nome LIKE '$txtbusca%' LIMIT $inicial, $numreg");			$sql_conta = mysql_query("SELECT * FROM tbusuarios WHERE nome LIKE '$txtbusca%'");	} 	$quantreg = mysql_num_rows($sql_conta); // Quantidade de registros pra paginação?><form name="form1" method="GET" action=""><input name="txtbusca" type="text" id="txtbusca"><input type="submit" name="Submit" value="Enviar"></form><?	include ("paginacao.php");	while($l = mysql_fetch_array($sql)) {		$nome = $l["nome"];		echo $nome."<br>";	}?>
Essa minha paginação monta dessa forma... eh o emsmo que eu estou utilizando nessa página...

 

http://www.mt.gov.br/novo_site/versao1/roo...&estilo=cidadao

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara muito obrigado!!!! Perfeito era isso mesmo, me desculpe pelo o incomodo, mas valeu a pena pelo menos pra mim!!! Obrigado mesmo. Só tem um problema esta dando erro no anterior e próximo, mas isso eu acho que posso acertar. Outra coisinha, seria legal postar isso ai em algum lugar, pois sei que tem um monte de gente com esta duvida e não encontrei nada na net com relação a esta duvida, acho que vai ajudar muita gente.Veleu!!! :natallaugh: :natalbiggrin: :natalhappy: :natalsmile: :natalwink: :natalwink:

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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