Abimael 0 Denunciar post Postado Dezembro 13, 2005 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
rsddaros 0 Denunciar post Postado Dezembro 13, 2005 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
Abimael 0 Denunciar post Postado Dezembro 13, 2005 Onde eu posso pegar este script? Compartilhar este post Link para o post Compartilhar em outros sites
wolfphw 60 Denunciar post Postado Dezembro 13, 2005 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
Abimael 0 Denunciar post Postado Dezembro 13, 2005 caramba!!! Valeu, não sei se vou entender, mas valeu mesmo, vou dar uma olhada. Compartilhar este post Link para o post Compartilhar em outros sites
rsddaros 0 Denunciar post Postado Dezembro 13, 2005 http://forum.imasters.com.br/index.php?showtopic=125127 FABYO Compartilhar este post Link para o post Compartilhar em outros sites
Abimael 0 Denunciar post Postado Dezembro 13, 2005 Ó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
Abimael 0 Denunciar post Postado Dezembro 13, 2005 Ninguem sabe???? :natalohmy: :natalohmy: Compartilhar este post Link para o post Compartilhar em outros sites
wolfphw 60 Denunciar post Postado Dezembro 13, 2005 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
Abimael 0 Denunciar post Postado Dezembro 14, 2005 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
Abimael 0 Denunciar post Postado Dezembro 14, 2005 wolfphw o código esta na mensagem de cima ok? Compartilhar este post Link para o post Compartilhar em outros sites
Abimael 0 Denunciar post Postado Dezembro 14, 2005 Alguem pode me ajudar?????? Compartilhar este post Link para o post Compartilhar em outros sites
wolfphw 60 Denunciar post Postado Dezembro 14, 2005 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
Abimael 0 Denunciar post Postado Dezembro 14, 2005 Falou!!!! Não tem pressa não, só não quero que se esqueça de mim!!!! Compartilhar este post Link para o post Compartilhar em outros sites
Abimael 0 Denunciar post Postado Dezembro 15, 2005 wolfphw voce não esqueceu de mim não né? Ainda não consegui resolver este problema de paginação. Compartilhar este post Link para o post Compartilhar em outros sites
Abimael 0 Denunciar post Postado Dezembro 16, 2005 :( Compartilhar este post Link para o post Compartilhar em outros sites
wolfphw 60 Denunciar post Postado Dezembro 16, 2005 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
Abimael 0 Denunciar post Postado Dezembro 17, 2005 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