moonwar Posté 1 Mars 2009 Posté 1 Mars 2009 Bonjour, J'utilise a la base le code de la Banque Europeenne. Ce code donne le taux de change de l'EURO en fonction des autres devis. La devis DZD n'y est pas. La devis DZD est calculer à la base du taux de change de l'USD. 1USD = 72 DZD. Après qlq modifications, je suis arrivé a ce qui suit (Explication des etapes dans le code): <?php $XMLContent= file("http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml"); foreach ($XMLContent as $line) { if (ereg("currency='([[:alpha:]]+)'",$line,$currencyCode)) { if (ereg("rate='([[:graph:]]+)'",$line,$rate)) { //On calcul la valeur de 1 EURO en fonction de currencyCode //currencyCode correspond aux autres devis//par exemple pour 1 EURO en fonction de CAD canadien : $currencyCode == "CAD") //On calcul la valeur de 1USD en fonction de l'EURO//div pour identifier la fonction inverse $div = 1; //valeur de 1 USD en fonction de EURO if ($currencyCode[1] == "USD") { $1usd = '.$div/$rate[1].' '.EURO.'; } //On cherche la valeur de 1 DZD //a noter que le DZD est calculé a la base du USD $dzdusd = 72; //On calcul valeur de 1 DZD en fonction du USD $1dzd = $dzdusd * $1usd; //valeur arrondis a 3 chiffres après la virgule echo '1 DZD = '.round($1dzd,3).' '.USD.'<br />'; //valeur de 1 DZD en fonction de CAD if ($currencyCode[1] == "CAD") { echo '1 DZD = '.round($1dzd * $div/$rate[1],3).' '.$currencyCode[1].'<br />'; } //valeur de 1 DZD en fonction de GBP if ($currencyCode[1] == "GBP") { echo '1 DZD = '.round($1dzd * $div/$rate[1],3).' '.$currencyCode[1].'<br />'; } } } } ?> Coté logique, je ne pense pas que je me suis trompé, mais ca ne fonctionne pas ... Merci pour votre aide.
jcaron Posté 1 Mars 2009 Posté 1 Mars 2009 $1usd = '.$div/$rate[1].' '.EURO.'; Je ne fais pas du php tous les jours, mais ça, je ne sais pas très bien ce que ça veut dire. J'ai l'impression que tu t'es un peu emmêlé les pinceaux, au moins avec les ' et les . non? Jacques.
moonwar Posté 2 Mars 2009 Auteur Posté 2 Mars 2009 Merci pour ta réponse. $1usd = '.$div/$rate[1].' '.EURO.'; Jusque là, c'est sur que ca marche, mais le probleme c'est apres le echo '1 DZD = '.round($1dzd * $div/$rate[1],3).' '.$currencyCode[1].'<br />'; Je crois que le probleme est à partir du round(...
jcaron Posté 2 Mars 2009 Posté 2 Mars 2009 Fais un echo $variable après chaque calcul... Si tu penses vraiment que ton $1usd contient ce que tu veux, je crois que tu te trompes lourdement... Jacques.
moonwar Posté 2 Mars 2009 Auteur Posté 2 Mars 2009 Ouin Jacques... le probleme est à partir du round(... Si je connaissais la cause, je ne serais pas sur le forum
jcaron Posté 2 Mars 2009 Posté 2 Mars 2009 Bon, alors: 1. Ton script ne s'exécute même pas, donne une erreur, et indique la ligne dont je te parle, donc je ne vois pas bien comment ton problème serait au round... 2. En PHP comme dans de nombreux autres langages, le nom d'une variable ne peut pas commencer par un chiffre. Donc remplace tes $1usd par $usd et $1dzd par $dzd 3. La ligne que je t'ai indiquée n'est même pas syntaxiquement valide, et même si elle l'était, elle ne fait absolument pas ce que tu veux. Il faut écrire: $usd = $div / $rate[1] 4. Même avec ça, je ne suis pas sûr que la logique de ton script donne ce que tu veux, mais ça c'est une autre histoire Jacques.
LiFi Posté 2 Mars 2009 Posté 2 Mars 2009 Conseil: Quand on demande de l'aide il faut donner son script comme tu l'as fait mais aussi donner les messages d'erreur, dire ce que tu attends comme résultat et ce que tu obtient, faire tout pour faciliter la tache de ceux qui voudront t'aider. La ligne $1usd = '.$div/$rate[1].' '.EURO.'; veut dire quoi? pourquoi mettre un = ' . ? Jamais vu ça nul part et ça n'a pas de sens.
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant