Wisselkoers gegevens opvragen

Status
Niet open voor verdere reacties.

Baileys18

Gebruiker
Lid geworden
17 jan 2010
Berichten
6
Ik ben al een hele tijd aan het zoeken, maar kom er niet uit. Ik wil heel graag op mijn website de actuele koers laten zien van de Euro naar de Amerikaanse Dollar en andersom.

Hoe kan ik deze gegevens in een simpel PHP scriptje opvragen? De bedoeling is dat er zo'n soort zin komt te staan:

1 Euro =: ... USD, op de puntjes moet dan de variabele komen te staan die uit een externe wisselkoers site moet worden gehaald zodat de informatie altijd up to date is.

Aangezien ik door de bomen het bos niet meer zie, zou ik willen vragen of iemand hiervoor een simpele oplossing heeft. Ik heb een basiscursus PHP gevolgd, maar weet niet in welke richting ik het moet zoeken.

Alle hulp is welkom!
 
Als ik dit script run onder 'NuSphere PhpEd' werkt het, afgezien van 2 foutmeldingen (de regels met deze 2 valuta's verwijderd).
Maar vanaf mijn host werkt het niet, start wel op, maar na invullen foutmelding over parsing . XML (mss iets aanpassen?)
 
Laatst bewerkt:
Daar krijg ik een invuldingetje en dat wil ik nu net niet. Ik wil dat mijn klanten direct de huidige koers zien. Maar heel erg bedankt voor het meedenken!
 
Dat invulgedeelte kan je natuurlijk weghalen en hier een vaste waarde voor in de plaats zetten. I.p.v. PHP kan je mogelijk ook alleen HTML gebruiken?
 
Nu laat je me verdwalen... :D

Hoe doe ik dat dan? Ik kan niet zo maar lukraak het een en ander weghalen toch?
 
Niet lukraak. Maar wel het inputgedeelte en alle regels met niet terzake doende valuta's.
 
In jouw geval kan de code een stuk makkelijker, je hoeft alleen de XML binnen te halen met file_get_contents en dan met een regexp het getal van de USD matchen.

Dan ben je in 3 regeltjes klaar.

PHP:
<?php

function getValuta() {
    $sXML = file_get_contents('http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml');

    preg_match("|currency=.USD. rate=.([0-9\.]+).|",$sXML, $out);
    return "Koers: 1 EUR = ".$out[1]." USD";
}

echo getValuta();

?>

Tenzij ze de XML structuur aanpassen kan dit geen kwaad lijkt me.

EDIT: wanneer je meerdere valuta's weer zou willen geven zou dat zo kunnen:

PHP:
<?php

function getValuta($val) {
    $sXML = file_get_contents('http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml');

    preg_match("|currency=.$val. rate=.([0-9\.]+).|",$sXML, $out);
    return "Koers: 1 EUR = ".$out[1]." $val";
}

echo getValuta("USD") . "<br />" . getValuta("CAD");

?>
 
Laatst bewerkt:
Ja, dit is helemaal super en makkelijk. Ik zat al aardig in de richting, maar net niet goed met de codes en dan werkt 't niet natuurlijk.

Heel erg bedankt!
 
Bij het vaker aanroepen van de functie is het trouwens misschien een beter idee om het XML bestand eenmaal op te halen buiten de functie.

PHP:
<?php

$sXML = file_get_contents('http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml');
 
function getValuta($val) {

    preg_match("|currency=.$val. rate=.([0-9\.]+).|",$sXML, $out);
    return "Koers: 1 EUR = ".$out[1]." $val";
}
 
echo getValuta("USD") . "<br />" . getValuta("CAD");
 
?>
 
De functie moet ik op meerdere pagina's gebruiken, dus kan ik dan beter voor de tweede optie kiezen?

En als ik dan toch aan het vragen ben, waarom is het beter om de XML pagina dan op te halen?

Ik heb enkel een basiscursus PHP gehad, dus heel veel dingen zijn nog abracadabra voor me. :rolleyes:
 
Nee, voor een enkele functie aanroep per pagina maakt dit geen verschil. Pas als je meerdere valuta op een enkele pagina weer wilt geven maakt die wijziging een verschil.

Wanneer de definitie binnen de functie staat, haalt hij bij elke functie-aanroep de XML opnieuw binnen van de server van www.ecb.europa.eu. Dat geeft dus wat extra overhead.

Zet je hem buiten de functie dan roept hij hem alleen eenmaal op en slaat hij hem op buiten de functie.

Eigenlijk is buiten de functie plaatsen altijd het beste.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan