Aller au contenu

Operations mathematiques de base.


moonwar

Sujets conseillés

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.

Lien vers le commentaire
Partager sur d’autres sites

$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.

Lien vers le commentaire
Partager sur d’autres sites

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(...

Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...