Ver Mensaje Individual
  #1 (permalink)  
Antiguo 15/04/2009, 02:04
Koden
 
Fecha de Ingreso: marzo-2005
Mensajes: 197
Antigüedad: 19 años, 2 meses
Puntos: 1
Problema al recorrer array

Hola buenos días.

Estoy haciendo una aplicación de reservas on-line, y tengo un problema al recorrer una variable de sesión que es un array, y que en cada una de sus celdas contiene otro array hecho a partir de variables que llegan por GET con información respecto a la habitación (id de la habitación, número de adultos y de niños por habitación...)

El vector se crea de esta manera:

Código PHP:
Ver original
  1. $arr_co = array();
  2. $arr_co["id"] = $_GET["id_iHab"];
  3. $arr_co["ad"] = $_GET["n1"];
  4. $arr_co["ni"] = $_GET["n2"];
  5. $arr_co["ha"] = $_GET["habAct"];
  6.  
  7. if (!isset ($_SESSION["x"]) || empty ($_SESSION["x"]))
  8.     $_SESSION["x"] = 0;
  9. else
  10.     $_SESSION["x"] ++;
  11.  
  12. $_SESSION["c"][$_SESSION["x"]] = $arr_co;

El vector se llena correctamente, de hecho al hacer un var_dump antes de intentar recorrerlo, esta es su estructura:

Código HTML:
  [0]=>
  array(4) {
    ["id"]=>
    string(1) "2"
    ["ad"]=>
    string(1) "2"
    ["ni"]=>
    string(1) "0"
    ["ha"]=>
    string(1) "1"
  }
}
El problema lo tengo al recorrerlo, ya que tal y como lo recorro (así)

Código PHP:
Ver original
  1. foreach ($_SESSION["c"] as $val)
  2. {
  3.     if (is_array ($val))
  4.     {
  5.         foreach ($val as $arr)
  6.         {
  7.             $s_1 = "SELECT it_Hab.id_iHab... FROM it_Hab, it_Knd_Hab, ... WHERE it_Hab.id_iHab='" . $arr["id"] . "'";
  8.             $q_1 = mysql_query ($s_1, $dbh) or die ('I cannot execute the query because: ' . mysql_error () . '<br />And the query is: ' . $q_1 . '<br />');
  9.             $r_1 = mysql_fetch_array ($q_1);
  10.  
  11.             echo "<div>";
  12.             echo "<p><strong>Habitaci&oacute;n " . $arr["habAct"] . "</strong></p>";
  13.             echo "<p>" . $r_1['nameHab'] . " - " . $r_1['nameKnd'] . " - " . ($r_1['tarifa'] * $dias_diferencia) . " &euro; (" . $r_1['tarifa'] . "/D&iacute;a)</p>";
  14.             echo "</div>";
  15.         }
  16.     }
  17. }

Ya que el último foreach me lo hace cuatro veces en lugar de una (que es lo que me gustaría, que repitiese el bucle una vez por cada habitación seleccionada.

¿Alguien sabría decirme que estoy planteando mal?



Muchas gracias a todos y un saludo.