Foros del Web » Programando para Internet » PHP »

¿Cómo mostrar una cadena de forma consecutiva?

Estas en el tema de ¿Cómo mostrar una cadena de forma consecutiva? en el foro de PHP en Foros del Web. Hola gente, tengo un array que me trae archivos de forma aleatoria: Código PHP: <?php $pres_obras  = array(  '1' ,  '2'  ,  '3'  ); $pres_obras  =  ...
  #1 (permalink)  
Antiguo 20/11/2008, 13:29
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 19 años, 10 meses
Puntos: 832
¿Cómo mostrar una cadena de forma consecutiva?

Hola gente, tengo un array que me trae archivos de forma aleatoria:

Código PHP:
<?php
$pres_obras 
= array( '1''2' '3' );
$pres_obras $pres_obras[rand(0count($pres_obras)-1)];

// la salida:

include('pres-obras-'$pres_obras .'.php');

?>
Lo que yo quisiera es que me devolviera los resultados de forma consecutiva (primero "1", luego "2", etc.) ¿cómo se le hace?.
  #2 (permalink)  
Antiguo 20/11/2008, 13:32
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 19 años, 5 meses
Puntos: 34
Respuesta: ¿Cómo mostrar una cadena de forma consecutiva?

Hola metacortex, si haces un foreach por $pres_obras te sirve?

Código PHP:
<?php 
 
$pres_obras 
= array( '1''2' '3' ); 
 
foreach( 
$pres_obras as $obra ) include('pres-obras-'$obra .'.php'); 
 
?>
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #3 (permalink)  
Antiguo 20/11/2008, 13:38
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: ¿Cómo mostrar una cadena de forma consecutiva?

Mmm o en dado caso usa sort() para ordenar el array e imprimirlo.

Saludos.
  #4 (permalink)  
Antiguo 20/11/2008, 14:20
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 19 años, 10 meses
Puntos: 832
Respuesta: ¿Cómo mostrar una cadena de forma consecutiva?

Gracias compañeros . Disculpen pero olvidé mencionar un detalle: esos archivos se muestran en un módulo uno por uno (se cambia cada vez que el usuario refresca) ¿Es necesario agregar un for también?.

Siempre he tenido problemas con esos endemoniados bucles for , nunca los termino de entender.
  #5 (permalink)  
Antiguo 20/11/2008, 14:32
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 19 años, 5 meses
Puntos: 34
Respuesta: ¿Cómo mostrar una cadena de forma consecutiva?

No comprendo que necesitas hacer. El foreach lo que hará será incluirte tres archivos, uno debajo del otro:

Contenido de: pres-obras-1.php
Contenido de: pres-obras-2.php
Contenido de: pres-obras-3.php

De entrada, sin importar cuantas veces el usuario recargue la página.

Cual es el comportamiento que necesitas exactamente con estos tres archivos?
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #6 (permalink)  
Antiguo 20/11/2008, 15:16
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 19 años, 10 meses
Puntos: 832
Respuesta: ¿Cómo mostrar una cadena de forma consecutiva?

Hola nicolaspar. Por ahora devuelve uno por uno aleatoriamente, lo cual está bien. Esos tres archivos que mencionaste se turnan para aparecer de a uno por vez. Sólo quiero que haga lo mismo pero de forma ordenada (primero el 1, luego el 2 y después el 3 para luego volver al 1).

Saludos.
  #7 (permalink)  
Antiguo 20/11/2008, 15:19
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: ¿Cómo mostrar una cadena de forma consecutiva?

Podrías usar una variable de sesión para saber cuál fue la última que visualizó el usuario y de acuerdo a eso mostrar el siguiente .
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #8 (permalink)  
Antiguo 20/11/2008, 15:41
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: ¿Cómo mostrar una cadena de forma consecutiva?

Exacto, creo la forma que indica David es la mejor, ya que recuerda que PHP es un lenguaje "stateless" lo que hace que se pierda "el ultimo" valor, por lo tanto hay que persistirlo usando sesiones.

Saludos
  #9 (permalink)  
Antiguo 20/11/2008, 17:18
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 19 años, 10 meses
Puntos: 832
Respuesta: ¿Cómo mostrar una cadena de forma consecutiva?

Uff eso suena excelente! No había tomado en cuenta el hecho de que el usuario siempre vería el primer ítem todo el tiempo . Gracias muchachos, averiguaré cómo es eso de las sesiones.

... Sí hombre, tremendo "detallito" y ni se me había pasado por el coco jejeje.

Por otra parte estuve averiguando respecto al orden del array. Hasta ahora he entendido que el loop se logra con el for dentro de un while. Me da un poco de pena porque el código del aleatorio era tan pequeño:
Código PHP:
$pres_obras $pres_obras[rand(0count($pres_obras)-1)]; 
¿No existe una forma igual de resumida y elegante para ordenar esos datos además del for?. Disculpen la preguntadera amigos, cuando comience a fastidiar avísenme =P.
  #10 (permalink)  
Antiguo 20/11/2008, 17:34
Avatar de oso96_2000  
Fecha de Ingreso: junio-2002
Ubicación: Distrito Federal
Mensajes: 558
Antigüedad: 21 años, 10 meses
Puntos: 35
Respuesta: ¿Cómo mostrar una cadena de forma consecutiva?

Podrías hacer algo asi:

Código php:
Ver original
  1. <?php
  2. $archivos = array('pres-obras-1.php', 'pres-obras-2.php', 'pres-obras-3.php'); // Un arreglo con los archivos que podemos mostrar
  3. if ( !isset($_SESSION['filetoshow']) || ($_SESSION['filetoshow'] == count($archivos)) ) // Si no existe la sesion, o si el valor de esta es igual al numero total de archivos (es decir, ya mostramos el ultimo)
  4. {
  5.     $_SESSION['filetoshow'] = 0; // Ponemos el valor de la sesion a 0 (indice del primer elemento del arreglo)
  6. }
  7.  
  8. $archivo = $archivos[$_SESSION['filetoshow']]; // Aqui guardamos el archivo a mostrar en la variable $archivo, usnado el valor de la sesion como indice del arreglo
  9. $_SESSION['filetoshow']++; // Aumentamos el valor de la sesion en 1
  10. ?>

Creo que algo asi funcionaría, y medio traté de comentarlo para que se entienda :P
__________________
Sin Ideas
  #11 (permalink)  
Antiguo 20/11/2008, 18:28
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 19 años, 5 meses
Puntos: 34
Respuesta: ¿Cómo mostrar una cadena de forma consecutiva?

Cita:
Iniciado por oso96_2000 Ver Mensaje
Podrías hacer algo asi:

Código php:
Ver original
  1. <?php
  2. $archivos = array('pres-obras-1.php', 'pres-obras-2.php', 'pres-obras-3.php'); // Un arreglo con los archivos que podemos mostrar
  3. if ( !isset($_SESSION['filetoshow']) || ($_SESSION['filetoshow'] == count($archivos)) ) // Si no existe la sesion, o si el valor de esta es igual al numero total de archivos (es decir, ya mostramos el ultimo)
  4. {
  5.     $_SESSION['filetoshow'] = 0; // Ponemos el valor de la sesion a 0 (indice del primer elemento del arreglo)
  6. }
  7.  
  8. $archivo = $archivos[$_SESSION['filetoshow']]; // Aqui guardamos el archivo a mostrar en la variable $archivo, usnado el valor de la sesion como indice del arreglo
  9. $_SESSION['filetoshow']++; // Aumentamos el valor de la sesion en 1
  10. ?>

Creo que algo asi funcionaría, y medio traté de comentarlo para que se entienda :P

Tal cual, solo le faltaría iniciar session y hacer el include, le agrego solamente sobre le código de Oso96_2000 eso con lo cual debería funcionarte:

Código php:
Ver original
  1. <?php
  2. session_name('AlgunNombre');
  3.  
  4.  
  5. $archivos = array('pres-obras-1.php', 'pres-obras-2.php', 'pres-obras-3.php'); // Un arreglo con los archivos que podemos mostrar
  6.  
  7.  
  8. if ( !isset($_SESSION['filetoshow']) || ($_SESSION['filetoshow'] == count($archivos)) ) // Si no existe la sesion, o si el valor de esta es igual al numero total de archivos (es decir, ya mostramos el ultimo)
  9. {
  10.     $_SESSION['filetoshow'] = 0; // Ponemos el valor de la sesion a 0 (indice del primer elemento del arreglo)
  11. }
  12.  
  13. $archivo = $archivos[$_SESSION['filetoshow']]; // Aqui guardamos el archivo a mostrar en la variable $archivo, usnado el valor de la sesion como indice del arreglo
  14. $_SESSION['filetoshow']++; // Aumentamos el valor de la sesion en 1
  15. include( $archivo );
  16. ?>

Si vas a usar las sessiones en varios lados te conviene usar un .php con esas tres primeras líneas y hacer un include del mismo.

Saludos.
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #12 (permalink)  
Antiguo 20/11/2008, 20:25
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: ¿Cómo mostrar una cadena de forma consecutiva?

Cita:
Iniciado por metacortex Ver Mensaje
Por otra parte estuve averiguando respecto al orden del array. Hasta ahora he entendido que el loop se logra con el for dentro de un while. [...] ¿No existe una forma igual de resumida y elegante para ordenar esos datos además del for?. Disculpen la preguntadera amigos, cuando comience a fastidiar avísenme =P.
Aunque el código de los compañeros probablemente ya te funcione, hablabas de que primero hay que ordenar el array, ¿es así?. No necesitas usar un bucle for para eso, como sugirió GatorV puedes usar sort() para ordenar el array (http://www.php.net/manual/es/function.sort.php), si son datos numéricos puedes usar la bandera (flag) SORT_NUMERIC.

Saludos .
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #13 (permalink)  
Antiguo 24/11/2008, 14:42
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 19 años, 10 meses
Puntos: 832
Respuesta: ¿Cómo mostrar una cadena de forma consecutiva?

Hola, disculpen por no haber contestado antes (huí de la máquina todo el fin de semana, demasiada presión en la semana pasada ).

oso96_2000, mil gracias por invertir algunos de tus valiosos minutos en escribir el código, no me esperaba ese magnífico gesto. Igualmente tú nicolaspar, tanto la ampliación del código como los comentarios son un verdadero e inesperado regalo. Por uds. seguro abreviaré muchos pasos en el aprendizaje de esta parte. Si algún día tienen un problema de diseño haré mi mejor esfuerzo por abreviarles los pasos .

David el Grande y GatorV, ciertamente anduve por esos lados a finales de la semana pasada. Quizás fue por el embotamiento del día que el asunto se convirtió en chino para mí pero le daré una segunda revisada ahora que recargué las baterías. Gracias por los datos .

Bueno, creo que ya cuento con documentación suficiente como para salir exitosamente de esta parte. Estos módulos incluirán un script de paginación en ajax (muy bueno por cierto). Sin embargo se hacía inútil si al refrescarse la página volvía al primer artículo una y otra vez. Con esto de las sesiones queda solucionado . Pronto les muestro en qué culminó la cosa. Por el momento reciban mi agradecimiento.

Saludos.
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 06:24.