Foros del Web » Programando para Internet » PHP »

Duda foreach y arrays

Estas en el tema de Duda foreach y arrays en el foro de PHP en Foros del Web. Hola a a todos. Os presento esta funcioncilla que estoy haciendo. En general es un sistema de noticias via rss el tema está en que ...
  #1 (permalink)  
Antiguo 09/10/2008, 12:27
 
Fecha de Ingreso: septiembre-2005
Mensajes: 12
Antigüedad: 18 años, 8 meses
Puntos: 0
Duda foreach y arrays

Hola a a todos.
Os presento esta funcioncilla que estoy haciendo. En general es un sistema de noticias via rss el tema está en que estoy intentando poner un paginador y la verdad es que me he encontrado con un buen problema.

Código PHP:
//Aqui el paginador
$pagina = ( !isset($HTTP_GET_VARS['pagina']) ) ? intval($HTTP_GET_VARS['pagina']);

    function 
display_rss($url)
    {
        GLOBAL 
$pagina;

        
$rss fetch_rss($url);
        echo  
$rss->channel['title'];
                echo  
"<br><br>";

                
$k=1;

        foreach (
$rss->items as $item ) {
                        If (
$k==10){ break;}
                        
$k++;
            
$title $item[title];
            
$url   $item[link];
            
$desc =  $item[description];
            echo 
"<font class=\"storytitle\"><b>$title</b></font><br>$desc<br><a href=$url>Leer / Comentar 

noticia.</a><br><br>"
;
        }
        echo 
"<br><br><br>"
    } 

El caso es que como estoy usando el foreach (porque no domino el tema de los arrays en php) no puedo hacer lo que quiero. ¿Y que quiero?
Pues muy fácil lo que quiero es crear un paginador y para ello tengo que pasarle el $paginador. Si es 0 empezará desde el inicio el foreach o el while o lo que haya que utilizar. Si es 10 Empezará en 10 el array hasta 20. Si empieza en 20 hasta 30.

El caso es que como uso foreach creo que la variable de control es invisible y no la puedo modificar. Si alguien me ayudará le estaría muy agradecido.
  #2 (permalink)  
Antiguo 09/10/2008, 12:40
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Duda foreach y arrays

Hola zeyt,

Guarda todos los resultados en un array y luego ocupa array_slice para obtener solo una "parte" del array.

Saludos.
  #3 (permalink)  
Antiguo 09/10/2008, 13:26
 
Fecha de Ingreso: septiembre-2005
Mensajes: 12
Antigüedad: 18 años, 8 meses
Puntos: 0
Respuesta: Duda foreach y arrays

Hola, muchísimas gracias por tu temprana respuesta. Intente utilizar la función que me dijiste. No he sabido usarla muy bien puesto que tenía que asignar los valores del array y como no es de índice ando un poco liado.

Pero no te preocupes. Agradezco tu respuesta. Al final pensé en como hacerlo de cualquier forma e introduje lo siguiente:
Código PHP:
//Aqui el paginador
$pagina = ( !isset($HTTP_GET_VARS['pagina']) ) ? intval($HTTP_GET_VARS['pagina']);
  If (
$pagina>40){
   
$pagina 40;
  }

    function 
display_rss($url)
    {
        GLOBAL 
$pagina;

        
$rss fetch_rss($url);
        echo  
$rss->channel['title'];
                echo  
"<br><br>";

                
$k=1;
                
$j=0;

        foreach (
$rss->items as $item ) {
                     If (
$j >= $pagina) {     
                        If (
$k==10){ break;}
                        
$k++;
            
$title $item[title];
            
$url   $item[link];
            
$desc =  $item[description];     
            echo 
"<font class=\"storytitle\"><b>$title</b></font><br>$desc<br><a href=$url>Leer / Comentar noticia.</a><br><br>";
                     }
                
$j++;
        }
        echo 
"<br><br><br>"
    }
// PAGINADOR
     
If ($pagina == 0) {
       
$paginamas $pagina+10;
       
$paginador '<b><<< Anteriores</b> | <a href="modules.php?name=Noticias&pagina='$paginamas .'"><b>Siguientes >>></b></a>';
     }
     else {

       If(
$pagina == 40)  {
       
       
$paginamenos $pagina-10;       
$paginador '<a href="modules.php?name=Noticias&pagina='$paginamenos .'"><b><<< Anteriores</b></a> | <b>Siguientes >>></b><br>Sólo mostramos las últimas 50 noticias aquí. Si quieres ver más sigue <a href="modules.php?name=Forums&file=viewforum&f=29">este enlace</a>';  
       }
       else {
       
$paginamas $pagina+10;
       
$paginamenos $pagina-10;
       
$paginador '<a href="modules.php?name=Noticias&pagina='$paginamenos .'"><b><<< Anteriores</b></a> | <a href="modules.php?name=Noticias&pagina='$paginamas .'"><b>Siguientes >>></b></a>';
         }
    }

// PAGINADOR 
llamamos a la función y luego echo al paginador y ya está
  #4 (permalink)  
Antiguo 09/10/2008, 14:32
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Duda foreach y arrays

zeyt el codigo que te dio GatorV es mejor que lo que estas haciendo... como tu array no es de indice cada elemento va ocupando una posicion dentro del mismo comenzando desde cero.

Código PHP:
        $mostrar slice($rss->items$pagina10); // Extraes los 10 elementos que corresponden a la pagina
        
foreach ($mostrar as $item ) {
            
$title $item[title];
            
$url   $item[link];
            
$desc =  $item[description];     
            echo 
"<font class=\"storytitle\"><b>$title</b></font><br>$desc<br><a href=$url>Leer / Comentar noticia.</a><br><br>";
        } 
__________________
- León, Guanajuato
- GV-Foto
  #5 (permalink)  
Antiguo 10/10/2008, 07:29
 
Fecha de Ingreso: septiembre-2005
Mensajes: 12
Antigüedad: 18 años, 8 meses
Puntos: 0
Respuesta: Duda foreach y arrays

Gracias por tu respuesta. He intentado usar tu código pero no ejecuta bien. (si compila).
Debe ser bastante especial el array que he costruído XDDD.

No obstante aunque despilfarre recursos lo dejo así de momento.
Muchas gracias a todos por vuestra respuesta y buen fin de semana.
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 20:29.