Algemeen forum ontrent de ontwikkelng, design en hosting van weergerelateerde websites (dit laatste om een beetje on topic te blijven)
Door djdeeno
#21317
Hoi Hoi,
Sorry dat ik misschien in herhaling val, ik las ergens een php code waar de xml van buienrader kon inluden, daarmee werd zichtbaar een icoontje (op dat moment een zonnetje) met temperatuur erbij en actuele weersituatie, bijvoorbeeld zonnig, of buien, een korte omschijrving, kan iemand mij helpen aan wat uitleg hiervan? Ben zelf wel aardig bij met php maar kom hier even niet uit.

Op me site heb ik nu dit, zoiets wil ik er wel weer voor terrug maar dan van buienrader met nederlandse taal
http://www.marceldeen.nl/md/pages/weer.php

En kwam deze code tegen hier op het forum:

Code: Selecteer alles
<?php 
//define source of xml-feed
$source = 'http://xml.buienradar.nl';

$feed = simplexml_load_file($source);

$icoon_url = $feed->weergegevens->actueel_weer->buienradar->icoonactueel;
echo '<pre>';
echo '<img src="'.$icoon_url.'"/>'."\\n";
foreach( $feed->weergegevens->actueel_weer->weerstations->weerstation as $station_temp )
{
    $gemtempArray[] = (string)$station_temp->temperatuurGC;
}

echo round(array_sum($gemtempArray) / count($gemtempArray)).'°'."\\n";

?>


wat resulteerd in dit:
http://www.marceldeen.nl/weer/1.php

Deze 2e optie, dus de gegevens uit buienrader wil ik gaan gebruiken, echter kan ik uit de stream xml.buienradar.nl nergens deze temparatuur halen, waar en welk station word hier gebruikt? Kan iemand mij hierin helpen? Zodat ik een weerstation kan kiezen of de actuele van buienradar zelf met temp erbij? De temp die gegeven word komt namelijk niet overeen met de huidige temperatuur, lijkt op een minium temp

Alvast bedankt .

Marcel
Door Overijse
#21321
Met die code die je gevonden hebt tel je enkel alle temperaturen bij elkaar en maakt er een gemiddelde van alle stations van. Daardoor dat je die temperatuur niet terugvind in de xml feed.

ff ter verduidelijking :

array_sum($gemtempArray) = optellen van alle temperaturen

/ count($gemtempArray) = delen door het aantal gegevens

wat je nodig hebt is iets in de aard van het volgende :

echo ($temperatuurGC) where (($stationcode)=xxxx)


Ik hoop dat je hiermee een stapje dichter bij het oplossen van je probleem bent.

Grtz

Kris
Door djdeeno
#21325
Ah ik vat hem, begrijp hem nu, had dit nooit gezien.
Overigens werkt stationcode regel niet.

Is er of weet iemand hoe je in stapjes zon xml kan uitlezen, bedoel er staan tientalle statsions in maar hoe vis ik nou de juiste eruit met zijn temp en gifje.

Ben inmiddels al aardig aan expirimenteren en sta op punt om me tweede meetstation te gaan aanschaffen en deze ook online te gaan aanbieden, me huidige kan dat niet.

Afijn ik zie graag uitleg of een link ergens naartoe zodat ik het kan gaan bestuderen hoe includen van xml en ect werkt.

Bedankt weer
Door wsEpe
#21326
credits voor degene die dit gemaakt heeft; zie ook hier
Dit script geeft een overzicht van alle meetstations en hun waarden. Wellicht dat je hiermee verder kunt.

Code: Selecteer alles
<?php
$luchtvochtigheid = array();
$temperatuur = array();
$windsnelheidBFT = array();
$windrichting = array();
$icon = array();
$stationnaam = array();
$zicht = array();
$stationcode = array();
$url = "http://xml.buienradar.nl";$doc = new DOMDocument();
$doc->load($url);$waarnemingen = $doc->getElementsByTagName("weerstation");
foreach($waarnemingen as $waarneming){$stationnaam[] = $waarneming->getElementsByTagName('stationnaam')->item(0)->firstChild->nodeValue;
$luchtvochtigheid[] = $waarneming->getElementsByTagName('luchtvochtigheid')->item(0)->firstChild->nodeValue;
$temperatuur[] = $waarneming->getElementsByTagName('temperatuurGC')->item(0)->firstChild->nodeValue;
$windsnelheidBFT[] = $waarneming->getElementsByTagName('windsnelheidBF')->item(0)->firstChild->nodeValue;
$windrichting[] = $waarneming->getElementsByTagName('windrichting')->item(0)->firstChild->nodeValue;
$icon[] = $waarneming->getElementsByTagName('icoonactueel')->item(0)->firstChild->nodeValue;
$zicht[] = $waarneming->getElementsByTagName('zichtmeters')->item(0)->firstChild->nodeValue;
$stationcode[] = $waarneming->getElementsByTagName('stationcode')->item(0)->firstChild->nodeValue;
}?>
<html><head></head><body><table><tr><td>Naam</td><td>Vocht %</td><td>Temp °C</td><td>Zicht m</td><td>Wind Bft</td><td>Weer</td></tr>

<?php
for ($i=0, $j = count($stationcode);$i < $j; $i++) {?>

<tr><td><?echo $stationnaam[$i];?></td><td><?echo $luchtvochtigheid[$i];?></td><td><?echo $temperatuur[$i];?></td><td><?echo $zicht[$i];?></td><td><?echo $windrichting[$i];?> - <?echo $windsnelheidBFT[$i];?></td><td><img src="<?echo $icon[$i];?>" height="30>"</td></tr>

<?php }?>
</table>
</body>
</html>
Door djdeeno
#21328
he perfect.
Erg blij mee, het is me duidelijk aan het worden, echter krijg ik no steeds alle stations te zien ipv een, maar zie daar foreach staan, deze verwijderenen en stationsnaam voor in de plaats neem ik aan?
Ik zag dat in me woonplaats al een weerstation actief is ha, na kijken of straks alle gegevens overeen komen.
Door wsEpe
#21329
code kun je bijv. aanpassen door een if toe te voegen:
Code: Selecteer alles
<?php
for ($i=0, $j = count($stationcode);$i < $j; $i++) {?>
<?php
if ($stationnaam[$i]=="Meetstation Arnhem")
echo "<tr><td>$stationnaam[$i]</td><td>$luchtvochtigheid[$i]</td><td>$temperatuur[$i]</td><td>$zicht[$i]</td><td>$windrichting[$i] - $windsnelheidBFT[$i]</td><td><img src='$icon[$i]' height='30>'</td></tr>
";
?>
<?php }?>
Door djdeeno
#21331
Oke dank je wel,

Echter doe ik iets verkeerd, ik krijg met E_ERROR ook geen foutmelding te zien zodat ik weet waar hij strand, ik zie iets over het hoofd...

Code: Selecteer alles
<?php 

$url = "http://xml.buienradar.nl";
$xml = simplexml_load_file($url);

if ($stationnaam[$i]=="Meetstation Arnhem")echo "<tr><td>$stationnaam[$i]</td><td>$luchtvochtigheid[$i]</td><td>$temperatuur[$i]</td><td>$zicht[$i]</td><td>$windrichting[$i] - $windsnelheidBFT[$i]</td><td><img src='$icon[$i]' height='30>'</td></tr>";

?>
Door tvg
#21332
Je zou dit ook eens kunnen proberen


Code: Selecteer alles
<?
$source = 'http://xml.buienradar.nl';
$feed = simplexml_load_file($source);   
$icoon = $feed->xpath("//icoonactueel");
echo "<img src='$icoon[1]'></a>";
?>




Groet
Theo
Door djdeeno
#21334
Hey Theo
Dat werkt ook, maar zie dan alleen een incoontje.

Maar ik wil het begrijpen, voorbeeld: alleen de gegevens van, na laten we weerstation Berkhout als voorbeeld nemen, daar alleen de temp en of icoontje weersituatie in een php. Dat we alle stations in beeld zien dat werkt ook prima, maar wil eigenlijk eentje eruit plukken, of liever een gebruiken ipv allemaal, code hierboven zou moeten werken maar ik krijg een lege pagina en kan geen errors uitlezen
Door tvg
#21335
Marcel

Station Berkhout is nr 2 in de array dus met temparetuur wordt dat;

Code: Selecteer alles
<?
$source = 'http://xml.buienradar.nl';
$feed = simplexml_load_file($source);   
$icoon = $feed->xpath("//icoonactueel");
$temp = $feed->xpath("//temperatuurGC");
echo "<img src='$icoon[2]'><br>$temp[2] °C";


?>



Als je "print_r($feed);" toevoegt aan je code kun je in de bronweergave zien welk array nummer bij het station hoort.