Foros del Web » Programando para Internet » PHP »

while con incremento

Estas en el tema de while con incremento en el foro de PHP en Foros del Web. Básica quiero conseguir esto con un while: Al 1 le sigue el 2 Al 2 le sigue el 3 Al 3 le sigue el 4 ...
  #1 (permalink)  
Antiguo 08/12/2008, 11:56
 
Fecha de Ingreso: junio-2003
Ubicación: Sevilla
Mensajes: 210
Antigüedad: 20 años, 10 meses
Puntos: 1
while con incremento

Básica quiero conseguir esto con un while:

Al 1 le sigue el 2
Al 2 le sigue el 3
Al 3 le sigue el 4
Al 4 le sigue el 5
Al 5 le sigue el 6
Al 6 le sigue el 7
Al 7 le sigue el 8
Al 8 le sigue el 9
Al 9 le sigue el 10

(Al 10 no le sigue nadie, debe pararse el while)
(He puesto números pero podrían ser fechas, nombres,..)

Esto es lo que tengo:

Código PHP:
$sql mysql_query("SELECT * FROM tabla WHERE id <= 10 ORDER BY id ASC");
$x=1;
while (
$row mysql_fetch_array($sql)){
echo 
"Al ".$row['id']." le sigue el ".$row[$x]['id']."<br>";
$x++;

...pero no me sale .

Seguro que es muy sencillo, pero torpe que es uno.
__________________
dominioslibres.info
  #2 (permalink)  
Antiguo 08/12/2008, 12:11
Avatar de hgp147  
Fecha de Ingreso: diciembre-2006
Ubicación: Buenos Aires, Argentina
Mensajes: 980
Antigüedad: 17 años, 3 meses
Puntos: 36
Respuesta: while con incremento

Código PHP:
$sql mysql_query("SELECT * FROM tabla WHERE id <= 10 ORDER BY id ASC");
$x=1;
while ((
$row mysql_fetch_array($sql)) && $x <10){
echo 
"Al $x le sigue el ". ($x+1) ."<br>";
$x++;

__________________
Spread Firefox | Download Day 2008
¡Únete en nuestra misión para alcanzar el Record Guinness al software más descargado en 24 horas! http://www.spreadfirefox.com/es-ES/worldrecord/
  #3 (permalink)  
Antiguo 08/12/2008, 12:43
 
Fecha de Ingreso: junio-2003
Ubicación: Sevilla
Mensajes: 210
Antigüedad: 20 años, 10 meses
Puntos: 1
Respuesta: while con incremento

Pero eso no serviría para otro campo que no fueran números. Digo fechas, nombres, etc...

ej:

a la A le sigue la B
a la B le sigue la C
....
a la Y le sigue la Z
__________________
dominioslibres.info
  #4 (permalink)  
Antiguo 08/12/2008, 12:43
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: while con incremento

Puedes usar ord() para obtener el codigo numerico de un caracter y chr() para presentar que campo es.

Saludos.
  #5 (permalink)  
Antiguo 08/12/2008, 12:53
 
Fecha de Ingreso: junio-2003
Ubicación: Sevilla
Mensajes: 210
Antigüedad: 20 años, 10 meses
Puntos: 1
Respuesta: while con incremento

Vamos a ver...

Supongamos que tomo de la db un array de diez valores diferentes de fecha datetime, ordenados de menor a mayor. ¿Cómo puedo mostrar con el while?:

A la fecha1 le sigue la fecha2
A la fecha2 le sigue la fecha3
.....
__________________
dominioslibres.info
  #6 (permalink)  
Antiguo 08/12/2008, 14:04
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: while con incremento

En ese caso puedes usar strtotime().

Saludos.
  #7 (permalink)  
Antiguo 08/12/2008, 15:46
 
Fecha de Ingreso: junio-2003
Ubicación: Sevilla
Mensajes: 210
Antigüedad: 20 años, 10 meses
Puntos: 1
Respuesta: while con incremento

Y cómo aplico el incremento en el while?... o mejor dicho, el valor siguiente del array.

A la fecha1 le sigue la 'fecha2' <-(incremento)
__________________
dominioslibres.info
  #8 (permalink)  
Antiguo 08/12/2008, 16:43
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: while con incremento

Usa strotime() para convertirla en un timestamp (numerico e investiga que es un timestamp) a este le agregas los segundos de un dia y te da el siguiente dia, o puedes usar +1 day para strotime().

Saludos.
  #9 (permalink)  
Antiguo 08/12/2008, 16:55
 
Fecha de Ingreso: junio-2003
Ubicación: Sevilla
Mensajes: 210
Antigüedad: 20 años, 10 meses
Puntos: 1
Respuesta: while con incremento

Perdona, no sé si es que no me expliqué bien desde un principio.

No he dicho que el array de fechas guarde ninguna relación. La primera fecha puede ser el 2 de marzo, la segunda el 7 de abril, la tercera el 31 diciembre, la cuarta el 5 de febrero del año siguiente, etc... O imagina un array de 10 nombres ordenados alfabéticamente: el primero puede ser Alfredo, el segundo Antonio, el tercero Manuel, el cuarto Miguel, etc...
__________________
dominioslibres.info
  #10 (permalink)  
Antiguo 08/12/2008, 16:57
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: while con incremento

En ese caso vas a tener que definir ya que si no hay un patrón como defines que es lo que sigue, a lo mejor para mi después de Alfredo viene Matias, pero para ti viene Alberto..

Primero define que es lo que necesitas, y haz tu algoritmo y ya si tienes problemas sobre el algoritmo es más fácil ayudarte.

Saludos.
  #11 (permalink)  
Antiguo 08/12/2008, 17:24
 
Fecha de Ingreso: junio-2003
Ubicación: Sevilla
Mensajes: 210
Antigüedad: 20 años, 10 meses
Puntos: 1
Respuesta: while con incremento

El único algoritmo que puedo imaginar es el orden de los resultados del select.

A ver,... si tengo una tabla con los datos de mis amigos, incluyendo el día de su cumpleaños y quiero mostrar una lista cómo la que vengo buscando:

Después del cumple de Pedro viene el de Juan
Después del cumple de Juan viene el de Antonio
Después del cumple de Antonio viene el de Ignacio
etc...

Y resulta que al año que viene tengo tres amigos más, ¿qué algoritmo me invento?.

La única relación entre un dato y el siguiente es el orden de las fechas de cumpleaños.
__________________
dominioslibres.info
  #12 (permalink)  
Antiguo 08/12/2008, 18:03
okram
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: while con incremento

Guárda los en un array de índices numéricos. Así, en vez de ciclar extrayendo los datos del recurso $sql, ciclas usando el arreglo. Es más manejable, ya que puedes, usando los índices del arreglo, saber y llamar los datos siguientes.

  #13 (permalink)  
Antiguo 12/12/2008, 14:06
 
Fecha de Ingreso: junio-2003
Ubicación: Sevilla
Mensajes: 210
Antigüedad: 20 años, 10 meses
Puntos: 1
Respuesta: while con incremento

Cita:
Iniciado por okram Ver Mensaje
Guárda los en un array de índices numéricos. Así, en vez de ciclar extrayendo los datos del recurso $sql, ciclas usando el arreglo. Es más manejable, ya que puedes, usando los índices del arreglo, saber y llamar los datos siguientes.

Cómo no tengo suficientes conocimientos para llevar a cabo lo que me sugieres, se me ha ocurrido la siguiente "chapuzilla".

Código PHP:
$sql mysql_query("SELECT * FROM tabla WHERE id < 10 ORDER BY id ASC"); 

while (
$row mysql_fetch_array($sql)){ 
echo 
"Al ".$row['id']." le sigue el ";
$sql_b mysql_query("SELECT * FROM tabla WHERE id > ".$row['id']." ORDER BY id ASC LIMIT 1");
$siguiente mysql_result($sql_b,0,"id");
echo 
$siguiente."<br>"

Por lo menos para salir del paso....

Gracias por todo.
__________________
dominioslibres.info
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:14.