Paginação com qualidade em PHP

Publicado por Eliel Ulisses Falcucci de Paula 01/03/2006

[ Hits: 7.205 ]

Homepage: www.elieldepaula.com.br

Download pagina.php




Este é mais um script da minha coleção particular, ele faz uma paginação de qualidade sobre os dados de um banco MySQL.

O código como sempre está muito comentado e é altamente indicado para os iniciantes.

Dúvidas email-me on:
elieldepaula@gmail ou contato@whdesign.com.br

Posts: www.whdesign.com.br/forum

Abraços.

  



Esconder código-fonte

<?php
/*

Palmas - TO | 01 de Março de 2006.

Programa que exibe uma lista de registros em um banco de dados MySQL e faz a paginação.
Crie um banco de dados e use esse dump que mando logo abaixo.
Qualquer dúvida email-me:

Eliel de Paula | contato@whdesign.com.br

######### DUMP #########

#
# Estrutura da tabela `fotos`
#

CREATE TABLE fotos (
  cod_foto int(11) NOT NULL auto_increment,
  fot_foto char(40) NOT NULL default '',
  fot_click char(40) NOT NULL default '',
  cob_pasta char(40) NOT NULL default '',
  PRIMARY KEY  (cod_foto)
) TYPE=MyISAM;

#
# Extraindo dados da tabela `fotos`
#

INSERT INTO fotos VALUES (1, '1', '3', 'novo');
INSERT INTO fotos VALUES (2, '2', '6', 'novo');
INSERT INTO fotos VALUES (3, '3', '0', 'novo');
INSERT INTO fotos VALUES (4, '4', '1', 'novo');
INSERT INTO fotos VALUES (5, '5', '10', 'novo');
INSERT INTO fotos VALUES (6, '6', '14', 'novo');
INSERT INTO fotos VALUES (7, '1', '7', 'teste');
INSERT INTO fotos VALUES (8, '2', '3', 'teste');
INSERT INTO fotos VALUES (9, '3', '4', 'teste');
INSERT INTO fotos VALUES (10, '4', '3', 'teste');
INSERT INTO fotos VALUES (11, '5', '15', 'teste');
INSERT INTO fotos VALUES (12, '6', '23', 'teste');
INSERT INTO fotos VALUES (13, '1', '0', 'teste_2');
INSERT INTO fotos VALUES (14, '2', '0', 'teste_2');
INSERT INTO fotos VALUES (15, '3', '0', 'teste_2');
INSERT INTO fotos VALUES (16, '4', '0', 'teste_2');
INSERT INTO fotos VALUES (17, '5', '0', 'teste_2');
INSERT INTO fotos VALUES (18, '6', '0', 'teste_2');
INSERT INTO fotos VALUES (19, '1', '0', 'eliel');
INSERT INTO fotos VALUES (20, '2', '0', 'eliel');
INSERT INTO fotos VALUES (21, '3', '0', 'eliel');
INSERT INTO fotos VALUES (22, '4', '0', 'eliel');
INSERT INTO fotos VALUES (23, '5', '0', 'eliel');
INSERT INTO fotos VALUES (24, '1', '0', 'eliel');
INSERT INTO fotos VALUES (25, '2', '0', 'eliel');
INSERT INTO fotos VALUES (26, '3', '0', 'eliel');
INSERT INTO fotos VALUES (27, '4', '0', 'eliel');
INSERT INTO fotos VALUES (28, '5', '0', 'eliel');
INSERT INTO fotos VALUES (29, '1', '0', 'teste_4');
INSERT INTO fotos VALUES (30, '2', '0', 'teste_4');
INSERT INTO fotos VALUES (31, '3', '0', 'teste_4');
INSERT INTO fotos VALUES (32, '4', '0', 'teste_4');
INSERT INTO fotos VALUES (33, '5', '0', 'teste_4');
INSERT INTO fotos VALUES (34, '6', '0', 'teste_4');
INSERT INTO fotos VALUES (35, '7', '0', 'teste_4');
INSERT INTO fotos VALUES (36, '8', '2', 'teste_4');
INSERT INTO fotos VALUES (37, '9', '2', 'teste_4');
INSERT INTO fotos VALUES (38, '10', '2', 'teste_4');
INSERT INTO fotos VALUES (39, '1', '0', 'teste');
INSERT INTO fotos VALUES (40, '2', '0', 'teste');
INSERT INTO fotos VALUES (41, '3', '0', 'teste');
INSERT INTO fotos VALUES (42, '4', '0', 'teste');
INSERT INTO fotos VALUES (43, '5', '0', 'teste');
INSERT INTO fotos VALUES (44, '6', '0', 'teste');

########## FIM DO DUMP #########

*/

#
# Paginação em php
#

// Título:
echo("<b><font face='arial' size='2' color='990000'>Paginação em PHP</font></b><br><br>");

// Conecta com o banco:
$con = mysql_connect("localhost", "nobody");
mysql_select_db("base_de_dados", $con);

// Primeiro comando SQL:
$comando_1 = mysql_query("SELECT * FROM fotos", $con);

// Declara o total de registros:
$total = mysql_num_rows($comando_1);

// Declara a primeira página:
$pagina = $_GET["pagina"];
if($pagina == ""){
   $pagina = "1";
   }

// Declara o número máximo de registros:
$maximo = "6";

// Calcula o registro inicial:
$inicio = $pagina -1;
$inicio = $maximo*$inicio;

// Comando SQL:
$comando_2 = mysql_query("SELECT * FROM fotos ORDER BY cod_foto LIMIT $inicio,$maximo", $con);

// Exibe o total de registros:
echo("Temos <b>".mysql_num_rows($comando_1)."</b> registros cadastrados.<hr size='1' color='#ff0000'>");

// Executa o comando 2:
while($res = mysql_fetch_array($comando_2)){

$cod_foto = $res["cod_foto"];
echo($cod_foto."<br>");

}

// Calculando pagina anterior 
$menos=$pagina-1; 

// Calculando pagina posterior 
$mais=$pagina+1; 

// Calculos para a mostragem de paginas 
$p_ini=$mais-1; 
$p_ini=$maximo*$p_ini; 

// Querys para a mostragem de paginas 
$comando_3=mysql_query("SELECT * FROM fotos LIMIT $p_ini,$maximo", $con); 
$p_total=mysql_num_rows($comando_3); 

// Mostragem de pagina 
if($menos>0) { 
   echo "<a href=\"pagina.php?pagina=$menos\">Página Anterior</a>   "; 
} if(mysql_num_rows($comando_3)>0) { 
   echo "   <a href=\"pagina.php?pagina=$mais\">Próxima Página</a>"; 
} 
?>

<br>
<form style="margin-top:0;margin-bottom:0;padding-top:0;padding-bottom:0;">

<?php
// Listando as paginas 
$i=1; 
$pgs=$total/$maximo; 
$formatado=number_format($pgs); 

if($formatado<$pgs) {  
   $formatado=$formatado+1; 
} 

echo "Página: $pagina "; 
?>

<select name="selector" onChange="eval(this.options[this.selectedIndex].value)" size="1">
<option value="null"></option>

<?php
while($i<=$formatado) { 
   echo "<option value=\"parent.location.href='pagina.php?pagina=$i';\">$i</option></p>\n"; 
   $i++; 
} 
?>

</select>
</form>

<?php

#
# Fim do Programa com paginação.
#

mysql_close($con);

?>

Scripts recomendados

adm pure-ftp+mysql

Consulta SPC

Hash MD5, whois, IP para hostname e checagem de portas

Sistema para postar fotos

Bomba de E-mail em PHP


  

Comentários
[1] Comentário enviado por everton3x em 01/02/2008 - 17:50h

legal o teu script, bom para que está iniciando, porém se vc precisa configurar um novo script para cada página/relatório que vc queira ter...
mas bem legal teu script


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts