Pour un projet professionnel, j’ai du ajouter une fonctionnalité pour proposer de convertir une devise vers une autre. Je vous livre ici le résultat de mes cogitations…
Les objectifs étaient :
- récupérer le taux actualisé à travers un service financier
- Permettre de convertir de n’importe quelle devise vers une autre
- l’internaute indiquera le montant à convertir
1) Pour récupérer le taux du jour, je me suis orienté vers « Yahoo! Finance Currency Conversion ».
En interrogeant l’url Yahoo! Finance currency conversion, vous recevrez en retour le taux de change qui vous intéresse. La donnée est renvoyée dans un format CSV. Prenons un exemple simple : pour obtenir le taux de change EUR vers VND (vietnam Dong), nous devrons formater l’url comme suit : http://quote.yahoo.com/d/quotes.csv?s=EURVND=X&f=l1&e=.csv
Notre premier script PHP (nommé yahoo_rate_exchange.php) se chargera de récupérer ce taux et retournera le montant dans la devise d’arrivé :
<?php function currency_conversion_amount ($amount_from, $currency_from, $currency_to) { $url = "http://quote.yahoo.com/d/quotes.csv?s=" . $currency_from . $currency_to . "=X" . "&f=l1&e=.csv"; $handle = fopen($url, "r"); $exchange_rate = fread($handle, 2000); fclose($handle ); $amount_to = $amount_from * $exchange_rate; echo $amount_to; } ?>
2) Ensuite, on passe en paramètre les 3 valeurs attendues par notre fonction et nous obtiendrons le montant du change dans la devise d’arrivé. Nommez le fichier amount_currency.php par exemple.
<?php include ("yahoo_rate_exchange.php"); $currency_from=$_REQUEST['currency_from']; $currency_to=$_REQUEST['currency_to']; $amount_from=$_REQUEST['amount_from']; currency_conversion_amount ($amount_from, $currency_from, $currency_to); ?>
Un petit test s’impose ! C’est très simple, dans votre navigateur, saisissez une URL de type http://(mon domaine)/yahoo_currency.php?amount_from=100¤cy_from=EUR¤cy_to=VND
En principe, vous devez voir s’afficher le montant converti dans la devise d’arrivé.
3) Reste à ajouter un petit formulaire pour demander à l’internaute les 3 informations suivantes : montant à convertir, devise de départ et devise d’arrive. Et pour ne pas être en reste, on « ajaxisera » le tout pour éviter de partir sur une page tierce et / ou de recharger la page web pour obtenir le résultat.
<script type = "text/javascript"> var XMLHttp; /* Creation de l'objet XML Http en fonction du navigateur */ if (navigator.appName == "Microsoft Internet Explorer") { XMLHttp = new ActiveXObject("Microsoft.XMLHTTP"); } else { XMLHttp = new XMLHttpRequest(); } function get_currency() { /* variables - initialisation avec les valeurs saisies dans "currency_form" */ var currency_from = ""; var currency_to = ""; var value_amount = 1; /* montant à convertir */ var form_value_amount = document.getElementById('amount'); value_amount = form_value_amount.value; /* on recupere la devise de départ */ var sel_currency_from = document.getElementById('list_currency_from'); currency_from = sel_currency_from.value; /* on recupere la devise d'arrivé */ var sel_currency_to = document.getElementById('list_currency_to'); currency_to = sel_currency_to.value; /* Aucune devise de choisi, arrêter */ if ( currency_from != "" || currency_to != "") { /* On envoie la requete au serveur */ var url = "amount_currency.php?" + "amount_from=" + value_amount + "¤cy_from=" + currency_from + "¤cy_to=" + currency_to; XMLHttp.open("GET", url, true); XMLHttp.onreadystatechange = function() { if (XMLHttp.readyState == 4) { /* Quande le serveur a fini son travail, afficher le résultat */ var response = value_amount + " " + currency_from + " = " + XMLHttp.responseText + " " + currency_to; document.getElementById( 'result_area' ).innerHTML = response; } XMLHttp.send(null); } } else { alert ("Please select a currency") } } </script> <form name=currency_form> <table> <tr> <td> Montant : <INPUT TYPE="text" NAME="amount" id="amount" VALUE="1" SIZE=10> </td> </tr> <tr> <td> <p>Convertir de la devise :</p> <select name="list_currency_from" id="list_currency_from"> <OPTION VALUE="EUR" SELECTED>Euro EUR</OPTION> <OPTION VALUE="USD">United States Dollars USD</OPTION> <OPTION VALUE="GBP">United Kingdom Pounds GBP</OPTION> <OPTION VALUE="CAD">Canada Dollars CAD</OPTION> <OPTION VALUE="AUD">Australia Dollars AUD</OPTION> <OPTION VALUE="JPY">Japan Yen JPY</OPTION> <OPTION VALUE="INR">India Rupees INR</OPTION> <OPTION VALUE="NZD">New Zealand Dollars NZD</OPTION> <OPTION VALUE="CHF">Switzerland Francs CHF</OPTION> <OPTION VALUE="ZAR">South Africa Rand ZAR</OPTION> <OPTION VALUE="EUR">-- Top 85 Currencies: --</OPTION> <OPTION VALUE="AFA">Afghanistan Afghanis AFA</option> <OPTION VALUE="ALL">Albania Leke ALL</option> <OPTION VALUE="DZD">Algeria Dinars DZD</OPTION> <OPTION VALUE="USD">America (United States) Dollars USD</OPTION> <OPTION VALUE="ARS">Argentina Pesos ARS</OPTION> <OPTION VALUE="AUD">Australia Dollars AUD</OPTION> <OPTION VALUE="ATS">Austria Schillings ATS*</OPTION> <OPTION VALUE="BSD">Bahamas Dollars BSD</OPTION> <OPTION VALUE="BHD">Bahrain Dinars BHD</OPTION> <OPTION VALUE="BDT">Bangladesh Taka BDT</OPTION> <OPTION VALUE="BBD">Barbados Dollars BBD</OPTION> <OPTION VALUE="BEF">Belgium Francs BEF*</OPTION> <OPTION VALUE="BMD">Bermuda Dollars BMD</OPTION> <OPTION VALUE="BRL">Brazil Reais BRL</OPTION> <OPTION VALUE="BGN">Bulgaria Leva BGN</OPTION> <OPTION VALUE="CAD">Canada Dollars CAD</OPTION> <OPTION VALUE="XOF">CFA BCEAO Francs XOF</OPTION> <OPTION VALUE="XAF">CFA BEAC Francs XAF</OPTION> <OPTION VALUE="CLP">Chile Pesos CLP</OPTION> <OPTION VALUE="CNY">China Yuan Renminbi CNY</OPTION> <OPTION VALUE="COP">Colombia Pesos COP</OPTION> <OPTION VALUE="XPF">Comptoirs Français du Pacifique Francs</OPTION> <OPTION VALUE="CRC">Costa Rica Colones CRC</OPTION> <OPTION VALUE="HRK">Croatia Kuna HRK</OPTION> <OPTION VALUE="CYP">Cyprus Pounds CYP</OPTION> <OPTION VALUE="CZK">Czech Republic Koruny CZK</OPTION> <OPTION VALUE="DKK">Denmark Kroner DKK</OPTION> <OPTION VALUE="DEM">Deutsche (Germany) Marks DEM*</OPTION> <OPTION VALUE="DOP">Dominican Republic Pesos DOP</OPTION> <OPTION VALUE="NLG">Dutch (Netherlands) Guilders NLG*</OPTION> <OPTION VALUE="XCD">Eastern Caribbean Dollars XCD</OPTION> <OPTION VALUE="EGP">Egypt Pounds EGP</OPTION> <OPTION VALUE="EEK">Estonia Krooni EEK</OPTION> <OPTION VALUE="EUR">Euro EUR</OPTION> <OPTION VALUE="FJD">Fiji Dollars FJD</OPTION> <OPTION VALUE="FIM">Finland Markkaa FIM*</OPTION> <OPTION VALUE="FRF">France Francs FRF*</OPTION> <OPTION VALUE="DEM">Germany Deutsche Marks DEM*</OPTION> <OPTION VALUE="XAU">Gold Ounces XAU</OPTION> <OPTION VALUE="GRD">Greece Drachmae GRD*</OPTION> <OPTION VALUE="NLG">Holland (Netherlands) Guilders NLG*</OPTION> <OPTION VALUE="HKD">Hong Kong Dollars HKD</OPTION> <OPTION VALUE="HUF">Hungary Forint HUF</OPTION> <OPTION VALUE="ISK">Iceland Kronur ISK</OPTION> <OPTION VALUE="XDR">IMF Special Drawing Right XDR</OPTION> <OPTION VALUE="INR">India Rupees INR</OPTION> <OPTION VALUE="IDR">Indonesia Rupiahs IDR</OPTION> <OPTION VALUE="IRR">Iran Rials IRR</OPTION> <OPTION VALUE="IQD">Iraq Dinars IQD</OPTION> <OPTION VALUE="IEP">Ireland Pounds IEP*</OPTION> <OPTION VALUE="ILS">Israel New Shekels ILS</OPTION> <OPTION VALUE="ITL">Italy Lire ITL*</OPTION> <OPTION VALUE="JMD">Jamaica Dollars JMD</OPTION> <OPTION VALUE="JPY">Japan Yen JPY</OPTION> <OPTION VALUE="JOD">Jordan Dinars JOD</OPTION> <OPTION VALUE="KES">Kenya Shillings KES</OPTION> <OPTION VALUE="KRW">Korea (South) Won KRW</OPTION> <OPTION VALUE="KWD">Kuwait Dinars KWD</OPTION> <OPTION VALUE="LBP">Lebanon Pounds LBP</OPTION> <OPTION VALUE="LUF">Luxembourg Francs LUF*</OPTION> <OPTION VALUE="MYR">Malaysia Ringgits MYR</OPTION> <OPTION VALUE="MTL">Malta Liri MTL</OPTION> <OPTION VALUE="MUR">Mauritius Rupees MUR</OPTION> <OPTION VALUE="MXN">Mexico Pesos MXN</OPTION> <OPTION VALUE="MAD">Morocco Dirhams MAD</OPTION> <OPTION VALUE="NLG">Netherlands Guilders NLG*</OPTION> <OPTION VALUE="NZD">New Zealand Dollars NZD</OPTION> <OPTION VALUE="NOK">Norway Kroner NOK</OPTION> <OPTION VALUE="OMR">Oman Rials OMR</OPTION> <OPTION VALUE="PKR">Pakistan Rupees PKR</OPTION> <OPTION VALUE="XPD">Palladium Ounces XPD</OPTION> <OPTION VALUE="PEN">Peru Nuevos Soles PEN</OPTION> <OPTION VALUE="PHP">Philippines Pesos PHP</OPTION> <OPTION VALUE="XPT">Platinum Ounces XPT</OPTION> <OPTION VALUE="PLN">Poland Zlotych PLN</OPTION> <OPTION VALUE="PTE">Portugal Escudos PTE*</OPTION> <OPTION VALUE="QAR">Qatar Riyals QAR</OPTION> <OPTION VALUE="ROL">Romania Lei ROL</OPTION> <OPTION VALUE="RUB">Russia Rubles RUB</OPTION> <OPTION VALUE="SAR">Saudi Arabia Riyals SAR</OPTION> <OPTION VALUE="XAG">Silver Ounces XAG</OPTION> <OPTION VALUE="SGD">Singapore Dollars SGD</OPTION> <OPTION VALUE="SKK">Slovakia Koruny SKK</OPTION> <OPTION VALUE="SIT">Slovenia Tolars SIT</OPTION> <OPTION VALUE="ZAR">South Africa Rand ZAR</OPTION> <OPTION VALUE="KRW">South Korea Won KRW</OPTION> <OPTION VALUE="ESP">Spain Pesetas ESP*</OPTION> <OPTION VALUE="XDR">Special Drawing Rights (IMF) XDR</OPTION> <OPTION VALUE="LKR">Sri Lanka Rupees LKR</OPTION> <OPTION VALUE="SDD">Sudan Dinars SDD</OPTION> <OPTION VALUE="SEK">Sweden Kronor SEK</OPTION> <OPTION VALUE="CHF">Switzerland Francs CHF</OPTION> <OPTION VALUE="TWD">Taiwan New Dollars TWD</OPTION> <OPTION VALUE="THB">Thailand Baht THB</OPTION> <OPTION VALUE="TTD">Trinidad and Tobago Dollars TTD</OPTION> <OPTION VALUE="TND">Tunisia Dinars TND</OPTION> <OPTION VALUE="TRY">Turkey New Lira TRY</OPTION> <OPTION VALUE="TRL">Turkey Lira TRL*</OPTION> <OPTION VALUE="AED">United Arab Emirates Dirhams AED</OPTION> <OPTION VALUE="GBP">United Kingdom Pounds GBP</OPTION> <OPTION VALUE="USD">United States Dollars USD</OPTION> <OPTION VALUE="VEB">Venezuela Bolivares VEB</OPTION> <OPTION VALUE="VND">Vietnam Dong VND</OPTION> <OPTION VALUE="ZMK">Zambia Kwacha ZMK</OPTION> <OPTION VALUE="EUR">-- Special Units: --</OPTION> <OPTION VALUE="XAF">CFA BEAC Francs XAF</OPTION> <OPTION VALUE="XOF">CFA BCEAO Francs XOF</OPTION> <OPTION VALUE="XPF">Comptoirs Français du Pacifique Francs</OPTION> <OPTION VALUE="XCD">Eastern Caribbean Dollars XCD</OPTION> <OPTION VALUE="EUR">Euro EUR</OPTION> <OPTION VALUE="XDR">IMF Special Drawing Rights XDR</OPTION> <OPTION VALUE="XAU">-- Precious Metals: --</OPTION> <OPTION VALUE="XAG">Silver Ounces XDR</OPTION> <OPTION VALUE="XAU">Gold Ounces XAU</OPTION> <OPTION VALUE="XPT">Platinum Ounces XPT</OPTION> <OPTION VALUE="XPD">Palladium Ounces XPD</OPTION> </select> </td> </tr> <tr> <td> <p>Vers la devise</p> <select name="list_currency_to" id="list_currency_to"> <OPTION VALUE="USD">United States Dollars USD</OPTION> <OPTION VALUE="EUR">Euro EUR</OPTION> <OPTION VALUE="GBP">United Kingdom Pounds GBP</OPTION> <OPTION VALUE="CAD">Canada Dollars CAD</OPTION> <OPTION VALUE="AUD">Australia Dollars AUD</OPTION> <OPTION VALUE="JPY">Japan Yen JPY</OPTION> <OPTION VALUE="INR">India Rupees INR</OPTION> <OPTION VALUE="NZD">New Zealand Dollars NZD</OPTION> <OPTION VALUE="CHF">Switzerland Francs CHF</OPTION> <OPTION VALUE="ZAR">South Africa Rand ZAR</OPTION> <OPTION VALUE="USD">-- Top 85 Currencies: --</OPTION> <OPTION VALUE="AFA">Afghanistan Afghanis AFA</option> <OPTION VALUE="ALL">Albania Leke ALL</option> <OPTION VALUE="DZD">Algeria Dinars DZD</OPTION> <OPTION VALUE="USD">America (United States) Dollars USD</OPTION> <OPTION VALUE="ARS">Argentina Pesos ARS</OPTION> <OPTION VALUE="AUD">Australia Dollars AUD</OPTION> <OPTION VALUE="ATS">Austria Schillings ATS*</OPTION> <OPTION VALUE="BSD">Bahamas Dollars BSD</OPTION> <OPTION VALUE="BHD">Bahrain Dinars BHD</OPTION> <OPTION VALUE="BDT">Bangladesh Taka BDT</OPTION> <OPTION VALUE="BBD">Barbados Dollars BBD</OPTION> <OPTION VALUE="BEF">Belgium Francs BEF*</OPTION> <OPTION VALUE="BMD">Bermuda Dollars BMD</OPTION> <OPTION VALUE="BRL">Brazil Reais BRL</OPTION> <OPTION VALUE="BGN">Bulgaria Leva BGN</OPTION> <OPTION VALUE="CAD">Canada Dollars CAD</OPTION> <OPTION VALUE="XOF">CFA BCEAO Francs XOF</OPTION> <OPTION VALUE="XAF">CFA BEAC Francs XAF</OPTION> <OPTION VALUE="CLP">Chile Pesos CLP</OPTION> <OPTION VALUE="CNY">China Yuan Renminbi CNY</OPTION> <OPTION VALUE="COP">Colombia Pesos COP</OPTION> <OPTION VALUE="XPF">Comptoirs Français du Pacifique Francs</OPTION> <OPTION VALUE="CRC">Costa Rica Colones CRC</OPTION> <OPTION VALUE="HRK">Croatia Kuna HRK</OPTION> <OPTION VALUE="CYP">Cyprus Pounds CYP</OPTION> <OPTION VALUE="CZK">Czech Republic Koruny CZK</OPTION> <OPTION VALUE="DKK">Denmark Kroner DKK</OPTION> <OPTION VALUE="DEM">Deutsche (Germany) Marks DEM*</OPTION> <OPTION VALUE="DOP">Dominican Republic Pesos DOP</OPTION> <OPTION VALUE="NLG">Dutch (Netherlands) Guilders NLG*</OPTION> <OPTION VALUE="XCD">Eastern Caribbean Dollars XCD</OPTION> <OPTION VALUE="EGP">Egypt Pounds EGP</OPTION> <OPTION VALUE="EEK">Estonia Krooni EEK</OPTION> <OPTION VALUE="EUR">Euro EUR</OPTION> <OPTION VALUE="FJD">Fiji Dollars FJD</OPTION> <OPTION VALUE="FIM">Finland Markkaa FIM*</OPTION> <OPTION VALUE="FRF">France Francs FRF*</OPTION> <OPTION VALUE="DEM">Germany Deutsche Marks DEM*</OPTION> <OPTION VALUE="XAU">Gold Ounces XAU</OPTION> <OPTION VALUE="GRD">Greece Drachmae GRD*</OPTION> <OPTION VALUE="NLG">Holland (Netherlands) Guilders NLG*</OPTION> <OPTION VALUE="HKD">Hong Kong Dollars HKD</OPTION> <OPTION VALUE="HUF">Hungary Forint HUF</OPTION> <OPTION VALUE="ISK">Iceland Kronur ISK</OPTION> <OPTION VALUE="XDR">IMF Special Drawing Right XDR</OPTION> <OPTION VALUE="INR">India Rupees INR</OPTION> <OPTION VALUE="IDR">Indonesia Rupiahs IDR</OPTION> <OPTION VALUE="IRR">Iran Rials IRR</OPTION> <OPTION VALUE="IQD">Iraq Dinars IQD</OPTION> <OPTION VALUE="IEP">Ireland Pounds IEP*</OPTION> <OPTION VALUE="ILS">Israel New Shekels ILS</OPTION> <OPTION VALUE="ITL">Italy Lire ITL*</OPTION> <OPTION VALUE="JMD">Jamaica Dollars JMD</OPTION> <OPTION VALUE="JPY">Japan Yen JPY</OPTION> <OPTION VALUE="JOD">Jordan Dinars JOD</OPTION> <OPTION VALUE="KES">Kenya Shillings KES</OPTION> <OPTION VALUE="KRW">Korea (South) Won KRW</OPTION> <OPTION VALUE="KWD">Kuwait Dinars KWD</OPTION> <OPTION VALUE="LBP">Lebanon Pounds LBP</OPTION> <OPTION VALUE="LUF">Luxembourg Francs LUF*</OPTION> <OPTION VALUE="MYR">Malaysia Ringgits MYR</OPTION> <OPTION VALUE="MTL">Malta Liri MTL</OPTION> <OPTION VALUE="MUR">Mauritius Rupees MUR</OPTION> <OPTION VALUE="MXN">Mexico Pesos MXN</OPTION> <OPTION VALUE="MAD">Morocco Dirhams MAD</OPTION> <OPTION VALUE="NLG">Netherlands Guilders NLG*</OPTION> <OPTION VALUE="NZD">New Zealand Dollars NZD</OPTION> <OPTION VALUE="NOK">Norway Kroner NOK</OPTION> <OPTION VALUE="OMR">Oman Rials OMR</OPTION> <OPTION VALUE="PKR">Pakistan Rupees PKR</OPTION> <OPTION VALUE="XPD">Palladium Ounces XPD</OPTION> <OPTION VALUE="PEN">Peru Nuevos Soles PEN</OPTION> <OPTION VALUE="PHP">Philippines Pesos PHP</OPTION> <OPTION VALUE="XPT">Platinum Ounces XPT</OPTION> <OPTION VALUE="PLN">Poland Zlotych PLN</OPTION> <OPTION VALUE="PTE">Portugal Escudos PTE*</OPTION> <OPTION VALUE="QAR">Qatar Riyals QAR</OPTION> <OPTION VALUE="ROL">Romania Lei ROL</OPTION> <OPTION VALUE="RUB">Russia Rubles RUB</OPTION> <OPTION VALUE="SAR">Saudi Arabia Riyals SAR</OPTION> <OPTION VALUE="XAG">Silver Ounces XAG</OPTION> <OPTION VALUE="SGD">Singapore Dollars SGD</OPTION> <OPTION VALUE="SKK">Slovakia Koruny SKK</OPTION> <OPTION VALUE="SIT">Slovenia Tolars SIT</OPTION> <OPTION VALUE="ZAR">South Africa Rand ZAR</OPTION> <OPTION VALUE="KRW">South Korea Won KRW</OPTION> <OPTION VALUE="ESP">Spain Pesetas ESP*</OPTION> <OPTION VALUE="XDR">Special Drawing Rights (IMF) XDR</OPTION> <OPTION VALUE="LKR">Sri Lanka Rupees LKR</OPTION> <OPTION VALUE="SDD">Sudan Dinars SDD</OPTION> <OPTION VALUE="SEK">Sweden Kronor SEK</OPTION> <OPTION VALUE="CHF">Switzerland Francs CHF</OPTION> <OPTION VALUE="TWD">Taiwan New Dollars TWD</OPTION> <OPTION VALUE="THB">Thailand Baht THB</OPTION> <OPTION VALUE="TTD">Trinidad and Tobago Dollars TTD</OPTION> <OPTION VALUE="TND">Tunisia Dinars TND</OPTION> <OPTION VALUE="TRY">Turkey New Lira TRY</OPTION> <OPTION VALUE="TRL">Turkey Lira TRL*</OPTION> <OPTION VALUE="AED">United Arab Emirates Dirhams AED</OPTION> <OPTION VALUE="GBP">United Kingdom Pounds GBP</OPTION> <OPTION VALUE="USD">United States Dollars USD</OPTION> <OPTION VALUE="VEB">Venezuela Bolivares VEB</OPTION> <OPTION VALUE="VND" SELECTED>Vietnam Dong VND</OPTION> <OPTION VALUE="ZMK">Zambia Kwacha ZMK</OPTION> <OPTION VALUE="EUR">-- Special Units: --</OPTION> <OPTION VALUE="XAF">CFA BEAC Francs XAF</OPTION> <OPTION VALUE="XOF">CFA BCEAO Francs XOF</OPTION> <OPTION VALUE="XPF">Comptoirs Français du Pacifique Francs</OPTION> <OPTION VALUE="XCD">Eastern Caribbean Dollars XCD</OPTION> <OPTION VALUE="EUR">Euro EUR</OPTION> <OPTION VALUE="XDR">IMF Special Drawing Rights XDR</OPTION> <OPTION VALUE="XAU">-- Precious Metals: --</OPTION> <OPTION VALUE="XAG">Silver Ounces XDR</OPTION> <OPTION VALUE="XAU">Gold Ounces XAU</OPTION> <OPTION VALUE="XPT">Platinum Ounces XPT</OPTION> <OPTION VALUE="XPD">Palladium Ounces XPD</OPTION> </select> </td> </tr> <tr> <td> <input type=button value="Convertir" onclick = "javascript:get_currency();"> </td> </tr> <tr> <td> <p>Résultat de la conversion : </p> <div id=result_area></div> </td> </tr> </table> </form>
Et voila… mais tout n’est pas parfait… il reste un dysfonctionnement pour lequel je n’ai pas trouvé de solution : il faut cliquer deux fois sur le bouton « Convertir » pour obtenir le résultat… si quelqu’un a une idée, je suis preneur…
Dans le cadre des améliorations, une petite icone animée pour faire patienter l’internaute serait du plus bel effet… franciser les devises… arrondir les décimales à deux chiffres après la virgule… un petit plugin wordpress… bref, les bases sont posées… à vous de jouer maintenant…
Site Internet : Free Tools
Licence : Gratuit
Cool ! Beau boulot 🙂
Bonsoir,
Pourquoi ne pas avoir utilisé JQuery par exemple pour simplifier l’utilisation de l’ajax ?
Je n’a pas vraiment de reponse au « pourquoi »…. j’aime bien la solution « brut de decoffrage »…et cela fait une couche en moins…
Hello,
voici une solution partielle à ton problème : En fait, tu testais le readyState après le onreadystatechange, ce qui posait des problèmes de syncro.
Avec la modification que je te propose, le problème du « double-clic » est résolu. Il faudra cependant adapter l’affichage car la devise est d’abord affichée puis ensuite le résultat (l’API de Yahoo est assez long).
Tiens moi au courant 😉
++
Matt
/* Aucune devise de choisi, arrêter */
if ( currency_from != « » || currency_to != « »)
{
/* On envoie la requete au serveur */
var url = « amount_currency.php? » + « amount_from= » + value_amount + « ¤cy_from= » + currency_from + « ¤cy_to= » + currency_to;
if (XMLHttp.readyState == 4 || XMLHttp.readyState == 0)
{
XMLHttp.open(« GET », url, true);
XMLHttp.onreadystatechange = function()
{
/* Quande le serveur a fini son travail, afficher le résultat */
var response = value_amount + » » + currency_from + » = » + XMLHttp.responseText + » » + currency_to;
document.getElementById( ‘result_area’ ).innerHTML = response;
}
XMLHttp.send(null);
}
}
else
{
alert(« Please select a currency »);
}
[Sauf si une vérification est obligatoire, mon précédent post contenant le code est passé à la trappe, le revoici donc sans le code que je t’envoie par mail]
Hello,
voici une solution partielle à ton problème : En fait, tu testais le readyState après le onreadystatechange, ce qui posait des problèmes de syncro.
Avec la modification que je te propose, le problème du « double-clic » est résolu. Il faudra cependant adapter l’affichage car la devise est d’abord affichée puis ensuite le résultat (l’API de Yahoo est assez long).
Tiens moi au courant 😉
++
Matt
Problème d’affichage segmenté résolu 😉
++
Matt
Salut,
pour resoudre le probleme du double-clic il suffit de deplacer « XMLHttp.send(null); » après le « } »:
/* Aucune devise de choisi, arrêter */
if ( currency_from != « » || currency_to != « ») {
/* On envoie la requete au serveur */
var url = « amount_currency.php? » + « amount_from= » + value_amount + « ¤cy_from= » + currency_from + « ¤cy_to= » + currency_to;
XMLHttp.open(« GET », url, true);
XMLHttp.onreadystatechange = function() {
if (XMLHttp.readyState == 4) {
/* Quande le serveur a fini son travail, afficher le résultat */
var response = value_amount + » » + currency_from + » = » + XMLHttp.responseText + » » + currency_to;
document.getElementById( ‘result_area’ ).innerHTML = response;
}
}
XMLHttp.send(null);
} else {
alert (« Please select a currency »)
}
et c’est tout!
@+
Cool! merci exactement ce que je cherchais (sans ajax), Beau travail.
Merci pour ce code, c’es top !
Cependant j’ai un petit soucis : quand je copie colle le tout j’ai une erreur de ce type :
Warning: include(yahoo_rate_exchange.php) [function.include]: failed to open stream: No such file or directory in /homez.99/…/www/conv/index.php on line 31
Warning: include() [function.include]: Failed opening ‘yahoo_rate_exchange.php’ for inclusion (include_path=’.:/usr/local/lib/php’) in /homez.99/…/www/conv/index.php on line 31
0
Je débute en php donc c’est peut etre une erreur toute bete quelqu’un peut il m’expliquer svp ?
De plus quelqu’un pourrait me copier coller la version prenant en compte les modifications ci-dessus ? Je ne parviens pas à toutes les placer au bon endroit…
Je suis vraiment débutant…
Merci pour votre aide 🙂
Bizarre… la première idée qui me vient… tu crées bien 3 fichiers séparées ? yahoo_rate_exchange.php, amount_currency.php et le formulaire ? j’imagine que oui 😉
Reste les erreurs commme piste… Pour l’erreur d’inclusion, regarde de ce coté : http://www.phpfacile.com/erreurs_php_et_resolution/failed_opening_for_inclusion.php5 et pour le problème de « failed to stream », fouille de ce coté… http://www.commentcamarche.net/forum/affich-2001342-failed-to-open-stream
Bon courage
Bonjour,
Je me demande si il est possible avec ce code d’ajouter un paramètre de date pour obtenir un taux de devise d’un jours passé ?
Merci
Hi Chris… Et bien, la première solution qui me vient à l’esprit est de relever les taux périodiquement et d’enregistrer les informations (devise de départ, devise d’arrivée, taux de change et date) dans un fichier (xml ou autre) ou une dans bdd.
Bonjour,
Merçi à myrmex pour ce convertisseur de devise.
Le convertisseur fonctionne très bien sous firefox mais je n’arrive pas à le faire marcher avec internet exploreur.
Étant néophite je butte sur le problème, j’utilise IE8.
Une aide serait la bien venue, merçi d’avance.
jy
Re-Bonjour,
Le problème de compatiblité du convertisseur avec internet exploreur est réglé en même temps que le double clic après la modification donné par R A.
jy
Bonjour et merci pour cet article..
J’ai un site sur le Vietnam et je voudrais proposer votre solution pour la conversion des devises.
Mais où puis-je télécharger votre plugin avec les corrections ?
Avez-vous un fichier téléchargeable ?
Encore merci et désolé de ne pas pouvoir apporter ma contribution technique…je suis plutôt poète et vous êtes trop forts pour moi. Cordialement. Pierre
Bonjour,
C’est exactement ce que je recherchais, merci ! … mais j’ai un petit souci…
si j’ouvre l’adresse : amount_currency.php?amount_from=100¤cy_from=EUR¤cy_to=VND
J’ai bien le résultat qui s’affiche… par contre dès que j’utilise le formulaire, rien ne se passe.
Je suis sur Mac et j’ai testé avec Safari, chrome et Firefox…
Avez-vous une idée ? Je pourrais certainement passer par un formulaire HTML pur mais j’aimerais bien utiliser celui-ci qui évite un énième rechargement de la page….
Merci d’avance,
Mick
Moi aussi je suis à la recherche d’un script identique mais plutôt avec Google au lieu de Yahoo. Avez-vous une idée d’où je pourrai le trouver ?
Tout à fait honnêtement, j’en n’ai pas la moindre idée ! Je crains qu’il ne faille passer un peu de temps dans les moteurs de recherche ou voir sur http://code.google.com/.
Bon courage.