Ver Mensaje Individual
  #5 (permalink)  
Antiguo 19/09/2012, 06:15
fr1974
 
Fecha de Ingreso: noviembre-2007
Mensajes: 498
Antigüedad: 16 años, 5 meses
Puntos: 20
Exclamación Respuesta: Separar en bucle por elementos

Código PHP:

<?php
/// Opciones gal,file o dir ///
$p_mode="file";
$p_cols="3";
$p_ruta_images="imagenes/banners";
$p_ruta_file="ejemplo.txt";
$p_ruta_dir="db_p/db_productos";
$p_number_elementos_pag="6";
$p_grupos_paginados="3";
///
?>

<?php
if ($p_mode=="file")
{
$p_file=file("".$p_ruta_file."");
$p_n_elements=0;
for(
$p=0;$p<sizeof($p_file);$p++)
{
$f_files[]=$p_file[$p];
$p_n_elements++;
}
}
?>


<?php
if ($p_mode=="gal" or $p_mode=="dir")
{

if (
$p_mode=="gal")
{
$p_dir="".$p_ruta_images."";
}
else
{
$p_dir=="".$p_ruta_dir."";
}

$p_n_elements=0;

$p_dir=opendir($p_dir);

while(
$file=readdir($p_dir))
{
if (
$file!="." && $file!=".." && $file!=".htaccess" && $file!="index.html" && $file!="Thumbs.db" && $file!="config.dat")
{
$p_n_elements++;
}
}
closedir($p_dir);

}
?>
<?php
$p_number_elements
="".$p_n_elements."";
$p_totales=ceil($p_number_elements/$p_number_elementos_pag);
$pag="".$_REQUEST['pag']."";
?>



<?
$back_total
="<a href=?pag=1>  <<</a>";
$next_total="<a href=?pag=$p_n_elements>  >></a>";
?>

<?php




if ($p_totales<$p_grupos_paginados)
{
$p_grupos_paginados="$p_totales";
}
else
{
$p_grupos_paginados="$p_grupos_paginados";
}



/// Si la página es cero ///
if ($pag==or $pag=="" or $pag<or $pag==1)
{
$p_ini=1;
$p_end="".$p_grupos_paginados."";


$p_ini_e="1";
$p_end_e="".$p_number_elementos_pag."";


$back="";
$next='<a href=?pag='.($pag+1).'>> </a>';

}
///



/// Si páginas superan el total ///
if ($pag>=$p_totales)
{

print 
"mayor";
$p_ini="".($p_totales)-($p_grupos_paginados)+(1)."";
$p_end="".$p_totales."";


$p_ini_e="".($p_n_elements)-($p_number_elementos_pag)+(1)."";
$p_end_e="".$p_n_elements."";


$back='<a href=?pag='.($pag-1).'>< </a>';
$next="";
}
///







if ($pag>&& $pag<$p_totales)
{



//if (($pag)+($p_grupos_paginados)>=$p_totales)
if ($pag>=$p_totales)
{

$p_ini="".($p_totales-$p_grupos_paginados)+(1)."";
$p_end="".$p_totales."";

$back='<a href=?pag='.($pag-1).'>< </a>';
$next='<a href=?pag='.($pag+1).'>> </a>';

$p_ini_e="".($p_n_elements)-($p_number_elementos_pag)+(1)."";
$p_end_e="".$p_n_elements."";


}
else
{







if ((
$pag)+($p_grupos_paginados)>=$p_totales)
{


$p_ini="".($p_totales)-($p_grupos_paginados)+(1)."";
$p_end="".$p_totales."";

}
else
{
$p_ini="".($pag)."";
$p_end="".($p_ini)+($p_grupos_paginados)-(1)."";
}




if ((
$pag)*($p_number_elementos_pag)>$p_n_elements)
{
$p_ini_e="".($p_n_elements)-($p_number_elementos_pag)+(1)."";
$p_end_e="".$p_n_elements."";
}
else
{
$p_end_e="".($pag)*($p_number_elementos_pag)."";
$p_ini_e="".($p_end_e)-($p_number_elementos_pag)+(1)."";
}



$back='<a href=?pag='.($pag-1).'>< </a>';
$next='<a href=?pag='.($pag+1).'>> </a>';







}

}



?>









<?php
print "<table width=50% border=0 cellpadding=0 cellspacing=1 align=center valign=middle>
<tr> 
<td align=center valign=middle colspan=$pages>
</td>
</tr><tr>"
;
?>

<?php

$x
=$p_ini_e-1;
$j=0;
echo 
"<b>$p_ini_e $p_end_e</b>";

for(
$i=$p_ini_e;$i<=$p_end_e;$i++)
{


print 
"<td align=center valign=middle>";


echo 
$f_files[$x];


print 
"</td>";





if ((
$j+1)%$p_cols==0)
{
print 
"</tr>";
}

$j++;














$x++;
}

print 
"</table>";
?>































<?php

echo $back_total
echo 
$back

for(
$i=$p_ini;$i<=$p_end;$i++)
{

print 
"<a href=?pag=".$i.">".$i."</a> ";

}

echo 
$next
echo 
$next_total

?>




Ahí pongo el código en breve pondré todo el script , ya no tira fallos el problema era que había que poner una variable más le puse $j=0; así pagina en base a eso y ya corta bien las cuentas de cada vuelta , el script funciona bien en breve lo pongo completo asi quien quiera que lo use pero podrá leer y paginar fotos , archivos de directorios con un include si se quieres para el archivo y desde un txt

En cuanto a la paginación programada permite que se pagine pues según las páginas que consten pero podemos agrupar las páginas en grupos y luego determinar cuantas entradas se muestran por página

En este día lo pongo completo

No obstante cualquiera que le vea algo pues lo podemos mejorar , creo que es un script muy útil para hacer de todo

Saludos !