dominios y alojamiento web en hostalia

Paginación con PHP y MySQL. Ejemplo 2

14 de agosto de 2003
Valoración del artículo:
Mostramos un script para realizar la paginación de resultados con PHP y MySQL. Ofrecemos el script para descarga con instrucciones para ponerlo en marcha.
Atención: Contenido exclusivo de DesarrolloWeb.com. No reproducir. Copyright.
La paginación de resultados con PHP es uno de los talleres más interesantes y prácticos que se pueden hacer con esta tecnología. Casi todos los sitios web que implementan algún tipo de búsqueda deben en algún momento utilizar la paginación de resultados para no arrojar una cantidad desmesurada de datos en una única página. Como se ha visto desde siempre en los buscadores tipo Google, es mucho mejor presentar los resultados en varias páginas distintas y colocar en la parte de abajo una lista de las páginas de resultados que la búsqueda ha encontrado.

Para realizar este ejercicio se ha utilizado una base de datos MySQL y programación utilizando la tecnología PHP.

Podemos ver el resultado que vamos a conseguir con este artículo ahora y así tendremos más facilidad de identificar las distintas partes del código que vamos a comentar.

Nota: La paginación de resultados ya se ha visto en un artículo anterior de PHP. En este caso ofrecemos otro ejemplo realizado por otro programador que seguro que nos sirve para hacernos una idea más global sobre como afrontar este tipo de problemas.

El código de este ejercicio, junto con algunas instrucciones para ponerlo en marcha, se puede descargar en este enlace.

Poner en marcha el ejemplo

En el propio código de la paginación se encuentran las instrucciones para ponerlo en marcha y explicaciones sobre el funcionamiento del script. En este texto se preproducen algunas de las notas ofrecidas para ponerlo en marcha.

1.- Copiar el fichero busqueda.php en cualquier directorio del servidor web
2.- Crear una base de datos llamado 'tpv' (si es diferente, deberíais cambiar el código)
3.- Cambiar los datos de conexión si son diferentes.
4.- Cargar la siguiente tabla en la base de datos:

CREATE TABLE comercios (
    co_id varchar(10) NOT NULL default '',
    co_nombre varchar(30) NOT NULL default '',
    co_pais varchar(30) NOT NULL default '',
    UNIQUE KEY co_id (co_id)
    ) TYPE=MyISAM;

5.- Realizar los siguientes insert


INSERT INTO comercios VALUES ('ESGR000002', 'PRUEBA 2', 'ESPAÑA');
INSERT INTO comercios VALUES ('ESGR000001', 'PRUEBA 1', 'ESPAÑA');
INSERT INTO comercios VALUES ('516', 'JUAN PEREZ', 'MEXICO');
INSERT INTO comercios VALUES ('984', 'ANTONIO RODRIGUEZ', 'MEXICO');
INSERT INTO comercios VALUES ('996', 'INDALECIO TRAVIANNI', 'ARGENTINA');
INSERT INTO comercios VALUES ('975', 'ABELARDO SAINZ', 'PERU');
INSERT INTO comercios VALUES ('111', 'JOSE TOLTACA', 'PERU');
INSERT INTO comercios VALUES ('332', 'RAIMUNDO ALONSO', 'ARGENTINA');
INSERT INTO comercios VALUES ('123', 'JUN JUANES', 'BRASIL');
INSERT INTO comercios VALUES ('585', 'JOAO PAMINHIO', 'BRASIL');
INSERT INTO comercios VALUES ('23432432', 'JOAQUIN DIAZ', 'ESPAÑA');

Por supuesto estos datos pueden ser los que queráis, solo sirve de ejemplo.

Una vez realizados todos estos pasos, ejecutar el fichero busqueda php... y a probar... :D

Nota: Al ser este un pequeño ejemplo, en el formulario de busqueda he dejado que busque el valor introducido en todos los campos.

El código del script se puede ver a continuación:

<?
    mysql_connect("localhost","root","");
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>ejemplo de paginación de resultados</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta http-equiv="Pragma" content="no-cache" />
<style type="text/css">
<!--
a.p:link {
    color: #0066FF;
    text-decoration: none;
}
a.p:visited {
    color: #0066FF;
    text-decoration: none;
}
a.p:active {
    color: #0066FF;
    text-decoration: none;
}
a.p:hover {
    color: #0066FF;
    text-decoration: underline;
}
a.ord:link {
    color: #000000;
    text-decoration: none;
}
a.ord:visited {
    color: #000000;
    text-decoration: none;
}
a.ord:active {
    color: #000000;
    text-decoration: none;
}
a.ord:hover {
    color: #000000;
    text-decoration: underline;
}
-->
</style>
</head>
<body bgcolor="#FFFFFF">
<script language="JavaScript">
function muestra(queCosa)
{
    alert(queCosa);
}
</script>
<div align="center"><strong><font color="#000000" size="2" face="Verdana, Arial, Helvetica, sans-serif">Paginación
de Resultados de una consulta SQL (sobre MySQL)<br><br><p><a href="http://www.pclandia.com">www.pclandia.com</a></p> </font></strong> </div>
<hr noshade style="color:CC6666;height:1px">
<br>
<?
//inicializo el criterio y recibo cualquier cadena que se desee buscar
$criterio = "";
$txt_criterio = "";
if ($_GET["criterio"]!=""){
   $txt_criterio = $_GET["criterio"];
   $criterio = " where co_id like '%" . $txt_criterio . "%' or co_nombre like '%" . $txt_criterio . "%' or co_pais like '%" . $txt_criterio . "%'";
}


$sql="SELECT * FROM tpv.comercios ".$criterio;
$res=mysql_query($sql);
$numeroRegistros=mysql_num_rows($res);
if($numeroRegistros<=0)
{
    echo "<div align='center'>";
    echo "<font face='verdana' size='-2'>No se encontraron resultados</font>";
    echo "</div>";
}else{
    //////////elementos para el orden
    if(!isset($orden))
    {
       $orden="co_id";
    }
    //////////fin elementos de orden

    //////////calculo de elementos necesarios para paginacion
    //tamaño de la pagina
    $tamPag=5;

    //pagina actual si no esta definida y limites
    if(!isset($_GET["pagina"]))
    {
       $pagina=1;
       $inicio=1;
       $final=$tamPag;
    }else{
       $pagina = $_GET["pagina"];
    }
    //calculo del limite inferior
    $limitInf=($pagina-1)*$tamPag;

    //calculo del numero de paginas
    $numPags=ceil($numeroRegistros/$tamPag);
    if(!isset($pagina))
    {
       $pagina=1;
       $inicio=1;
       $final=$tamPag;
    }else{
       $seccionActual=intval(($pagina-1)/$tamPag);
       $inicio=($seccionActual*$tamPag)+1;

       if($pagina<$numPags)
       {
          $final=$inicio+$tamPag-1;
       }else{
          $final=$numPags;
       }

       if ($final>$numPags){
          $final=$numPags;
       }
    }

//////////fin de dicho calculo

//////////creacion de la consulta con limites
$sql="SELECT * FROM tpv.comercios ".$criterio." ORDER BY ".$orden.",co_id ASC LIMIT ".$limitInf.",".$tamPag;
$res=mysql_query($sql);

//////////fin consulta con limites
echo "<div align='center'>";
echo "<font face='verdana' size='-2'>encontrados ".$numeroRegistros." resultados<br>";
echo "ordenados por <b>".$orden."</b>";
if(isset($txt_criterio)){
    echo "<br>Valor filtro: <b>".$txt_criterio."</b>";
}
echo "</font></div>";
echo "<table align='center' width='80%' border='0' cellspacing='1' cellpadding='0'>";
echo "<tr><td colspan='3'><hr noshade></td></tr>";
echo "<th bgcolor='#CCCCCC'><a class='ord' href='".$_SERVER["PHP_SELF"]."?pagina = ".$pagina."&orden=co_id&criterio=".$txt_criterio."'>Código</a></th>";
echo "<th bgcolor='#CCCCCC'><a class='ord' href='".$_SERVER["PHP_SELF"]."?pagina = ".$pagina."&orden=co_nombre&criterio=".$txt_criterio."'>Nombre</a></th>";
echo "<th bgcolor='#CCCCCC'><a class='ord' href='".$_SERVER["PHP_SELF"]."?pagina = ".$pagina."&orden=co_pais&criterio=".$txt_criterio."'>País</a></th>";
while($registro=mysql_fetch_array($res))
{
?>
   <!-- tabla de resultados -->
    <tr bgcolor="#CC6666" onMouseOver="this.style.backgroundColor='#FF9900';this.style.cursor='hand';" onMouseOut="this.style.backgroundColor='#CC6666'"o"];" onClick="javascript:muestra('<? echo "[".$registro["co_id"]."] ".$registro["co_nombre"]." - ".$registro["co_pais"]; ?>');">
    <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif" color="#FFFFCC"><b><? echo $registro["co_id"]; ?></b></font></td>
    <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif" color="#FFFFCC"><b><? echo $registro["co_nombre"]; ?></b></font></td>
    <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif" color="#FFFFCC"><b><? echo $registro["co_pais"]; ?></b></font></td>
    </tr>
   <!-- fin tabla resultados -->
<?
}//fin while
echo "</table>";
}//fin if
//////////a partir de aqui viene la paginacion
?>
    <br>
    <table border="0" cellspacing="0" cellpadding="0" align="center">
    <tr><td align="center" valign="top">
<?
    if($pagina>1)
    {
       echo "<a class='p' href='".$_SERVER["PHP_SELF"]."?pagina=".($pagina-1)."&orden=".$orden."&criterio=".$txt_criterio."'>";
       echo "<font face='verdana' size='-2'>anterior</font>";
       echo "</a> ";
    }

    for($i=$inicio;$i<=$final;$i++)
    {
       if($i==$pagina)
       {
          echo "<font face='verdana' size='-2'><b>".$i."</b> </font>";
       }else{
          echo "<a class='p' href='".$_SERVER["PHP_SELF"]."?pagina=".$i."&orden=".$orden."&criterio=".$txt_criterio."'>";
          echo "<font face='verdana' size='-2'>".$i."</font></a> ";
       }
    }
    if($pagina<$numPags)
   {
       echo " <a class='p' href='".$_SERVER["PHP_SELF"]."?pagina=".($pagina+1)."&orden=".$orden."&criterio=".$txt_criterio."'>";
       echo "<font face='verdana' size='-2'>siguiente</font></a>";
   }
//////////fin de la paginacion
?>
    </td></tr>
    </table>
<hr noshade style="color:CC6666;height:1px">
<div align="center"><font face="verdana" size="-2"><a class="p" href="index.php">::Inicio::</a></font></div>

<form action="busqueda.php" method="get">
Criterio de búsqueda:
<input type="text" name="criterio" size="22" maxlength="150">
<input type="submit" value="Buscar">
</form>

</body>
</html>
<?
    mysql_close();
?>


Se puede descargar aquí.

Compartir en redes sociales

Comentarios
Fueron enviados 61 comentarios al artículo
32 comentarios no revisados
29 comentarios revisados:
Por: Miguel Anguita
21/5/2004
Sería muy útil que se ampliara el artículo con la explicación de cómo hacer una búsqueda avanzada. El usuario escribe diversas palabras en varios campos y el programa busca en la BD los registros aque cumplen las condiciones, se podría usar AND, OR y > o bien < para los campos numéricos. Gracias.
Por: Martin
11/10/2004
Este scrip esta excelente !!! No solo funciona perfectamente sino que es sencillo y además tiene un buscador muy bueno...
Por: j0s
11/2/2006
si ta bueno el articulo ,, pero deberian corregir la parte del sql ...
donde co_id no debe ser de campo (varchar) si no de campo " int "(entero)
bueno.,porque tuve problemas al subir...menos mal me di cuenta :D jejje...saludos (y)
Funciona
Por: Manuel
13/6/2009
Funciona perfectamente; me ha venido genial. Gracias.

juan_ju...
no funciona
30/10/2009
a mi no me funciona para nada

edith_v...
Excelente artículo
22/11/2009
¡Muy buen artículo! Gracias!

innovar...
cogido
27/12/2009
debes corregir esta linea
if(!isset($_GET["pagina"]))
{
$pagina=1;
$inicio=1;
$final=$tamPag;
}else{
$pagina = $_GET["pagina"];
}

sine
separar el formulario de los resultados
10/2/2010
Me gustaría que los resultados no se muestren hasta que el usuario introduzca el "criterio" de búsqueda (tal como está configurado ahora, se muestran todos los registros de la tabla y se indica el total de registros sin haber buscado nada) ¿Alguien puede ayudarme en esto?
Excelente!!! justo lo que buscaba
Por: MABM
18/2/2010
Amigo buen dia, realmente me sirvio este articulo, solo que se deben realizar unos cambios en el para que cuando ejecutemos el archivo busqueda.php no se generen errores al inicio.
1.- Antes que nada debemos colocar bien el codigo de apertura de php, en el archivo aparece como: <? solamente, lo que debemos hacer es colocarlo asi <?php y listo.
2.- Undefined index: criterio in http://localhost/busqueda.php on line 104 o en la 62 cuando quitan los comentarios. Este error se presenta al cargar busqueda.php, esto se produce porque estamos capturando el valor de la variable criterio ($_GET["criterio"]) y esta variable lleva valor una vez que damos clic en el boton buscar. Entonces que hacer? cuando llamen al archivo busqueda.php agreguen ?criterio, quedando asi: http://localhost/busqueda.php?criterio y listo eliminamos ese error.
3.- Con el problema que no nos funciona la paginacion, es decir si damos clic en la pag. 2 el resultado es el mismo de la pagina en que nos encontramos, entonces debemos cambiar el codigo que se encuentra en la linea 130 y 136 que dice:
//pagina actual si no esta definida y limites
if(!isset($pagina))
{
$pagina=1;
$inicio=1;
$final=$tamPag;
}
este codigo lo debemos cambiar por:
//pagina actual si no esta definida y limites
if(!isset($_GET["pagina"]))
{
$pagina=1;
$inicio=1;
$final=$tamPag;
}
else
{
$pagina = $_GET["pagina"];
}

4.- Por ultimo, debemos eliminar las siguientes lineas:
<?
mysql_close();
?>
Estas cierran la conexion a la base de datos y son las ultimas 3 lineas del codigo, las quitamos y ya no deberian de presentarnos problemas.

Les agradezco que compartieran este codigo con nosotros, por lo mismo me vi obligado a realizar mis comentarios.

Saludos, desde Honduras.
No Funciona
20/2/2010
No funciona el tutorial....lo probe copiandolo y descargandolo.....cueck!!!
payuda con la paginacion
09/3/2010
para aquellos q le funciono correctamente me podrian pasar el codigo, todavia no la tengo tan clara con el php ,, pero lo probre le modifique el Get y funciona la primera paginacion pero cuando utilizo el buscador no pasa de la primera pagina aparecen las siguiente paginas pero cuando quiero ir a ellas directamente no pasa nada ,por favor a aquellos webmaster URGENTE AYUDA les paso el codigo ta basado en el ejemplo adaptado a mi tabla, me pueden corregir el error no lo encuentro y no se como hacerlo.
<?php

mysql_connect("localhost","root","");
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Consultas Sobre Productos</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta http-equiv="Pragma" content="no-cache" />
<style type="text/css">
<!--
a.p:link {
color: #0066FF;
text-decoration: none;
}
a.p:visited {
color: #0066FF;
text-decoration: none;
}
a.p:active {
color: #0066FF;
text-decoration: none;
}
a.p:hover {
color: #0066FF;
text-decoration: underline;
}
a.ord:link {
color: #000000;
text-decoration: none;
}
a.ord:visited {
color: #000000;
text-decoration: none;
}
a.ord:active {
color: #000000;
text-decoration: none;
}
a.ord:hover {
color: #000000;
text-decoration: underline;
}


-->
</style>
</head>
<body bgcolor="#FFFFFF">

<script language="JavaScript">
function muestra(queCosa)
{
alert(queCosa);
}
</script>
<div align="center" class=
"Estilo4">
<strong><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><br>

</font></strong><font color="#000000">
<p><strong><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><a href="http://www.insitegroup.com.ar">www.insitegroup.com.ar</a></font></strong></p>
</font> </div>
<hr noshade style="color:6699ff;height:1px">
<br>
<?
//inicializo el criterio y recibo cualquier cadena que se desee buscar
$criterio = "";
$txt_criterio = "";
if ($_GET["criterio"]!=""){
$txt_criterio = $_GET["criterio"];
$criterio = " where co_id like '%" . $txt_criterio . "%' or co_nombre like '%" . $txt_criterio . "%' or co_descrip like '%" . $txt_criterio . "%'";
}


$sql="SELECT * FROM tpv.comercios ".$criterio;
$res=mysql_query($sql);
$numeroRegistros=mysql_num_rows($res);
if($numeroRegistros<=0)
{
echo "<div align='center'>";
echo "<font face='verdana' size='-2'>No se encontraron resultados</font>";
echo "</div>";
}else{
//////////elementos para el orden
if(!isset($orden))
{
$orden="co_nombre";
}
//////////fin elementos de orden

//////////calculo de elementos necesarios para paginacion
//tamaño de la pagina
$tamPag=10;

//pagina actual si no esta definida y limites
if(!isset($_GET["pagina"]))
{
$pagina=1;
$inicio=1;
$final=$tamPag;
}else{
$pagina = $_GET["pagina"];
}
//calculo del limite inferior
$limitInf=($pagina-1)*$tamPag;

//calculo del numero de paginas
$numPags=ceil($numeroRegistros/$tamPag);
if(!isset($pagina))
{
$pagina=1;
$inicio=1;
$final=$tamPag;
}else{
$seccionActual=intval(($pagina-1)/$tamPag);
$inicio=($seccionActual*$tamPag)+1;

if($pagina<$numPags)
{
$final=$inicio+$tamPag-1;
}else{
$final=$numPags;
}

if ($final>$numPags){
$final=$numPags;
}
}

//////////fin de dicho calculo

//////////creacion de la consulta con limites
$sql="SELECT * FROM tpv.comercios ".$criterio." ORDER BY ".$orden.",co_nombre ASC LIMIT ".$limitInf.",".$tamPag;
$res=mysql_query($sql);

//////////fin consulta con limites
echo "<div align='center'>";
echo "<font face='verdana' size='-2'>encontrados ".$numeroRegistros." resultados<br>";
echo "ordenados por <b>".$orden."</b>";
if(isset($txt_criterio)){
echo "<br>Valor filtro: <b>".$txt_criterio."</b>";
}
echo "</font></div>";
echo "<table align='center' width='100%' border='0' cellspacing='1' cellpadding='0'>";
echo "<tr><td colspan='3'><hr noshade></td></tr>";
echo "<th bgcolor='#99ccff'><a class='ord' href='".$_SERVER["PHP_SELF"]."?pagina=".$pagina."&orden=co_id&criterio=".$txt_criterio."'>Código</a></th>";
echo "<th bgcolor='#99ccff'><a class='ord' href='".$_SERVER["PHP_SELF"]."?pagina=".$pagina."&orden=co_nombre&criterio=".$txt_criterio."'>Producto</a></th>";
echo "<th bgcolor='#99ccff'><a class='ord' href='".$_SERVER["PHP_SELF"]."?pagina=".$pagina."&orden=co_descript&criterio=".$txt_criterio."'>Descripcion</a></th>";
echo "<th bgcolor='#99ccff'><a class='ord' href='".$_SERVER["PHP_SELF"]."?pagina=".$pagina."&orden=co_precios=".$txt_criterio."'>Precio</a></th>";
echo "<th bgcolor='#99ccff'><a class='ord' href='".$_SERVER["PHP_SELF"]."?pagina=".$pagina."&orden=Imagen&criterio=".$txt_criterio."'>Imagen</a></th>";
while($registro=mysql_fetch_array($res))
{
?>

<!-- tabla de resultados -->
<tr bgcolor="#6699ff" onMouseOver="this.style.backgroundColor='#33CC33';this.style.cursor='hand';" onMouseOut="this.style.backgroundColor='#6666ff'"o"];" onClick="javascript:muestra('<? echo "[".$registro["co_id"]."] ".$registro["co_nombre"]." - ".$registro["co_descrip"]; ?>');">
<td><font size="2" face="Verdana, Arial, Helvetica, sans-serif" color="#FFFFCC"><b><? echo $registro["co_id"]; ?></b></font></td>
<td><font size="2" face="Verdana, Arial, Helvetica, sans-serif" color="#FFFFCC"><b><? echo $registro["co_nombre"]; ?></b></font></td>
<td><font size="2" face="Verdana, Arial, Helvetica, sans-serif" color="#FFFFCC"><b><? echo $registro["co_descrip"]; ?></b></font></td>
<td><font size="2" face="Verdana, Arial, Helvetica, sans-serif" color="#FFFFCC"><b><? echo $registro["co_precios"]; ?></b></font></td>
<td><font size="2" face="Verdana, Arial, Helvetica, sans-serif" color="#FFFFCC"><b><? echo $registro["Imagen"]; ?></b></font></td>
</tr>
<!-- fin tabla resultados -->
<?
}//fin while
echo "</table>";
}//fin if
//////////a partir de aqui viene la paginacion
?>
<br>
<table border="0" cellspacing="1" cellpadding="0" align="center">
<tr><td align="center" valign="top" bgcolor="#FFFFFF">
<?
$pagina = $_GET["pagina"];
if($pagina>1)
{
echo "<a class='p' href='".$_SERVER["PHP_SELF"]."?pagina=".($pagina-1)."&orden=".$orden."&criterio=".$txt_criterio."'>";
echo "<font face='verdana' size='-2'>anterior</font>";
echo "</a>&nbsp;";
}

for($i=$inicio;$i<=$final;$i++)
{
if($i==$pagina)
{
echo "<font face='verdana' size='-2'><b>".$i."</b>&nbsp;</font>";
}else{
echo "<a class='p' href='".$_SERVER["PHP_SELF"]."?pagina=".$i."&orden=".$orden."&criterio=".$txt_criterio."'>";
echo "<font face='verdana' size='-2'>".$i."</font></a>&nbsp;";
}
}
if($pagina<$numPags)
{
echo "<a class='p' href='".$_SERVER["PHP_SELF"]."?pagina=".($pagina+1)."&orden=".$orden."&criterio=".$txt_criterio."'>";
echo "<font face='verdana' size='-2'>siguiente</font></a>";
}
//////////fin de la paginacion
?>
</td>
</tr>
</table>
<hr noshade style="color:#6699ff;height:1px">
<div align="center"><font face="verdana" size="-2"><a class="p" href="index.php">::Inicio::</a></font></div>

<form action="busqueda.php" method="get">
Criterio de búsqueda:
<input type="text" name="criterio" size="22" maxlength="150">
<input type="submit" value="Buscar">
</form>

</body>
</html>
paginador
Por: ose Miguel
06/4/2010
Nesesito ayuda nesesito un paginador para esta base de datos:

/*
MySQL Data Transfer
Source Host: localhost
Source Database: web
Target Host: localhost
Target Database: web
Date: 06/04/2010 11:29:19 a.m.
*/

SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for maguicta
-- ----------------------------
CREATE TABLE `maguicta` (
`id` int(11) NOT NULL auto_increment,
`nombre` varchar(40) collate latin1_general_ci default NULL,
`mail` varchar(50) collate latin1_general_ci default NULL,
`filen` varchar(20) collate latin1_general_ci default NULL,
`vercion` varchar(20) collate latin1_general_ci default NULL,
`Seanson` varchar(15) collate latin1_general_ci default NULL,
`tipofile` varchar(15) collate latin1_general_ci default NULL,
`lick` text collate latin1_general_ci NOT NULL,
`server` varchar(25) collate latin1_general_ci default NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;

-- ----------------------------
-- Records
-- ----------------------------
y me gustaria mostrar los datos en un paginador si me pueden ayudar se los agradeceria mucho....
de antemano gracias...

abccorp
Muy Bueno
06/5/2010
Esta exelente tu script gracias....y con modificaciones es mucho mas potente
de lujo
Por: mjesore
27/7/2010
gracias por este script me funciono muy bien
sujerencia
Por: alvaro
30/7/2010
me parece excelente labor mostrar el codigo pero sabes q se podria hacer
comentar por modulos para q un aprendiz lo entienda mucho mejor aunque es muy claro solo era eso cuitae cualquier cosita me escriben al correo q les dejo

enrique...
correccion
08/9/2010
el script es EXCELENTE! un buen ejemplo para comenzar! Pero el error de la paginacion q no slata es que deben inicializar la variable pagina en valor no en 1, ya q al empezar con valor 1 menos 1 (o sea cero) y multiplicar por tampag, siempre su valor sera CERO y no avanzara, por q liminf es CERO, lo estoy probando.... pero en principio asi lo solucioné, Gracias a su Autor y estamso en contacto....
ASI es como me funciona
//pagina actual si no esta definida y limites
if(!isset($_POST["pagina"]))
{
===========================
en esta linea el error (el original dice que el valor es 1)
$pagina=2;
===========================
$inicio=1;
$final=$tamPag;
}else{
$pagina = $_POST["pagina"];
}

enrique...
disculpas
09/9/2010
no hagan caso a mi correccion anterior, la solucion fue puntillosamente tomar el fuente y anduvo ok. Seguira evolucionandolo y si lo mejoro lo subo. Muchas Gracias y te felicito!!! Saludos

giancar...
falta seleccionar la base de datos
14/9/2010
en este codigo aun falta chekar que base de datos se conecta por lo visto solo dice la tabla comercios y en el buscador es imprescindible colocar la base de datos a que se desea buscar

JoDiego
GRACIASS!!!
15/2/2011
Excelente articulo, muchas gracias.....funciona a la perfeccion.....hora de adaptarlo

bryan_c...
No Me funciona del todo
05/3/2011
Por mas que qlo e intentado no me funciana correctamente este es el erroe que meda
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:xampphtdocsBitacoraBDSusBCS.php on line 69
Y la verdad nose que hacer si alguie m epuede ayudar llevo dias trabajando y solo ocupo el buscador gracias

fersuas
paginacion
13/4/2011
Sres. he implementado este codigo de paginacion en mi tienda virtual, y cierto que me pagina todos los articulos, pero me esta volviendo loco el hecho que cuando esta tienda virtual no esta paginada, en cada articulo yo puedo ir a la eleccion de cantidad, y sobre todo caracteristicas, asi como stock etc., pero al paginarlo, no puedo redirigir el articulo, en su lugar me sale la ventanita windows con las caracteristicas que hay en el onclick, como hago para que me redireccione cada articulo a su imagen y diferentes caracteristicas particulares de cada articulo.
Gracias
paginación y soluciones simples
17/5/2011
Leer otras referencias sobre paginación, también publicadas en desarrolloweb, para cubrir la mayoría de las necesidades sin esfuerzo, por medio de scripts ya realizados.

Por ejemplo tienes el paginator ese y otra serie de scripts potentes que ya hacen la paginación por ti.

Saludos!
error comun por no haber hecho bien el recorsert
17/5/2011
Hola pogesma,

Está claro, por el error que te sale, que no tienes un recordset en la variable $res.
Tu consulta debe dar algún error.

Bergman...
Muy bueno
17/5/2011
Excelente

Krimen
problema
24/5/2011
hola bueno mi problema es ya cree la base de datos con su respectiva tabla "comercios" ya cree los insert como dice la tarea.
ahora donde encuentro este paso??? 1:Copiar el fichero busqueda.php en cualquier directorio del servidor web.
no aparece el link de descarga
muchas gracias
Elementos para el orden
19/6/2011
//->Bueno excelente ejemplo de paginacion, muy bueno.
//->solo quiero complementar en la LINEAS 118 HASTA LAS 128, CAMBIEN POR ESTO :
//////////elementos para el orden
if(!isset($_GET["orden"]))
{
$orden='cod_personal';//'cod_personal' lo pueden cambiar por el q deseen.
}
else {

$orden=$_GET["orden"];

}
//////////fin elementos de orden

//->y tambien tienen q cambiar en LA LINEA: 174 Y DEJARLO ASI:

$sql="SELECT * FROM hospital.personal ".$criterio." ORDER BY ".$orden. " ASC LIMIT ".$limitInf.",".$tamPag;

gabriel...
NO FUNCIONA PAGINACION
15/7/2011
Hola, la busqueda la realiza de manera excelente, pero cuando quiero mostrar la informacion de la sig. página, no pasa nada. Mi version de php es la 6.0.0-dev que viene con el appserv. Será que esta version genera alguna incompatibilidad?

AnaCM
cual es la mejor opcion para paginación
22/8/2011
Se trata sobre paginación en web.
Quiero saber que método resulta más óptimo en cuanto a tiempo de carga, cual es recomendable.

Si tengo n registros en una BD (por ejemplo trabajadores), llamar al total de estos registros al cargar la página y mostrarlos en un grid (usando javascript) según el tamaño de página que quiero usar, por ejemplo 10 registros en la primera página y al clickear en la 2da página mostrar los siguientes 10 y ocultar los 10 primeros y el resto, y asi por el resto de páginas.

En este primer caso la llamada a la BD es una sola vez, la primera vez que carga la página y para mostrar los datos los oculto o los hago visibles, usando javascript, según crea necesario.

La segunda opción sería la siguiente: la primera vez que carga la página cargo en un grid el número de registros que indica mi tamaño de página, por ejemplo 20, es decir hago la consulta a la BD por los primeros 20 registros, y si clickean en la página 2 hago nuevamente la consulta a la BD por los siguientes 20 registros y así con el resto de páginas.

En este segundo caso se estaría accediendo a la base de datos por cada consulta a cada página, pero la cantidad de información que cargaría sería menor.

¿Cual resulta más óptimo?.

También deseo saber cómo realiza la paginación el GridView del ASP, y el RADGridView del Telerik, ya que estos son objeto del servidor, si por cada vez que se hace click en un nro de página van al servidor, o es que hacen inicialmente la carga total de los datos y usan javascript para mostrar y ocultar datos.

De antemano gracias por aclarar mis dudas.

Ana.

CLuiz10...
duda
31/8/2011
Disculpa las molestias pero he echo todo lo que indicas pero me tira un error

"; echo "No se encontraron resultados"; echo ""; }else{ //////////elementos para el orden if(!isset($orden)) { $orden="co_id"; } //////////fin elementos de orden //////////calculo de elementos necesarios para paginacion //tamaño de la pagina $tamPag=3; //pagina actual si no esta definida y limites if(!isset($pagina)) { $pagina=1; $inicio=1; $final=$tamPag; } //calculo del limite inferior $limitInf=($pagina-1)*$tamPag; //calculo del numero de paginas $numPags=ceil($numeroRegistros/$tamPag); if(!isset($pagina)) { $pagina=1; $inicio=1; $final=$tamPag; }else{ $seccionActual=intval(($pagina-1)/$tamPag); $inicio=($seccionActual*$tamPag)+1; if($pagina<$numPags) { $final=$inicio+$tamPag-1; }else{ $final=$numPags; } if ($final>$numPags){ $final=$numPags; } } //////////fin de dicho calculo //////////creacion de la consulta con limites $sql="SELECT * FROM proyecto.comercios ".$criterio." ORDER BY ".$orden.",co_id ASC LIMIT ".$limitInf.",".$tamPag; $res=mysql_query($sql); //////////fin consulta con limites echo "
"; echo "encontrados ".$numeroRegistros." resultados
"; echo "ordenados por ".$orden.""; if(isset($txt_criterio)){ echo "
Valor filtro: ".$txt_criterio.""; } echo "
"; echo ""; echo ""; echo ""; echo ""; echo ""; while($registro=mysql_fetch_array($res)) { ?> ');"> "; }//fin if //////////a partir de aqui viene la paginacion ?>
Código Nombre País

1) { echo ""; echo "anterior"; echo " "; } for($i=$inicio;$i<=$final;$i++) { if($i==$pagina) { echo "".$i." "; }else{ echo ""; echo "".$i." "; } } if($pagina<$numPags) { echo " "; echo "siguiente"; } //////////fin de la paginacion ?>
ya le he movido pero no le encuentro tienes alguna sugerencia=?

Manuales relacionados
Categorias relacionadas
El autor
Lectura recomendada
Compra este libro en Agapea, la librería urgente a domicilio.
Últimas noticias
Donaciones
Si piensas que te hemos ayudado y merecemos tu apoyo económico...