Hoi allen,

Ik ben nog relatief onervaren op het gebied van PHP, dus bij voorbaat excuses als ik domme vragen stel. :)

Ik ben bezig met een scriptje voor het binnenhalen van files op wegen in Nederland vanuit een xml-feed.

Zie onder. Het werkt zoals ik wil.

<?php


    $url = "http://xml.fileindex.nl/";
 
 
    $data = simplexml_load_file($url);
    $aantalFiles = count($data->filedata->meldingen->melding);
    $fileSamenvatting = $data->filedata->samenvatting;
    $weg = $data->filedata->meldingen->melding->wegnr;

 echo "Een overzicht van de actuele files in Nederland:";
 echo "<br />";
    echo $fileSamenvatting->tekst . "<br />";
   
 
    for($i = 0; $i < $aantalFiles; $i++) {
 
        $fileMelding = $data->filedata->meldingen->melding[$i];
 
        
 		echo "<font color='red'><mark>&nbsp;&nbsp;$fileMelding->wegnr &nbsp;</mark></font>"; 
        echo " van " . $fileMelding->van . " richting " . $fileMelding->naar . "<br />";
        echo round($fileMelding->afstand) . " km (HMP " . $fileMelding->hectostart . " &#8594; HMP " . $fileMelding->hectoeind . ")<br />";
       
 
 
        echo "<br /><br />";
    }

?>


Nu probeerde ik middels onderstaande te filteren op bepaalde wegen in Nederland. Maar als output krijg ik hier alleen de eerst genoemde file op die weg. Als het er meerdere zijn, wordt dus alleen de eerste getoond.

 

<?php


    $url = "http://xml.fileindex.nl/";
 
 
    $data = simplexml_load_file($url);
    $aantalFiles = count($data->filedata->meldingen->melding);
    $fileSamenvatting = $data->filedata->samenvatting;
    $weg = $data->filedata->meldingen->melding->wegnr;

 echo "Een overzicht van de actuele files in Nederland:";
 echo "<br />";
    echo $fileSamenvatting->tekst . "<br />";
   
      if ($weg = "A1") {
 
        $fileMelding = $data->filedata->meldingen->melding;
 
        
 		echo "<font color='red'><mark>&nbsp;&nbsp;$fileMelding->wegnr &nbsp;</mark></font>";
       
        
        
        echo " van " . $fileMelding->van . " richting " . $fileMelding->naar . "<br />";
        echo round($fileMelding->afstand) . " km (HMP " . $fileMelding->hectostart . " &#8594; HMP " . $fileMelding->hectoeind . ")<br />";
       
 
 
        echo "<br /><br />";
    }

?>



Is het gebruik van IF hier überhaubt wel op zijn plaats? Of kan ik beter met FOR gaan proberen?

Nogmaals, het gaat hier om basiskennis, maar kan wel een zetje in de juiste richting gebruiken :) thanks!
Ik denk foreach nog makkelijker is, als je een array uit wilt lezen.
Dit geeft altijd true:
if ($weg = "A1") {

Bij een vergelijking gebruik je ==
if ($weg == "A1") {
zoeken door simplexml laten doen:

<?php
$url = "http://xml.fileindex.nl/";
$data = simplexml_load_file($url);

$opA2 = $data->xpath("//wegnr[. ='A2']/parent::*");

printf('<pre>%s</pre>', print_r($opA2, 1));

foreach($opA2 as $fileMelding) {

echo " van " . $fileMelding->van . " richting " . $fileMelding->naar . "<br />";
echo round($fileMelding->afstand) . " km (HMP " . $fileMelding->hectostart . " &#8594; HMP " . $fileMelding->hectoeind . ")<br />";
}
?>
>> Ik ben nog relatief onervaren op het gebied van PHP, dus bij voorbaat excuses als ik domme vragen stel. :)

>> Nogmaals, het gaat hier om basiskennis, maar kan wel een zetje in de juiste richting gebruiken :) thanks!

Er bestaan (bijna) geen domme vragen. Hooguit domme antwoorden ;-)

Als je gewoon netjes je vraag stelt (en dat doe jij) zal je ook gewoon netjes geholpen worden, dus je hoeft je nergens voor te verontschuldigen.

Welkom op het forum.

Bedankt allemaal! Met jullie tips is het me inmiddels gelukt!

Thanks :)

Reageren