[RESOLU] Conversion Yen > Euro, avec taux de change de l'ECB ou xe.com ?

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Conversion Yen > Euro, avec taux de change de l'ECB ou xe.com ?

Re: [RESOLU] Conversion Yen > Euro, avec taux de change de l'ECB ou xe.com ?

par @rthur » 08 mai 2015, 23:39

Encore merci à @rthur, Je suis aux anges d'avoir pu implémenter si rapidement cette fonction sur mon site.
Avec plaisir, ravi d'avoir pu aider ! :-)

Re: [RESOLU] Conversion Yen > Euro, avec taux de change de l'ECB ou xe.com ?

par Virginie » 08 mai 2015, 12:59

Merci beaucoup pour ce très bon topic.
Bonjour chère amie, ravie que ce sujet te plaise :D !

Mes vœux à tous les membres du forum, en ce 8 mai, fête de la victoire !

Encore merci à @rthur, Je suis aux anges d'avoir pu implémenter si rapidement cette fonction sur mon site.

Grâce à cela, je pourrais informer les visiteurs sur les vrais prix pratiqué au Japon.

Et leur éviter de se faire arnaquer, sur les prix de vente :D !

Re: [RESOLU] Conversion Yen > Euro, avec taux de change de l'ECB ou xe.com ?

par JensoNnie01 » 08 mai 2015, 09:06

Merci beaucoup pour ce très bon topic.

Re: Convertion Yen > Euro, avec taux de change de l'ECB ou xe.com ?

par Virginie » 08 mai 2015, 01:07

Au final j'ai re-externalisé cette partie dans mon fichier ippai.js
function phpfrance_callback(data) {
    var taux_jpy=data.query.results.rate[0].Rate;

    var prix_yen = document.getElementsByClassName("prix_yen");
    var prix_converti_euro = document.getElementsByClassName("prix_converti_euro");
    
	for(var i = 0; i < prix_yen.length; i++) {
	    var montant_en_yen=parseFloat(prix_yen.item(i).innerHTML);
	    var montant_converti_en_euro = 1/taux_jpy*montant_en_yen;
	    prix_converti_euro.item(i).innerHTML = " soit "+montant_converti_en_euro.toFixed(2)+" EUR";
	}

};
J'ai mis l'autre partie dans <html> en bas de page avec une ligne entre les balise sinon ça ne fonctionne pas.
<script type="application/javascript" src="https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.xchange%20where%20pair%20in%20(%22EURJPY%22%2C%20%22JPYEUR%22)&format=json&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys&callback=phpfrance_callback"></script>
Et au passage, cette partie ma donné du mal, car j'ai du remplacer tout les & par des & , et rajouter type="application/javascript" , car sinon la page n'était plus valide en XHTML Strict

Re: Conversion Yen > Euro, avec taux de change de l'ECB ou xe.com ?

par Virginie » 07 mai 2015, 12:17

Finalement l'externalisation d'une seul partie du script pose soucis, le titre de la page disparait avec en message "En attente de ippaï.free.fr"

Voici en résultat la page pour laquelle j'ai demandé cette fonction : http://ippai.free.fr/materiel_import_du_japon.php

Merci à @rthur pour son script qui m'est d'une grande utilité sur cet article =D> !

j'ai pu aussi très facilement le modifier pour faire une conversion du $ vers € que j'avais besoin sur une autre page :) !

http://ippai.free.fr/materiel_packs.php

Re: Convertion Yen > Euro, avec taux de change de l'ECB ou xe.com ?

par Virginie » 06 mai 2015, 20:21

J'ai externalisé cette partie dans mon fichier .js
function phpfrance_callback(data) {
    var taux_jpy=data.query.results.rate[0].Rate;

    var prix_yen = document.getElementsByClassName("prix_yen");
    var prix_converti_euro = document.getElementsByClassName("prix_converti_euro");
    
	for(var i = 0; i < prix_yen.length; i++) {
	    var montant_en_yen=parseFloat(prix_yen.item(i).innerHTML);
	    var montant_converti_en_euro = 1/taux_jpy*montant_en_yen;
	    prix_converti_euro.item(i).innerHTML = " soit "+montant_converti_en_euro.toFixed(2)+" EUR";
	}

};
Puis-je aussi externaliser cette partie dans mon fichier *.js ?
Ou dois-je la garder au sein de chaque page ?
<script src="https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.xchange%20where%20pair%20in%20(%22EURJPY%22%2C%20%22JPYEUR%22)&format=json&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys&callback=phpfrance_callback"></script>

Re: Convertion Yen > Euro, avec taux de change de l'ECB ou xe.com ?

par Virginie » 06 mai 2015, 19:41

Free ne permet pas d'accéder à des fichiers externes en PHP donc je pense que tout ce que tu essayeras en PHP va échouer sauf à changer d'hébergeur :-/

Une solution serait de faire cela en full javascript avec l'API de Yahoo, voici ce que ça donnerai :
<div>Prix : <span class="prix_yen">478</span> JPY <span class="prix_converti_euro"></span></div>

<script>
function phpfrance_callback(data) {
    var taux_jpy=data.query.results.rate[0].Rate;

    var prix_yen = document.getElementsByClassName("prix_yen");
    var prix_converti_euro = document.getElementsByClassName("prix_converti_euro");
    
	for(var i = 0; i < prix_yen.length; i++) {
	    var montant_en_yen=parseFloat(prix_yen.item(i).innerHTML);
	    var montant_converti_en_euro = 1/taux_jpy*montant_en_yen;
	    prix_converti_euro.item(i).innerHTML = " soit "+montant_converti_en_euro.toFixed(2)+" EUR";
	}

};
</script>
<script src="https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.xchange%20where%20pair%20in%20(%22EURJPY%22%2C%20%22JPYEUR%22)&format=json&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys&callback=phpfrance_callback"></script>
Merci ! Cette solution là fonctionne chez free :D !

Il suffit donc que je multiplie les
<div>Prix : <span class="prix_yen">478</span> JPY <span class="prix_converti_euro"></span></div>
Et c'est dans la poche :P ?

Plus qu'a externaliser la fonction donc :) !

Re: Convertion Yen > Euro, avec taux de change de l'ECB ou xe.com ?

par @rthur » 06 mai 2015, 19:33

Free ne permet pas d'accéder à des fichiers externes en PHP donc je pense que tout ce que tu essayeras en PHP va échouer sauf à changer d'hébergeur :-/

Une solution serait de faire cela en full javascript avec l'API de Yahoo, voici ce que ça donnerai :
<div>Prix : <span class="prix_yen">478</span> JPY <span class="prix_converti_euro"></span></div>

<script>
function phpfrance_callback(data) {
    var taux_jpy=data.query.results.rate[0].Rate;

    var prix_yen = document.getElementsByClassName("prix_yen");
    var prix_converti_euro = document.getElementsByClassName("prix_converti_euro");
    
	for(var i = 0; i < prix_yen.length; i++) {
	    var montant_en_yen=parseFloat(prix_yen.item(i).innerHTML);
	    var montant_converti_en_euro = 1/taux_jpy*montant_en_yen;
	    prix_converti_euro.item(i).innerHTML = " soit "+montant_converti_en_euro.toFixed(2)+" EUR";
	}

};
</script>
<script src="https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.xchange%20where%20pair%20in%20(%22EURJPY%22%2C%20%22JPYEUR%22)&format=json&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys&callback=phpfrance_callback"></script>

Re: Convertion Yen > Euro, avec taux de change de l'ECB ou xe.com ?

par Virginie » 06 mai 2015, 18:46

http://openclassrooms.com/forum/sujet/f ... ge-4728440
Bonjour,
J'arrives un peut tard ici, mais oui j'ais bien lu que free avait "coupé" ces fonctions !
Je me demandes alors comment font les sites web de FREE qui utilisent paypal lequel a son code en CURL
CURL ne semble pas être la solution chez free.fr #-o .

Trouvé ça du coups ?

http://votreprojetweb.free.fr/allowUrlFopen.php

Mais c'est aussi interdit :( !

http://openclassrooms.com/forum/sujet/a ... t-contents
Bonjour à tous,

J'ai fait un site pour une asso, hébergé chez Free. En voulant y intégrer des infos météo récupérés sur un site (ftp://tgftp.nws.noaa.gov/data/observati ... s/NTAA.TXT) je suis tombé sur un os: la fonction file_get_contents() est désactivée chez Free, ainsi que fsockopen(), curl(), readfile(), file() et allow_url_open(). Est-ce possible de la remplacer en JS et comment ? J'ai essayé XMLHttpRequest mais en vain.

Si quelqu'un peut m'aider, merci d'avance.
Il va donc falloir que je mettre le taux dans un include génréral mais comment écrire ça proprement ?
<?php
$montant_en_yen = 4378;
$montant_converti_en_euro = $montant_en_yen*0.007430;
print $montant_en_yen." &yen; (".$montant_converti_en_euro." &euro;)";
?>
Et comment arrondir au second chiffre après la virgule, la somme final avec round (".$montant_converti_en_euro , 2) ?
http://twig.sensiolabs.org/doc/filters/round.html

Re: Convertion Yen > Euro, avec taux de change de l'ECB ou xe.com ?

par Saian » 06 mai 2015, 17:29

Je pense que tu dois avoir la directive allow_url_fopen à 0.

Si tu ne peux pas changer la valeur de la directive pour la passer à 1, une façon de contourner le problème serait de passer par la lib cURL, si elle est disponible, pour charger le contenu xml.

Ca donnerait un code dans le style :
$ch = curl_init('http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml');    
curl_setopt($ch, CURLOPT_HEADER, false); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);    
$xml = curl_exec($ch);
curl_close($ch);

$xml = simplexml_load_string($xml);

Re: Convertion Yen > Euro, avec taux de change de l'ECB ou xe.com ?

par Saian » 06 mai 2015, 17:14

Ton code est fonctionnel chez moi :
4378 JPY => 32.528419644847 EUR <hr />
Il doit y avoir une restriction sur ton serveur.
Le file_get_contents fonctionne-t-il ?

EDIT
Le echo tu le mets n'importe où, c'est pour tester si tu peux récupérer le contenu de la page.
Si ça fonctionne ça va t'afficher le xml.

Re: Convertion Yen > Euro, avec taux de change de l'ECB ou xe.com ?

par Virginie » 06 mai 2015, 17:02

Je le met où l'echo dans mon code ?

Re: Convertion Yen > Euro, avec taux de change de l'ECB ou xe.com ?

par Saian » 06 mai 2015, 16:51

L'entête de quoi ? car le xml eurofxref-daily.xml n'a pas une telle entête.
L'entête de ta page quand à elle n'a aucune influence sur le simplexml_load_file.

Tu as toujours la même erreur ? peut être ton serveur n'autorise pas l'ouverture d'une ressource distante ?

Je pense qu'@rthur a du tester son code et qu'il est fonctionnel.

EDIT
Tu peux tester ça et voir si ça te retourne bien le contenu xml :
echo file_get_contents('http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml');

Re: Convertion Yen > Euro, avec taux de change de l'ECB ou xe.com ?

par Virginie » 06 mai 2015, 16:46

Oui, je l'ai tester directement dans le navigateur.
<?xml version="1.0" encoding="UTF-8"?>
-<gesmes:Envelope xmlns="http://www.ecb.int/vocabulary/2002-08-01/eurofxref"           xmlns:gesmes="http://www.gesmes.org/xml/2002-08-01">
<gesmes:subject>Reference rates</gesmes:subject>
-<gesmes:Sender>
<gesmes:name>European Central Bank</gesmes:name>
</gesmes:Sender>
-<Cube>
-<Cube time="2015-05-06">
<Cube rate="1.1230" currency="USD"/>
<Cube rate="134.59" currency="JPY"/>
<Cube rate="1.9558" currency="BGN"/>
<Cube rate="27.415" currency="CZK"/>
<Cube rate="7.4648" currency="DKK"/>
<Cube rate="0.73760" currency="GBP"/>
<Cube rate="304.55" currency="HUF"/>
<Cube rate="4.0483" currency="PLN"/>
<Cube rate="4.4432" currency="RON"/>
<Cube rate="9.3066" currency="SEK"/>
<Cube rate="1.0374" currency="CHF"/>
<Cube rate="8.4130" currency="NOK"/>
<Cube rate="7.5810" currency="HRK"/>
<Cube rate="56.0901" currency="RUB"/>
<Cube rate="3.0405" currency="TRY"/>
<Cube rate="1.4030" currency="AUD"/>
<Cube rate="3.4394" currency="BRL"/>
<Cube rate="1.3487" currency="CAD"/>
<Cube rate="6.9630" currency="CNY"/>
<Cube rate="8.7053" currency="HKD"/>
<Cube rate="14662.18" currency="IDR"/>
<Cube rate="4.3465" currency="ILS"/>
<Cube rate="71.3554" currency="INR"/>
<Cube rate="1215.84" currency="KRW"/>
<Cube rate="17.2044" currency="MXN"/>
<Cube rate="4.0089" currency="MYR"/>
<Cube rate="1.4990" currency="NZD"/>
<Cube rate="50.061" currency="PHP"/>
<Cube rate="1.4899" currency="SGD"/>
<Cube rate="37.373" currency="THB"/>
<Cube rate="13.5142" currency="ZAR"/>
</Cube>
</Cube>
</gesmes:Envelope>
L'entête peut elle avoir une influence ?
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="fr" xml:lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta http-equiv="content-language" content="fr" />

Re: Convertion Yen > Euro, avec taux de change de l'ECB ou xe.com ?

par Saian » 06 mai 2015, 15:37

Salut, peut être l'url http://www.ecb.europa.eu/stats/eurofxre ... -daily.xml n'était pas disponible au moment ou tu faisais ton test.
As tu testé de l'ouvrir directement dans ton navigateur ?