Thread: PHP en XML

  1. #1

    Registered
    22/12/09
    Location
    Ravels
    Posts
    35
    iTrader
    0
    Mentioned
    0 Post(s)

    PHP en XML

    Ik heb een XML file:
    <fotos>
    <image>
    <nr>1</nr>
    <title>foto1</title>
    </image>
    <image>
    <nr>2</nr>
    <title>foto2</title>
    </image>
    </fotos>

    Nu wil ik via php en de get functie de title van een foto weergeven:

    link is bijvoorbeeld: foto.php?nummer=1 (dus de titel van foto nummer 1 weergeven).

    <?php
    if (isset($_GET['nummer']))
    { $nr= $_GET['nummer'];
    $xml = simplexml_load_file("fotos.xml");
    $title=$xml->image[$nr]->title;
    }
    ?>

    Maar dat gedeelte in bold werkt dus niet, als ik daar zelf een 0 of een 1 ingeef werkt het wel. Kan er iemand mij op de juiste weg helpen ?!

    bedankt
    www.peades.be - eenvoudige websites voor ieders budget
    no votes  

  2. #2
    MiniJeffrey's Avatar
    Registered
    24/10/07
    Location
    Harelbeke
    Posts
    7,758
    iTrader
    0
    Mentioned
    2 Post(s)
    Reputation
    1/446
    in []-haakjes moet je inhoud met quotes staan ('') dacht ik, ik weet wel niet of dat het probleem is.
    Let us pray for all the fools that be
    no votes  

  3. #3
    Fraggie's Avatar
    Registered
    17/07/02
    Posts
    9,537
    iTrader
    3 (100%)
    Mentioned
    0 Post(s)
    Reputation
    4/39
    Ik heb slechte ervaringen met het gebruik van variabelen en twee keer de -> operator. Nu het is dan ook meer dan een jaar geleden dat ik nog eens naar PHP gekeken heb.

    Mijn voorstel in 2 stappen:

    $tmp = $xml->image[$nr];
    $title = $tmp->title;
    no votes  

  4. #4

    Registered
    25/08/05
    Posts
    68
    iTrader
    0
    Mentioned
    0 Post(s)
    de waarde van nr wordt niet automagisch gebruikt om je indexering te doen. Je zal moeten op zoek gaan naar de node die je nr bevat. Zonder getest te hebben:
    Code:
    function get_title_for_nr($xml, $nr){
      foreach($xml->image as $index => $node){
        if($node->nr == $nr) return $node->title;
      }
      return false;
    }
    Nietske
    no votes  

  5. #5
    exxhal's Avatar
    Registered
    14/09/06
    Location
    Brasschaat
    Posts
    506
    iTrader
    5 (100%)
    Mentioned
    0 Post(s)

    xml

    Eventueel eens een echo geven van je $nr om te kijken of daar wel een waarde is. (moest je dat nog niet hebben gedaan.)
    no votes  

  6. #6

    Registered
    22/12/09
    Location
    Ravels
    Posts
    35
    iTrader
    0
    Mentioned
    0 Post(s)
    Quote Originally Posted by wonko View Post
    This quote is hidden because you are ignoring this member. Show
    de waarde van nr wordt niet automagisch gebruikt om je indexering te doen. Je zal moeten op zoek gaan naar de node die je nr bevat. Zonder getest te hebben:
    Code:
    function get_title_for_nr($xml, $nr){
      foreach($xml->image as $index => $node){
        if($node->nr == $nr) return $node->title;
      }
      return false;
    }
    Bedankt, deze werkt prima !
    Alleen... ik snap het niet helemaal

    Kan er iemand een beetje uitleg geven over wat er precies gebeurt , vooral de foreach regel.

    bedankt
    Last edited by brutal; 30-09-2010 at 21:41. Reason: spellingsfoutjes
    www.peades.be - eenvoudige websites voor ieders budget
    no votes  

  7. #7

    Registered
    06/01/09
    Location
    Hasselt
    Posts
    195
    iTrader
    16 (90%)
    Mentioned
    0 Post(s)
    De foreach loopt over elke image node in xml , de as $index => $node geeft de node terug die in $xml->image staat voor een bepaalde index.

    Je mag eigenlijk 'as $index=> $node' ook schrijven als 'as $node' want de $index gebruik je hier toch niet, de => geeft een key=>value relatie aan en de key heb je hier niet nodig.
    Maar meestal wordt dit uit gewoonte zo geschreven, ik doe dat meestal ook
    no votes  

  8. #8

    Registered
    25/08/05
    Posts
    68
    iTrader
    0
    Mentioned
    0 Post(s)
    idd, de macht der gewoonte... die index wordt idd niet gebruikt en mag dus weggelaten worden.
    Nietske
    no votes  

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  

Log in

Log in