FAQ
Hola a todos.

Estoy tratando seleccionar datos de un archivo xml, pero no lo consigo.

Os pego el xml

- ----------------
<?xml version="1.0" encoding="UTF-8"?>
<tarifa>
<grupo>
<id>1</id>
<dias>
<maxd>2</maxd>
<kmdia>500</kmdia>
<precio>65,60</precio>
</dias>
<dias>
<maxd>6</maxd>
<kmdia>500</kmdia>
<precio>65,60</precio>
</dias>
<dias>
<maxd>21</maxd>
<kmdia>500</kmdia>
<precio>65,60</precio>
</dias>
<dias>
<maxd>90</maxd>
<kmdia>500</kmdia>
<precio>65,60</precio>
</dias>
<extra>0,17</extra>
</grupo>
<grupo>
<id>2</id>
<dias>
<maxd>2</maxd>
<kmdia>500</kmdia>
<precio>65,60</precio>
</dias>
<extra>0,17</extra>
</grupo>
</tarifa>
- -----------------

El php.
- ----------------------
$tarif= simplexml_load_file('tarifa.xml');

foreach($tarif->grupo as $grupo){
foreach($grupo->id as $id) {
if($id== $_POST["vehiculo"]){
foreach($id->dias as $dias){
foreach($dias->maxd as $maxdias){
echo $maxdias;
}
}
}
}
}
- ----------------------

Lo que trato de hacer es:

- - Primero comparar el valor del nodo "id" con el campo recogido en la
variable $_POST["vehiculo"], y luego en función de ese valor, poder
acceder a los valores almacenados en "maxd.

Hasta ahora sin resultado.

¿Alguna idea?.

Gracias .
- --


< ¡¡Nos vemos!! >
----------------------------
\
\
.::!!!!!!!:.
.!!!!!:. .:!!!!!!!!!!!!
~~~~!!!!!!. .:!!!!!!!!!UWWW$$$
:$$NWX!!: .:!!!!!!XUWW$$$$$$$$$P
$$$$$##WX!: .<!!!!UW$$$$" $$$$$$$$#
$$$$$ $$$UX :!!UW$$$$$$$$$ 4$$$$$*
^$$$B $$$$\ $$$$$$$$$$$$ d$$R"
"*$bd$$$$ '*$$$$$$$$$$$o+#"
"""" """""""

Search Discussions

  • Pablo Braulio at Jun 16, 2008 at 2:49 pm

    germana escribió:
    Haz comprobado que efectivamente $_POST["vehiculo"] en algun momento sea
    igual a algun $id ???

    o..... exactamento cual es el resultado que hasta ahora te ha arrojado??
    Si eso está comprobado.

    El valor de $_POST["vehiculo"] es 1. Al igual que el valor del primer "id".

    Hasta ahora no obtengo nada por pantalla.

    Gracias.
    - --


    < ¡¡Nos vemos!! >
    ----------------------------
    \
    \
    .::!!!!!!!:.
    .!!!!!:. .:!!!!!!!!!!!!
    ~~~~!!!!!!. .:!!!!!!!!!UWWW$$$
    :$$NWX!!: .:!!!!!!XUWW$$$$$$$$$P
    $$$$$##WX!: .<!!!!UW$$$$" $$$$$$$$#
    $$$$$ $$$UX :!!UW$$$$$$$$$ 4$$$$$*
    ^$$$B $$$$\ $$$$$$$$$$$$ d$$R"
    "*$bd$$$$ '*$$$$$$$$$$$o+#"
    """" """""""
  • Martin Scotta at Jun 16, 2008 at 2:59 pm
    el problema lo tenes en la estructura del xml

    estas haciendo $id->dias cuando tu estructura es

    <grupo>
    <id>1</id>
    <dias>
    <maxd>2</maxd>
    <kmdia>500</kmdia>
    <precio>65,60</precio>

    deberias hacer $grupo->id y el foreach ($grupo->dias as $dia) o algo asi
    Mrtn
    On Mon, Jun 16, 2008 at 11:49 AM, Pablo Braulio wrote:
    -----BEGIN PGP SIGNED MESSAGE-----
    Hash: SHA1

    germana escribió:
    Haz comprobado que efectivamente $_POST["vehiculo"] en algun momento sea
    igual a algun $id ???

    o..... exactamento cual es el resultado que hasta ahora te ha arrojado??
    Si eso está comprobado.

    El valor de $_POST["vehiculo"] es 1. Al igual que el valor del primer "id".

    Hasta ahora no obtengo nada por pantalla.

    Gracias.
    - --


    < ¡¡Nos vemos!! >
    ----------------------------
    \
    \
    .::!!!!!!!:.
    .!!!!!:. .:!!!!!!!!!!!!
    ~~~~!!!!!!. .:!!!!!!!!!UWWW$$$
    :$$NWX!!: .:!!!!!!XUWW$$$$$$$$$P
    $$$$$##WX!: .<!!!!UW$$$$" $$$$$$$$#
    $$$$$ $$$UX :!!UW$$$$$$$$$ 4$$$$$*
    ^$$$B $$$$\ $$$$$$$$$$$$ d$$R"
    "*$bd$$$$ '*$$$$$$$$$$$o+#"
    """" """""""


    --
    PHP Spanish Localization Talk Mailing List (http://www.php.net/)
    To unsubscribe, visit: http://www.php.net/unsub.php


    --
    Martin Scotta
    http://www.echess.com.ar/

    Decile NO al soft-pirata, usa Linux!
  • Pablo Braulio at Jun 16, 2008 at 3:30 pm

    Martin Scotta escribió:
    el problema lo tenes en la estructura del xml

    estas haciendo $id->dias cuando tu estructura es

    <grupo>
    <id>1</id>
    <dias>
    <maxd>2</maxd>
    <kmdia>500</kmdia>
    <precio>65,60</precio>

    deberias hacer $grupo->id y el foreach ($grupo->dias as $dia) o algo asi
    Mrtn
    No entiendo muy bien a lo que te refieres.

    Estoy haciendo $id->dias pues "dias" es el nombre del siguiente nodo
    tras "id".

    Por otro lado si pongo en el tercer foreach $grupo->dias as $dia, me da
    un error.


    Warning: Invalid argument supplied for foreach() in...

    Si pudieras ponerme un ejemplo, te lo agradecería.

    Gracias por el comentario.

    - --


    < ¡¡Nos vemos!! >
    ----------------------------
    \
    \
    .::!!!!!!!:.
    .!!!!!:. .:!!!!!!!!!!!!
    ~~~~!!!!!!. .:!!!!!!!!!UWWW$$$
    :$$NWX!!: .:!!!!!!XUWW$$$$$$$$$P
    $$$$$##WX!: .<!!!!UW$$$$" $$$$$$$$#
    $$$$$ $$$UX :!!UW$$$$$$$$$ 4$$$$$*
    ^$$$B $$$$\ $$$$$$$$$$$$ d$$R"
    "*$bd$$$$ '*$$$$$$$$$$$o+#"
    """" """""""
  • Martin Scotta at Jun 16, 2008 at 4:07 pm
    $tarif= simplexml_load_file('tarifa.xml');

    foreach($tarif->grupo as $grupo){
    if($grupo->id == $_POST["vehiculo"]){
    foreach($grupo->dias as $dias){
    foreach($dias->maxd as $maxdias){
    echo $maxdias;
    }
    }
    }
    }

    asi tendria q funcionar
    On Mon, Jun 16, 2008 at 12:30 PM, Pablo Braulio wrote:
    -----BEGIN PGP SIGNED MESSAGE-----
    Hash: SHA1

    Martin Scotta escribió:
    el problema lo tenes en la estructura del xml

    estas haciendo $id->dias cuando tu estructura es

    <grupo>
    <id>1</id>
    <dias>
    <maxd>2</maxd>
    <kmdia>500</kmdia>
    <precio>65,60</precio>

    deberias hacer $grupo->id y el foreach ($grupo->dias as $dia) o algo asi
    Mrtn
    No entiendo muy bien a lo que te refieres.

    Estoy haciendo $id->dias pues "dias" es el nombre del siguiente nodo
    tras "id".

    Por otro lado si pongo en el tercer foreach $grupo->dias as $dia, me da
    un error.


    Warning: Invalid argument supplied for foreach() in...

    Si pudieras ponerme un ejemplo, te lo agradecería.

    Gracias por el comentario.

    - --


    < ¡¡Nos vemos!! >
    ----------------------------
    \
    \
    .::!!!!!!!:.
    .!!!!!:. .:!!!!!!!!!!!!
    ~~~~!!!!!!. .:!!!!!!!!!UWWW$$$
    :$$NWX!!: .:!!!!!!XUWW$$$$$$$$$P
    $$$$$##WX!: .<!!!!UW$$$$" $$$$$$$$#
    $$$$$ $$$UX :!!UW$$$$$$$$$ 4$$$$$*
    ^$$$B $$$$\ $$$$$$$$$$$$ d$$R"
    "*$bd$$$$ '*$$$$$$$$$$$o+#"
    """" """""""


    --
    PHP Spanish Localization Talk Mailing List (http://www.php.net/)
    To unsubscribe, visit: http://www.php.net/unsub.php


    --
    Martin Scotta
    http://www.echess.com.ar/

    Decile NO al soft-pirata, usa Linux!
  • Pablo Braulio at Jun 16, 2008 at 6:54 pm

    Martin Scotta escribió:
    $tarif= simplexml_load_file('tarifa.xml');

    foreach($tarif->grupo as $grupo){
    if($grupo->id == $_POST["vehiculo"]){
    foreach($grupo->dias as $dias){
    foreach($dias->maxd as $maxdias){
    echo $maxdias;
    }
    }
    }
    }

    asi tendria q funcionar
    Efectivamente.

    Muchas gracias.

    - --


    < ¡¡Nos vemos!! >
    ----------------------------
    \
    \
    .::!!!!!!!:.
    .!!!!!:. .:!!!!!!!!!!!!
    ~~~~!!!!!!. .:!!!!!!!!!UWWW$$$
    :$$NWX!!: .:!!!!!!XUWW$$$$$$$$$P
    $$$$$##WX!: .<!!!!UW$$$$" $$$$$$$$#
    $$$$$ $$$UX :!!UW$$$$$$$$$ 4$$$$$*
    ^$$$B $$$$\ $$$$$$$$$$$$ d$$R"
    "*$bd$$$$ '*$$$$$$$$$$$o+#"
    """" """""""
  • Martin Scotta at Jun 16, 2008 at 7:06 pm
    Lo importante en estos casos no es el hecho de haber resuelto el
    problema presente, sino el hecho de poder aprender del mismo.

    Por otro lado, no estas validando nunca que la estructura del xml sea correcta.
    Ademas existen diferentes maneras de realizar la misma tarea, xpath es
    muy comodo en ese sentido, validas datos y estructura en una misma
    sentencia

    if(($nodo = $xml->xpath("id/{$_POST['vehiculo']}")) !== false)
    {
    #$nodo tiene una coleccion de nodos q cumplen la condicion
    # si 1 solo cumple la condicion ==> $nodo[0] es lo q buscaba
    }


    en el ejemplo anterior, me evito loop, repeticiones y ese tipo de cosa.

    Espero te sirva!
    Martin

    disclaimer: escribi el codigo en el mail asi q puede q tenga problemas
    de sintaxis, pero la idea se entiende
    On Mon, Jun 16, 2008 at 3:54 PM, Pablo Braulio wrote:
    -----BEGIN PGP SIGNED MESSAGE-----
    Hash: SHA1

    Martin Scotta escribió:
    $tarif= simplexml_load_file('tarifa.xml');

    foreach($tarif->grupo as $grupo){
    if($grupo->id == $_POST["vehiculo"]){
    foreach($grupo->dias as $dias){
    foreach($dias->maxd as $maxdias){
    echo $maxdias;
    }
    }
    }
    }

    asi tendria q funcionar
    Efectivamente.

    Muchas gracias.

    - --


    < ¡¡Nos vemos!! >
    ----------------------------
    \
    \
    .::!!!!!!!:.
    .!!!!!:. .:!!!!!!!!!!!!
    ~~~~!!!!!!. .:!!!!!!!!!UWWW$$$
    :$$NWX!!: .:!!!!!!XUWW$$$$$$$$$P
    $$$$$##WX!: .<!!!!UW$$$$" $$$$$$$$#
    $$$$$ $$$UX :!!UW$$$$$$$$$ 4$$$$$*
    ^$$$B $$$$\ $$$$$$$$$$$$ d$$R"
    "*$bd$$$$ '*$$$$$$$$$$$o+#"
    """" """""""


    --
    Martin Scotta
    http://www.echess.com.ar/

    Decile NO al soft-pirata, usa Linux!

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
groupphp-general-es @
categoriesphp
postedJun 16, '08 at 2:29p
activeJun 16, '08 at 7:06p
posts7
users2
websitephp.net

2 users in discussion

Pablo Braulio: 4 posts Martin Scotta: 3 posts

People

Translate

site design / logo © 2022 Grokbase