Foros del Web » Programando para Internet » PHP »

paginacion con php ayuda

Estas en el tema de paginacion con php ayuda en el foro de PHP en Foros del Web. hola buenas tardes , (es de noche por aqui) como les va, su foro es muy interesante y e visto muchas publicaciones y es muy ...
  #1 (permalink)  
Antiguo 03/09/2010, 18:21
 
Fecha de Ingreso: junio-2008
Mensajes: 35
Antigüedad: 15 años, 10 meses
Puntos: 0
paginacion con php ayuda

hola buenas tardes , (es de noche por aqui) como les va, su foro es muy interesante y e visto muchas publicaciones y es muy bueno, sigan asi, felicito a las personas y administradores por tal labor, bueno ahora a lo principal, tengo un problemita, estoy haciendo una pagina web y necesito paginar los articulos de mis web (publicaciones), ya consequi que funcione el rollo es que quiero que los numeros de pagina se muestren de 2 en dos o 3 en 3 etc, es decir 1,2,3,4 luego presione 2, me muestre 1,2,3,4 y asi hasta el 4 al llegar hay que pase el resto de las paginas 4,5,6,7, luego al 7,8,9,... bueno ya saben mas o menos asi aqui les apunto mi codigo.
Código PHP:
//contar archivos desde un directorio
$gestor opendir('Articulo/');
    while (
false !== ($archivo readdir($gestor))) {
        if(
$archivo!='.' && $archivo!='..'){
         
$archivos[] = $archivo;
        }
    }
$mostrar 4//numero de elementos por pagina
$cuantos count($archivos); //para saber cuantos elementos tiene el array
//$archivos = rsort ($archivos); //para que muestre los nuevos primeros. Totalmente opcional
$paginas $cuantos $mostrar//numero de paginas

if (!isset($mostrar) or empty($mostrar) or !is_int($mostrar)) {
    
$mostrar 4//por si se te olvid?clarar $mostrar o no es entero le damos de valor 5
}
if (empty(
$_GET["pagina"])) { //si no hay pagina...
    
$desde 0//principio de la primera pagina
    
$hasta $desde $mostrar//fin de la primera pagina
}
if (!empty(
$_GET["pagina"])) { //si estamos en una pagina distinta de la primera...
    
$desde = (int)$_GET["pagina"]; //principio de la pagina X
        
if ($desde $mostrar $cuantos) { //si principio + 10 no es mayor a la cantidad de elementos
            
$hasta $desde $mostrar//fin de la pagina X
    
}else{
        
$hasta $desde + ($cuantos $desde); //por si $principio + 10 es superior al numero de elementos
    
}
}
?> 
aqui muestro el nombre de los archivos despues le pongo el codigo para que muestre el contenido, ya se como hacerlo jejejeje
Código PHP:
<?php          
for ($i=$desde$i<$hasta$i++) {
        echo 
$archivos[$i]."<br>"//mostramos los elementos de la pagina en la que estamos. Aqui que cada uno lo haga como buenamente pueda. xD
                    
}
?>
y aqui el codigo de paginacion, lo tengo separado por cuestiones de no me gusta mucho usar el "echo".

Código PHP:
Aqui donde me da el problema que no consigo que me muestre el numero de pagina, como lo explique arriba.

                <?php
                    
for ($j=0$j<$paginas$j++) {
                        
$dexde $j*$mostrar;
                        if(
$j==$desde){
                    
?>
                <b><?php echo $j+1;?></b> <!-- puedo poner $dexde y veo la cantidad de inicio de cada 4 articulos por pagina-->
                <?php    
                        
}
                        else{
?>
                <a href="mainj.php?pagina=<?php echo $dexde?>"><font face="Verdana, Geneva, sans-serif" size="-1.5"><?php echo "&nbsp;".($j+1)."&nbsp;";?></font></a>
                <?php 
                
}
                } 
?>
por favor necesito su ayuda, espero sus respuesta y muchas gracias,
  #2 (permalink)  
Antiguo 04/09/2010, 05:47
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: paginacion con php ayuda

Hola
Bueno, intenta agregar esto al código que ya tienes

Código PHP:
if (empty($_GET["pagina"])) { //si no hay pagina...
//dos variables más
    
$_GET['s']=0;//desde donde mostrar paginas
    
$_GET['j']=0;//hasta donde mostrar paginas 
luego, el for de la paginación cambio un poco y se agrego un if/else
donde se manejará la variable $j para indicar el "grupo" de paginación
y $s que indicará desde cual página finaliza cada grupo anterior,
estos parámetros serán añadido a los href

Código PHP:
                    for ($j=$_GET['s']; $j<$mostrar*($_GET['j']+1); $j++) {                        
                        if( 
$j<($mostrar*($_GET['j']+1))-){ $g=$_GET['j']; $s=$_GET['s']; }else{ $g++; $s=($_GET['j']+1)*$mostrar;}
                        
$dexde $j*$mostrar
finalmente, en el ELSE del if que ya se tenia dentro del FOR

Código PHP:
<a href="mainj.php?pagina=<?php echo $dexde?>&j=<?php echo $g?>&s=<?php echo $s?>"><font face="Verdana, Geneva, sans-serif" size="-1.5"><?php echo "&nbsp;".($j+1)."&nbsp;";?></font></a>
tal vez falten algunas validaciones para la última página,
pero ese detalle te lo dejo a vos
pruebalo y comentas
saludos
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #3 (permalink)  
Antiguo 04/09/2010, 20:37
 
Fecha de Ingreso: junio-2008
Mensajes: 35
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: paginacion con php ayuda

bueno, creo que hay cosas aqui que no termine de comentar como algo asi

pagina anterior e inicio
Código PHP:
                <?php if ($desde!=0) { ?>
                <a href="mainj.php?pagina=<?php echo "0"?>"><font face="Verdana, Geneva, sans-serif" size="-1.5">&lt; inicio de pagina</font></a>&nbsp;
                <a href="mainj.php?pagina=<?php echo $desde-4?>"><font face="Verdana, Geneva, sans-serif" size="-1.5">&lt; pagina anterior</font></a>
                <?php ?>
y la de siquiente y final

Código PHP:
                <?php if ($cuantos>($desde+4)) { ?>
                <a href="mainj.php?pagina=<?php echo $desde+4?>"><font face="Verdana, Geneva, sans-serif" size="-1.5">&gt; pagina Siquiente</font></a>&nbsp;
                <a href="mainj.php?pagina=<?php echo $cuantos-4?>"><font face="Verdana, Geneva, sans-serif" size="-1.5">&gt; pagina final</font></a>
                
                <?php ?>
me da un arror cuando intendo pasar a la pagina siquiente o anterior creo q es por parte de las nuevas lineas de codigo, pero aclarenme algo que tengo que quitar? por que lo deje asi:

Código PHP:
<?php
//contar archivos desde un directorio
$gestor opendir('Articulo/');
    while (
false !== ($archivo readdir($gestor))) {
        if(
$archivo!='.' && $archivo!='..'){
         
$archivos[] = $archivo;
        }
    }
$mostrar 4//numero de elementos por pagina
$cuantos count($archivos); //para saber cuantos elementos tiene el array
//$archivos = rsort ($archivos); //para que muestre los nuevos primeros. Totalmente opcional
$paginas $cuantos $mostrar//numero de paginas

if (!isset($mostrar) or empty($mostrar) or !is_int($mostrar)) {
    
$mostrar 4//por si se te olvid?clarar $mostrar o no es entero le damos de valor 5
}
if (empty(
$_GET["pagina"])) { //si no hay pagina...
    
$desde 0//principio de la primera pagina
    
$hasta $desde $mostrar//fin de la primera pagina
}

//codigo nuevo CODIGO AGREGADO NUEVO!!!!!!!!!!!!!!
if (empty($_GET["pagina"])) { //si no hay pagina...
//dos variables más
    
$_GET['s']=0;//desde donde mostrar paginas
    
$_GET['j']=0;//hasta donde mostrar paginas
//------------------------

if (!empty($_GET["pagina"])) { //si estamos en una pagina distinta de la primera...
    
$desde = (int)$_GET["pagina"]; //principio de la pagina X
        
if ($desde $mostrar $cuantos) { //si principio + 10 no es mayor a la cantidad de elementos
            
$hasta $desde $mostrar//fin de la pagina X
    
}else{
        
$hasta $desde + ($cuantos $desde); //por si $principio + 10 es superior al numero de elementos
    
}
}
?>
y aqui le quite el else por que me daba un error y ahora no me muestra sino las primeras cinco y en negritas sin link

Código PHP:
                <?php
                    
for ($j=$_GET['s']; $j<$mostrar*($_GET['j']+1); $j++) {                        
                        if( 
$j<($mostrar*($_GET['j']+1))-){ $g=$_GET['j']; $s=$_GET['s']; }else{ $g++; $s=($_GET['j']+1)*$mostrar;}
                        
$dexde $j*$mostrar
                    
?>
                <b><?php echo $j+1;?></b> <!-- puedo poner $dexde y veo la cantidad de inicio de cada 4 articulos por pagina-->
                <?php    
                    
}?>
                <a href="mainj.php?pagina=<?php echo $dexde?>&j=<?php echo $g?>&s=<?php echo $s?>"><font face="Verdana, Geneva, sans-serif" size="-1.5"><?php echo "&nbsp;".($j+1)."&nbsp;";?></font></a>
                <?php 
                    
}
                 
?>
debo corregir muchas cosas pero tenemos nuevas lineas de codigo y yo no coloque el resto del codigo pensando que no era necesario, ya que funcionaba muy bien, ahora me genera conflictos ayuda plisssssssssss, gracias Dios los Bendiga

Etiquetas: paginacion
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 09:46.