[PHP] Récupérer toutes les valeurs de devises

Récupérer toutes les valeurs de devises [PHP] - PHP - Programmation

Marsh Posté le 27-09-2010 à 15:49:21    

Bonjour à tous,
 
J'ai un petit souci, je souhaite récupérer les valeurs de devises pour un outils de conversion. En gros convertir des euros en dollars avec le taux actuels par exemple, mais mon souci actuel est le suivant :
 
- J'ai commencé par utilisé l'API de Google, problème : toutes les devises n'y figurent pas. Par exemple, si je veux la valeur du Kip (monnaie laotienne), elle n'y figure pas
- Je me suis ensuite tourné vers l'API de Yahoo, tout fonctionnait très bien car ils ont toutes les devises. Seul problème, l'API de Yahoo ne permet pas (sauf erreur de ma part) de faire une requete sur un montant variable. Il ne donne que la valeur de 1 MONNAIE1 en MONNAIE2, donc la valeur de 1 euro en dollars, de 1 Kip en euro, etc. Mais pas de 1000 Kips en euros, pour ça on doit multiplier le résultat obtenu par 1000. Jusque là, ça allait, sauf que je me suis rendu compte que Yahoo avait un dysfonctionnement. Par exemple, un Dong (monnaie vietnamienne) vaut 0.0000381147 EUR, sauf que il y a tellement de décimales avant d'avoir la valeur, que pour Yahoo, 1 dong = 0 euro. Donc quand je multiplie par 1000, ou par 1 millions, j'ai toujours 0 euro. Ca me fait ça évidemment qu'avec quelques monnaies, mais c'est pénible. Et je vois pas trop de solution sur ce problème là.
 
Ainsi, je cherche soit un flux RSS avec les devises (mais j'ai un peu cherché et j'ai rien trouvé, à part des devises "de base" alors que j'ai besoin d'une liste très étendue) soit un site qui propose toutes les devises sur une page et que je pourrais récup.
 
Bref, toutes idées, script déjà mis en place, etc. est bonne à prendre :jap:
 
Merki d'avance :jap:


---------------
Ils ne sont grands que parce que nous sommes à genoux. - Topic Kingdom
Reply

Marsh Posté le 27-09-2010 à 15:49:21   

Reply

Marsh Posté le 27-09-2010 à 16:10:45    

Et des sites comme boursorama, y'a pas les taux de changes?


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 27-09-2010 à 16:21:36    

Ca se limite à quelques devises : http://www.boursorama.com/devises/devises.phtml


---------------
Ils ne sont grands que parce que nous sommes à genoux. - Topic Kingdom
Reply

Marsh Posté le 27-09-2010 à 17:24:49    

Tu peux peut-être garder l'API Yahoo, et détecter les valeurs nulles.
Dans ce cas, tu récupères le facteur de conversion inverse (un euro en Dong, au lieu d'un Dong en euro), puis tu l'inverses ...

Reply

Marsh Posté le 27-09-2010 à 17:36:15    

Paulp a écrit :

Tu peux peut-être garder l'API Yahoo, et détecter les valeurs nulles.
Dans ce cas, tu récupères le facteur de conversion inverse (un euro en Dong, au lieu d'un Dong en euro), puis tu l'inverses ...


 
Ah.... Pas bète ! Je vais explorer cette piste !!!


---------------
Ils ne sont grands que parce que nous sommes à genoux. - Topic Kingdom
Reply

Marsh Posté le 27-09-2010 à 19:10:23    

Mince, quand je fais la division, ça me balance des résultats du genre  
 
3.80437092317E-5
 
Y a une fonction en PHP pour éviter les puissances et avoir un résultat "normal" ?
Car quand je le mouline ensuite dans number_format, il reconnait pas et ça me balance un 0 :D


Message édité par Alekusu2 le 27-09-2010 à 19:18:55

---------------
Ils ne sont grands que parce que nous sommes à genoux. - Topic Kingdom
Reply

Marsh Posté le 28-09-2010 à 09:57:38    

Ça dépend du second argument de number_format.
Tu peux peut-être arrondir au centième supérieur pour avoir 0.01 au lieu de 0.00 ...

Reply

Marsh Posté le 28-09-2010 à 14:38:03    

sprintf sinon ;)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 28-09-2010 à 15:20:06    

Sprintf :
 
<?php
$number = 362525200;
 
echo sprintf("%.3e", $number); // affiche 3.63e+8
?>
 
Ca permet de donner une notation scientifique, mais moi je veux faire l'inverse :/ ou alors j'ai mal compris la doc :D


Message édité par Alekusu2 le 28-09-2010 à 15:21:33

---------------
Ils ne sont grands que parce que nous sommes à genoux. - Topic Kingdom
Reply

Marsh Posté le 28-09-2010 à 16:17:05    

Pour la source, Yahoo est un bon choix gratuit. Sinon, les professionnels utilisent Bloomberg ou Reuters, mais je crois que c'est payant. Parfois, pour certaines devises, on fait des "cross", c'est-à dire que l'on combine deux taux de conversion, par exemple si, pour la devise machin, on n'a que le taux dollar/machin, et que l'on veut le taux euro/machin, on combinera le taux euro/dollar et le taux dollar/machin.
 
Pour le calcul, on peut faire une conversion, par exemple, celle qui est donnée dans les commentaires par Bob le 8 mai 2009 sur la page
http://www.php.net/manual/en/language.types.float.php
 
Ou bien, on peut utiliser des bibliothèques spéciales, par exemple BCMath Arbitrary Precision Mathematics, voir http://www.php.net/manual/en/book.bc.php .

Reply

Marsh Posté le 28-09-2010 à 16:17:05   

Reply

Marsh Posté le 28-09-2010 à 18:30:11    

Yes merci oliv, la fonction de notre chère bob fonctionne à merveille, merki !!!
 
Et merci à tous ceux qui ont essayé de résoudre mon problème :jap: c'est vraiment sympa de votre part :jap:


Message édité par Alekusu2 le 28-09-2010 à 18:31:36

---------------
Ils ne sont grands que parce que nous sommes à genoux. - Topic Kingdom
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed