Archief - PHP en XML

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

brutal

Legacy Member
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

MiniJeffrey

Legacy Member
in []-haakjes moet je inhoud met quotes staan ('') dacht ik, ik weet wel niet of dat het probleem is.

Fraggie

Legacy Member
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;

wonko

Legacy Member
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;
}

exxhal

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

brutal

Legacy Member
wonko zei:
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

fotos

Legacy Member
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 :)

wonko

Legacy Member
idd, de macht der gewoonte... die index wordt idd niet gebruikt en mag dus weggelaten worden.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan