Ver Mensaje Individual
  #1 (permalink)  
Antiguo 05/07/2010, 14:29
GNU
 
Fecha de Ingreso: julio-2010
Mensajes: 3
Antigüedad: 13 años, 9 meses
Puntos: 0
Bucle con datos xml usando foreach

TENGO EL SIGUIENTE XML
Código XML:
Ver original
  1. <?xml version="1.0" ?>
  2. - <reserva accion="resultado">
  3. - <resultados>
  4. - <cotizados>
  5. - <articulo ocupacion="h1">
  6.   <id_articulo>2917</id_articulo>
  7.   <nombre_articulo>DOBLE 2 PAXNIÑO</nombre_articulo>
  8.   <id_resultado>2423713</id_resultado>
  9.   <central_reservas />
  10.   <descripcion />
  11.   <id_zona>62</id_zona>
  12.   <nombre_zona>Castellón</nombre_zona>
  13.   <provincia>CASTELLÓN</provincia>
  14.   <poblacion>CASTELLON</poblacion>
  15.   <longitud>-0.043400</longitud>
  16.   <latitud>39.983501</latitud>
  17.   <id_prestatario>21931</id_prestatario>
  18.   <nombre_prestatario>JAIME I</nombre_prestatario>
  19.   <direccion_prestatario>RONDA MIJARES, 67</direccion_prestatario>
  20.   <cp_prestatario />
  21.   <provincia_prestatario>CASTELLÓN</provincia_prestatario>
  22.   <categoria>3</categoria>
  23.   <cotizacion>92.92</cotizacion>
  24.   <disponible>1</disponible>
  25.   <foto_prestatario>http://www.miweb.com/dominios/empresa/fotos/21931_1.jpg</foto_prestatario>
  26.   <descripcion_prestatario>edificio moderno, renovado en 2004 situado en el centro comercial de castellón, a escasos 1000 metros del corte inglés y cercano a la universidad jaime i fáciles accesos desde la ap-7 a valencia y barcelona dispone de 89 habitaciones equipadas con tv, teléfono, aire acondicionado, caja fuerte y baño completo facilidades del hotel: restaurante, bar, salones, fitness, parkinglos días 24 y 31 de diciembre de 2007, el restaurante de nuestro hotel estará cerrado</descripcion_prestatario>
  27. - <suplementos>
  28. - <suplemento regimen="1">
  29.   <id_suplemento tipo="obligatorio">16082</id_suplemento>
  30.   <nombre_suplemento>Sólo alojamiento</nombre_suplemento>
  31.   <suplemento_regimen_abreviado>SA</suplemento_regimen_abreviado>
  32.   <descripcion />
  33.   </suplemento>
  34.   </suplementos>
  35.   <tipo_categoria>hotel</tipo_categoria>
  36.   </articulo>
  37. - <articulo ocupacion="h2">
  38.   <id_articulo>2917</id_articulo>
  39.   <nombre_articulo>DOBLE 2 PAXNIÑO</nombre_articulo>
  40.   <id_resultado>2423713</id_resultado>
  41.   <central_reservas />
  42.   <descripcion />
  43.   <id_zona>62</id_zona>
  44.   <nombre_zona>Castellón</nombre_zona>
  45.   <provincia>CASTELLÓN</provincia>
  46.   <poblacion>CASTELLON</poblacion>
  47.   <longitud>-0.043400</longitud>
  48.   <latitud>39.983501</latitud>
  49.   <id_prestatario>21931</id_prestatario>
  50.   <nombre_prestatario>JAIME I</nombre_prestatario>
  51.   <direccion_prestatario>RONDA MIJARES, 67</direccion_prestatario>
  52.   <cp_prestatario />
  53.   <provincia_prestatario>CASTELLÓN</provincia_prestatario>
  54.   <categoria>3</categoria>
  55.   <cotizacion>92.92</cotizacion>
  56.   <disponible>1</disponible>
  57.   <foto_prestatario>http://www.miweb.com/dominios/empresa/fotos/21931_1.jpg</foto_prestatario>
  58.   <descripcion_prestatario>edificio moderno, renovado en 2004 situado en el centro comercial de castellón, a escasos 1000 metros del corte inglés y cercano a la universidad jaime i fáciles accesos desde la ap-7 a valencia y barcelona dispone de 89 habitaciones equipadas con tv, teléfono, aire acondicionado, caja fuerte y baño completo facilidades del hotel: restaurante, bar, salones, fitness, parkinglos días 24 y 31 de diciembre de 2007, el restaurante de nuestro hotel estará cerrado</descripcion_prestatario>
  59. - <suplementos>
  60. - <suplemento regimen="1">
  61.   <id_suplemento tipo="obligatorio">16082</id_suplemento>
  62.   <nombre_suplemento>Sólo alojamiento</nombre_suplemento>
  63.   <suplemento_regimen_abreviado>SA</suplemento_regimen_abreviado>
  64.   <descripcion />
  65.   </suplemento>
  66.   </suplementos>
  67.   <tipo_categoria>hotel</tipo_categoria>
  68.   </articulo>
  69.   </cotizados>
  70. - <resumen>
  71.   <divisa moneda="Euro" codigo="EUR" valor="1.00" />
  72.   <articulos_cotizados>40</articulos_cotizados>
  73.   <id_zona_pais>1</id_zona_pais>
  74.   <nombre_zona_pais>ESPAÑA</nombre_zona_pais>
  75.   <id_zona />
  76.   <nombre_zona />
  77.   <poblacion>castellon</poblacion>
  78.   <provincia />
  79.   <categoria />
  80.   <regimen />
  81.   <fecha_entrada>29/07/2010</fecha_entrada>
  82.   <numero_noches>2</numero_noches>
  83.   <fecha_salida>31/07/2010</fecha_salida>
  84.   <prestatarios_mostrados>4</prestatarios_mostrados>
  85. - <ocupaciones>
  86. - <ocupacion id="h1">
  87.   <adultos numero="2" />
  88.   <ninos numero="1" />
  89.   </ocupacion>
  90. - <ocupacion id="h2">
  91.   <adultos numero="2" />
  92.   <ninos numero="1" />
  93.   </ocupacion>
  94.   </ocupaciones>
  95.   <tiempo_consulta>7.55 segundos</tiempo_consulta>
  96.   </resumen>
  97.   </resultados>
  98.   </reserva>

Y este es el codigo php que estoy usando para jalar los array xml pero me salen repetidos los tipos de habitacion lo que quiero es relacionar los hoteles con los tipos de habitacion de acuerdo al Id del prestatario que es el id del hotel como pueden ver en el xml.

Código PHP:
Ver original
  1. $xml = "login=milog";
  2.             $xml .= "&pass=yaxayxb";
  3.             $xml .= "&dominio=serus";
  4.             $xml .= "&owb_modulo=wse";
  5.             $xml .= "&owb_vista=reservasss";
  6.             $xml .= "&xml_reserva_ws=";
  7.             $xml2 = '<?xml version="1.0" encoding="utf-8" standalone="yes"?>
  8. <reserva accion="consulta">
  9.     <fecha_entrada>'.$fechaen_val.'</fecha_entrada>
  10. <noches>'.date_diff($fechaen_val, $fechasal_val) .'</noches>
  11. <id_tipo_articulo_clase>1</id_tipo_articulo_clase>
  12. <id_tipo_articulo_superclase>1</id_tipo_articulo_superclase>
  13. <id_zona_pais>'.$valorbusca.'</id_zona_pais>
  14. <id_zona>'.$valorbusc.'</id_zona>
  15. <poblacion>'.$valorprov.'</poblacion>
  16. <provincia></provincia>
  17. <nombre_comercial></nombre_comercial>
  18. <categoria>0</categoria>
  19. <suplemento_filtro_1>0</suplemento_filtro_1>
  20.  
  21. <ocupaciones>
  22. <ocupacion>
  23. <adultos numero="'.$npersonas.'"/>
  24. <ninos numero="0"/>
  25. </ocupacion>
  26. </ocupaciones>
  27. </reserva>';
  28.            
  29.             $xml .= urlencode($xml2);
  30.             $length = strlen($xml);
  31.            
  32.  
  33.             //XML Connection
  34.             $fp = @fsockopen("www.miweb.com", 80);
  35.  
  36.             fputs($fp, "POST http://www.miwebcom/miwbooking/index.php HTTP/1.0\nUser-Agent: PHP XMLRPC
  37.             1.1\r\n");
  38.             fputs($fp, "Host: www.miweb.com/owbooking/index.php\n");
  39.             fputs($fp, "Content-Type: application/x-www-form-urlencoded\n");
  40.             fputs($fp, "Content-Length: " . $length . "\n");
  41.             fputs($fp, "\n");
  42.             fputs($fp, $xml);
  43.             $respuesta = "";
  44.             while(!feof($fp)) $respuesta .= fgets($fp);
  45.             fclose ($fp);
  46.             $xml_response = substr($respuesta, strpos($respuesta, "<?xml"));
  47.             $xml_response = str_replace("\r", "", $xml_response);
  48.             $xml_response = str_replace("\n", "", $xml_response);
  49.             $xml_response = str_replace("\t", "", $xml_response);
  50.             $xml_response = trim($xml_response);
  51.          
  52.             $xml = new SimpleXMLElement($xml_response); //Simple XML is available from php5
  53.   foreach ($xml->resultados->cotizados->articulo as $sarticulo) {
  54.  
  55.        $variable_nom_pres[] = '<tr><td colspan="2" valign="top" ><form name="infotel" action="'.site_url('solole_dispo').'" method="post"><input name="nombre_prest" id="nombre_prest" type="hidden" value="'.$sarticulo->nombre_prestatario[0].'" /><input style="background-color:#FFFFFF; border:hidden; font-family:Trebuchet MS; font-weight:bold; color:#993300" type="submit" value="'.$sarticulo->nombre_prestatario[0].'" /></form></td></tr>'.'<tr><td valign="top"><img src="'.$sarticulo->foto_prestatario[0].'" width="150" /></td><td valign="top">'.$sarticulo->descripcion_prestatario[0].'</td></tr>';
  56.        
  57.         $nombre_articulo .= $sarticulo->nombre_articulo[0].'<br>';
  58.         $precio_articulo .= $sarticulo->cotizacion[0].'<br>';
  59.  
  60.       }
  61.         $nom_pres =array_unique($variable_nom_pres);
  62.       foreach($nom_pres as $varpres){
  63.       echo $varpres.'<tr><td></td><td><table  cellpadding="5" cellspacing="5"  width="100%"><tr><td>'.$nombre_articulo.'</td><td>'.$precio_articulo.'</td></tr></table></td></tr>';
  64.       }

Última edición por GNU; 05/07/2010 a las 15:21 Razón: mas claridad