Foros del Web » Programando para Internet » PHP »

indexar foreach

Estas en el tema de indexar foreach en el foro de PHP en Foros del Web. Buenas! Tengo un código que crea una tabla con las citas que ha concertado un usuario y necesito recuperar el valor $data_cita[0](el id_cita en la ...
  #1 (permalink)  
Antiguo 14/11/2008, 09:39
 
Fecha de Ingreso: noviembre-2008
Mensajes: 7
Antigüedad: 15 años, 5 meses
Puntos: 0
indexar foreach

Buenas!

Tengo un código que crea una tabla con las citas que ha concertado un usuario y necesito recuperar el valor $data_cita[0](el id_cita en la BBDD) de cada cita para poder utilizarlo en otra función que la borre.
Sólo consigo que me devuelva el número de citas o el id_cita de la última cita entrada en la BBDD.
El código sería similar a esto (aunque he probado un montón de cosas):
Código:
<form action="borra_cita.php" method=post enctype="multipart/form-data">
<table>
<? foreach($citas as $index =>$data_citas) { 
$data_citas =& $citas[$index];?>
  <tr>
  <td><input type="hidden" name="id_servicio" value="<?=$index?>"><?=$data_citas[0]?></td>
  <td><?=$data_citas[1]?></td>
  <td><?=$data_citas[2]?></td>
  <td><?=$data_citas[3]?></td>
  <td><input type="submit" value="Cancelar cita" /></td>
<? unset ($data_citas);
}?>
</table>
</form>
  #2 (permalink)  
Antiguo 14/11/2008, 09:43
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: indexar foreach

En cada paso del foreach $data_citas será el valor y $index su índice, no es necesario que modifiques nada ni que especifiques un índice a $data_citas, colócalo directamente, lee sobre foreach en el manual http://www.php.net/.
Saludos .
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 14/11/2008, 10:42
 
Fecha de Ingreso: noviembre-2008
Mensajes: 7
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: indexar foreach

Gracias por responder tan pronto David pero no entiendo. Tal como está el código el valor que devuelve el $index del <form> es el número de citas que ha concertado el usuario. El código que mando es de php.net y he probado otros ejemplos pero no consigo recuperar el valor $data_citas [0] de cada cita, que es el que me hace falta.
Ayuda, por favor.
  #4 (permalink)  
Antiguo 14/11/2008, 10:46
Avatar de masterojitos  
Fecha de Ingreso: julio-2008
Ubicación: Lima Callao Chucuito
Mensajes: 1.931
Antigüedad: 15 años, 9 meses
Puntos: 105
Respuesta: indexar foreach

asi como guardaste en un hidden el $index
por que no lo haces con data_citas
<input type="hidden" name="id_servicio" value="<?=$data_citas[0]?>">

Suerte.
__________________
Atte. MasterOjitos :ojotes:
Todo sobre Programación Web
Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog
  #5 (permalink)  
Antiguo 14/11/2008, 11:17
 
Fecha de Ingreso: noviembre-2008
Mensajes: 7
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: indexar foreach

Hola masterojitos

Si hago como dices $data_citas[0] me devuelve siempre el valor de la primera cita que se haya insertado en la BBDD. Es decir, si tengo 3 citas con IdCita 135, 145 y 146 siempre me devuelve el valor de la primera (135)
  #6 (permalink)  
Antiguo 14/11/2008, 11:17
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: indexar foreach

Usa $data_citas sin más, sin el índice [0].
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #7 (permalink)  
Antiguo 14/11/2008, 11:39
 
Fecha de Ingreso: noviembre-2008
Mensajes: 7
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: indexar foreach

Entonces me devuelve Array
  #8 (permalink)  
Antiguo 14/11/2008, 11:53
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: indexar foreach

Y, borra esta línea:
Código php:
Ver original
  1. $data_citas =& $citas[$index];
$data_citas es asignado automáticamente en cada iteración del foreach, si vas a hacerlo manualmente, no tiene sentido usar foreach:
http://www.php.net/manual/es/control...es.foreach.php
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #9 (permalink)  
Antiguo 14/11/2008, 11:58
Avatar de masterojitos  
Fecha de Ingreso: julio-2008
Ubicación: Lima Callao Chucuito
Mensajes: 1.931
Antigüedad: 15 años, 9 meses
Puntos: 105
Respuesta: indexar foreach

pero puedes hacer 2 cosas....

bien, envias cin el indice y recibes el arreglo y lo vuelves a recorrer....
o bien haces 3 hidden y en cada uno envias un indice....

creo no???? suerte.
__________________
Atte. MasterOjitos :ojotes:
Todo sobre Programación Web
Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog
  #10 (permalink)  
Antiguo 14/11/2008, 12:09
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: indexar foreach

Para que sea más simple para todos hacé:

Código php:
Ver original
  1. print_r($citas);

Y copianos el array, así sabemos que estructura estás usando.

Saludos.
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #11 (permalink)  
Antiguo 15/11/2008, 05:30
 
Fecha de Ingreso: noviembre-2008
Mensajes: 7
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: indexar foreach

Hola a todos de nuevo

El print_r($citas) devuelve esto para tres citas.

Array ( [0] => 164 [IdCita] => 164 [1] => 45 [IdServicio] => 45 [2] => 2008-11-16 [Fecha] => 2008-11-16 [3] => 09:00:00 [Hora] => 09:00:00 ) Array ( [0] => 163 [IdCita] => 163 [1] => 3 [IdServicio] => 3 [2] => 2008-11-16 [Fecha] => 2008-11-16 [3] => 09:00:00 [Hora] => 09:00:00 ) Array ( [0] => 163 [IdCita] => 163 [1] => 3 [IdServicio] => 3 [2] => 2008-11-16 [Fecha] => 2008-11-16 [3] => 09:00:00 [Hora] => 09:00:00

Ya entiendo la estructura del array $citas y puedo recuperar el IdCita que quiero con dos índices (p.e. print $citas [1][0] me devuelve el IdCita 163) pero no puedo hacerlo de manera dinámica, es decir, mediante el botón Cancelar cita del <form>.
Alguna idea?
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 02:58.