Ver Mensaje Individual
  #2 (permalink)  
Antiguo 31/01/2002, 07:47
Avatar de chubu
chubu
 
Fecha de Ingreso: enero-2002
Ubicación: Buenos Aires
Mensajes: 133
Antigüedad: 17 años, 5 meses
Puntos: 0
Re: Paginar resultado de consulta sql con php

es algo relativamente sencillo, el mysql tiene una sentencia LIMIT, de esta forma podemos obtener una parte de un resultset, sin traer todo, por ejemplo

<pre>select * from personal limit 0,10 </pre>

esto traera los primeros 10 resultados, ya que se posará sobre la posición 0 del result y traera las primeras 10 ocurrencias.
Utilizando esto podemos armar una paginacion facilmente, algo asi...

el script recibira como parametros los que ya recibia tu script mas el parametro pag, que nos servira para saber que pagina mostrar, y en caso de no recibirlo lo pondremos en 1, para interpretar correctamente los datos a buscar, cuando los pasemos por GET (en el url) en la paginacion, les haremos un urlencode primero, entonces al comienzo del script debemos hacer urldecode.

<pre>$keyword=urldecode($keyword);
$value=urldecode($value); </pre>

primero obtienes el total de resultados para esto deberas separar la construccion de la sentencia sql en dos partes, una como la que ya tienes que solo armara la clausula WHERE, de modo tal que ese string quede algo asi
<pre>$sqlWhere=&quot;WHERE nombre like '$keyword'&quot;;[code]
luego otra parte que se encargara de calcular la cantidad de paginas, y ver que parte del result se debe mostrar, algo asi
[code]
if(empty($pag)) { $pag=1; }
// obtenemos el total
$sql=&quot;select count(*) from personal &quot;.$sqlWhere;
$res=mysql_query($sql);
list($total)=mysql_fetch_row($res);
//calculamos las paginas, redondeando hacia arriba el resultado
$paginas=ceil($total / 10);
//calculamos la posicion a mostrar
$pos=($pag - 1) * 10;
//obtenemos los datos
$sql=&quot;select * from personal limit $pos,10&quot;
$result=mysql_query($sql);


// aqui sigue todo tu codigo para mostrar el resultado


//ahora mostramos la paginacion al pie
for($i=1;$i&lt;=$paginas;$i++)
{
if($i&lt;&gt;$pos)
{
print(&quot; &lt;a href='&quot;.$PHP_SELF.&quot;?pag=$i&amp;value=&qu ot;.urlencode($value).&quot;&amp;keyword=&quot;.ur lencode($keyword).&quot;'&gt;$i&lt;/a&gt; &quot;);
}
else
{
print(&quot; $i &quot;);
}
}
</pre>