Foros del Web » Programando para Internet » PHP »

Paginado de array

Estas en el tema de Paginado de array en el foro de PHP en Foros del Web. Código PHP: <? /* ------------------------------------------- * Nombre Script:Slice.php * Descripcion: Paginado usando Arrays * Por: Raynier Mozo (Klulo) * [email][email protected][/email] * -------------------------------------------*/ ?> <html> <body> <link rel="stylesheet" href="estilos.css" type="text/css"> <?php //archivo de conexcion hacia l abse de datos include( "conec1.php" );                                                             //Variable que define el tamaño de la pagina $tamano = 25 ; //consulta a la base de datos $consu_even ...
  #1 (permalink)  
Antiguo 21/09/2003, 11:32
 
Fecha de Ingreso: febrero-2003
Ubicación: Guanare
Mensajes: 90
Antigüedad: 14 años, 10 meses
Puntos: 0
Paginado de array

Código PHP:
<?
/* -------------------------------------------
* Nombre Script:Slice.php
* Descripcion: Paginado usando Arrays
* Por: Raynier Mozo (Klulo)
* [email][email protected][/email]
* -------------------------------------------*/
?>
<html>
<body>
<link rel="stylesheet" href="estilos.css" type="text/css">
<?php
//archivo de conexcion hacia l abse de datos
include("conec1.php");                                                            
//Variable que define el tamaño de la pagina
$tamano=25;
//consulta a la base de datos
$consu_even="select telefono,direccion from telef where codest <> ' ' and estgeo='pt' and codzona='gu01' order by codest asc";
$consu_even_query=mysql_query($consu_even);
//Carga llos arrays con los datos encontrados
while(list($a,$b,,,$c,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)=mysql_fetch_row($consu_even_query))
{
    
$i++;
    
$t[$i]=$a;
    
$d[$i]=$b;
}
//Si es la primera vez que carga la pagina define la variable incio a 0
if (!isset($inicio))
echo 
$inicio=0;    

//Carga un array con una porcion de los datos encontrados limitado por $inicio y $tamaño
$matriz=array_slice($t,$inicio,$tamano );
$direcc=array_slice($d,$inicio,$tamano );
//muestra la cabecera de la pagina en una tabla
echo "<table width='522' border='0' cellpadding='0' cellspacing='0' class='tabla'>";
echo 
"<tr>"
echo 
"<td width='77' height='20' valign='middle' align='center' bgcolor='#3399CC'><font face='Arial Narrow' size='2'>TELEFONO</font></td>";
echo 
"<td width='445' valign='middle' align='center' bgcolor='#33CCFF'><font face='Arial Narrow' size='2'>DIRECCION</font></td>";
echo 
"</tr>";
//Muestra los datos cargados en  $matriz 
for ($a=0$a count($matriz); $a++)
{
    echo 
"<tr>"
    echo 
"<td valign='middle' height='20' bgcolor='#3399CC' align='center'><font face='Arial Narrow' size='2'>$matriz[$a]</font></td>";
    echo 
"<td valign='middle' bgcolor='#33CCFF' align='left'>$direcc[$a]</td>";
      echo 
"</tr>";
    
}
?>
</table>
<table width="522" border="0" cellpadding="0" cellspacing="0" class='tabla'>
  <tr> 
    <td width="112" height="52" valign="middle" align="center">&nbsp;</td>
    <td width="10"></td>
    <td width="110" valign="middle" align="center"> 
<?
    
// Si se esta en la segunda pagina o sucesivas
    
if ($inicio >= $tamano 
    {
?>
        <FORM NAME="P" ACTION="<?=$PHP_SELF?>" METHOD="POST">
        <INPUT TYPE="HIDDEN" NAME="inicio" VALUE="<?echo $inicio $tamano?>">
        <INPUT TYPE="SUBMIT" VALUE="Anterior">
        </FORM>
<?
    
}
?>
    </td>
    <td width="10"></td>
    <td width="115" valign="middle" align="center">     
<?
    
// Si no se esta en la ultima pagina
    
if (($inicio $tamano) <= count($t)) 
    {
?>
        <FORM NAME="P" ACTION="<?=$PHP_SELF?>" METHOD="POST">
        <INPUT TYPE="HIDDEN" NAME="inicio" VALUE="<?echo $inicio $tamano?>">
        <INPUT TYPE="SUBMIT" VALUE="Siguiente">
        </FORM>
<?
    
}
?>
</td>
    <td width="165"></td>
  </tr>
</table>
</body>    
</html>
Pueden ayudar a optimizarlo, si encuentran errores me lo comunican gracias
  #2 (permalink)  
Antiguo 21/09/2003, 15:11
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 6 meses
Puntos: 16
Hola,

Bueno, lo primero que no me parece muy acertado el ejemplo de donde sacas el array. Hay formas mucho mas optimas de paginar resultados de consultas de base de datos.

Luego, tampoco le veo mucho sentido a usar array_slice(). Pra el bucle simplemente usando como indice inicial $inicio y recorrer $tamano elementos, hubiese bastado.

Y lo de usar un formulario para los botones de "anterior" y "siguiente" me parece un poco exagerado. A no ser que necesites un boton en lugar de un link.

Y por cierto, de la forma que accedes a $inicio parece que tu script solo funciona con register_globals a ON, lo que puede no ser lo normal. Usa $_POST, lo hara mas compatible.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:19.