Page 1 sur 2

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

Posté : 05 mai 2015, 22:43
par Virginie
Bonsoir,

Je cherche à intégrer sur mon site d'information sur la création de manga amateur: http://ippai.free.fr,
une fonction permettant de multiplier le prix en Yen d'un matériel de Mangaka Japonais, avec le taux de change de l'Euro de la BCE : https://www.ecb.europa.eu/stats/exchang ... py.en.html
Sur cette page pour avoir un taux de change sous un format : JPY 1 = EUR 0.007467 (au 2015/05/05) il faut faire:
Select: JPY vs EUR

Je trouve aussi ce taux approximatif, directement avec xe.com ici : http://www.xe.com/fr/currencyconverter/ ... JPY&To=EUR

Mon problème c'est que je ne comprends pas comment extraire ce taux dans un script php ?
Et faire une multiplication automatique en Euro , avec la valeur en Yen du produit.

L'idée serait d'avoir la conversion en Euro à jour automatiquement, juste en face.
Pour que les utilisateurs puisse connaitre le prix au plus près du matériel en Euro, à titre informatif.

TAB-MATE CONTROLLER (License) 4 378 ¥ (32,69 €)

Image

Soit : 4378x(extraction taux yen vers euros(0.00xxxx))= valeur €

http://www.amazon.co.jp/dp/B00LSCXLQE/

Je précise que je ne veux pas passer par un formulaire ou il faut sélectionner la devise et cliquer pour valider et avoir la réponse.
Car de nombreux service gratuit de ce genre existe déjà sur internet,

Et seul la conversion du Yen vers l'Euro m'intéresse.

Merci de vos lumières, car j'ai l'impression que ça n'est pas des plus simples :?

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

Posté : 05 mai 2015, 22:52
par tof73
sur le site de la bce, tu as où j'imagine que celle le taux de change varie :
<a href="eurofxref-graph-jpy.en.html" title="Link to">JPY <img src="../shared/img/down.gif" width="9" height="9" alt="down" title="" /> 133.92</a>

tu fais un script qui demande le contenu de la page du site de la bce, extrait le taux et le sauve sur ton site dans une base de donnée ou dans un fichier.
tu lances ce script de manière régulière, soit automatiquement avec un cron ou un pseudo cron; soit tu le lances quand tu y penses.

dans une page de ton site, tu récupères le taux de change dans la base de donnée ou dans le fichier, et tu fais la / ou *.

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

Posté : 05 mai 2015, 23:17
par Virginie
Merci de ce début de réponse.

Je pense que récupérer le taux dans un fichier serais moins lourd, car le site est chez free.

Oui le taux varie c'est pour ça qu'il faudrait au plus simple le récupérer à chaque chargement de la page,
pour ne pas risquer une erreur d'horloge.

tof73 : Tu proposes donc plutôt de faire :

1 / ( divisé) par le taux de change du yen x ( multiplié) le prix indicatif du matériel en yen = l'équivalence en euro ?

Mais quel code écrire pour extraire la valeur de ce taux ?

Et quel code dois-je écrire pour faire:

1 / (Taux Yen Extrait/caché) X (Prix Yen Ecrit/Affiché) = (Prix Euro Généré/Affiché) ?

<p>4378 &yen; <?php $variable = 1 / (extraction taux Yen) * 4378; echo $variable; ?><p> ?


Merci d'avance.

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

Posté : 06 mai 2015, 00:28
par Ryle
Bonsoir,

Tu peux utiliser la fonction file_get_contents() pour lire un fichier ou dans ton cas le contenu d'une page distante.
Une fois ce flux récupéré, il te faudra le parser avec une expression régulière afin d'en extraire la partie qui t'intéresse, avec preg_match() par exemple.

Pour le site ECB, tu pourrais essayer de capturer la valeur de la variable rateLatest dans le javascript : preg_match("/rateLatest='(.*)'/", $flux, $match). Cependant te connecter à chaque fois au site pour en extraire la valeur n'est pas très performant. Et si jamais le site change d'url, de nom de variable ou autre, ton script ne fonctionnera plus.
A voir s'il n'est pas plus intéressant d'utiliser le taux moyen indiqué sur leur site (137.62) et de l'actualiser manuellement une fois par mois (ou plus, ou moins...)

Attention également aux conditions d'utilisations du service. Le site XE.com indique explicitement que l'extraction automatique des taux est interdite... Je ne sais pas ce qu'il en est sur ECB, mais il est probable qu'il en soit de même.

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

Posté : 06 mai 2015, 00:53
par Virginie
Merci de l'info pour l'interdiction de l'extraction des taux chez XE.com.
J'imagine que l'extraction automatique leur fait perdre des revenus s'ils font payer 540$/an des modules pour le faire sur des boutiques eBay.

Il faudrait effectivement voir si la BCE l'interdit aussi ?

Je trouve le taux yen vers euro, ici aussi : http://www.boursorama.com/taux-de-chang ... ro-jpy-eur

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

Posté : 06 mai 2015, 00:58
par @rthur
Effectivement, les données de xe.com ne sont pas libres, il faut souscrire à leur API pour avoir le droit de récupérer automatiquement les taux de change.

Yahoo Finance fournit une API en JSON/XML et l'utilisation est gratuite, mais ils bloquent si le nombre de requêtes est trop important c'est à dire + de 2000 appels par heure.

Code : Tout sélectionner

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&diagnostics=true&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys&callback=
Personnalisable ici.


Celui de la Banque Centrale Européenne (BCE/ECB) est par contre librement réutilisable visiblement sans limitation d'aucune sorte.
Leur site internet donne même explicitement des liens pour télécharger les données XML et même des exemples de code PHP pour extraire automatiquement les taux ;-)

Voici un exemple clé-en-main que je viens de faire pour ton usage :
<?php
$xml = simplexml_load_file('http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml');
foreach($xml->Cube->Cube->Cube as $currency_rate) {
	if ($currency_rate['currency']=='JPY') $taux_jpy=(float) $currency_rate['rate'];
}


/* Conversion Euro => Yen */
$montant_en_euro = 100;
$montant_converti_en_yen = $montant_en_euro*$taux_jpy;
print $montant_en_euro." EUR => ".$montant_converti_en_yen." JPY <hr />";


/* Conversion Yen => Euro */
$montant_en_yen = 100;
$montant_converti_en_euro = $montant_en_yen/$taux_jpy;
print $montant_en_yen." JPY => ".$montant_converti_en_euro." EUR <hr />";
##edit : Ajout de l'info sur la limite de 2000 appels/heure pour Yahoo

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

Posté : 06 mai 2015, 01:05
par Virginie
Merci bien, je vais tester ça :) !

<?php 
$xml = simplexml_load_file('http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml');
foreach($xml->Cube->Cube->Cube as $currency_rate) {
	if ($currency_rate['currency']=='JPY') $taux_jpy=(float) $currency_rate['rate'];
}

/* Conversion Yen => Euro */
$montant_en_yen = 4378;
$montant_converti_en_euro = 1/$taux_jpy*$montant_en_yen;
print $montant_en_yen." JPY => ".$montant_converti_en_euro." EUR <hr />";
?>
ça me renvoie de drôles d'erreurs ?

Code : Tout sélectionner

Warning: simplexml_load_file() [function.simplexml-load-file]: http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml:1: parser error : Document is empty in /mnt/132/sda/2/5/ippai/materiel_packs.php on line 84 Warning: simplexml_load_file() [function.simplexml-load-file]: in /mnt/132/sda/2/5/ippai/materiel_packs.php on line 84 Warning: simplexml_load_file() [function.simplexml-load-file]: ^ in /mnt/132/sda/2/5/ippai/materiel_packs.php on line 84 Warning: simplexml_load_file() [function.simplexml-load-file]: http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml:1: parser error : Start tag expected, '<' not found in /mnt/132/sda/2/5/ippai/materiel_packs.php on line 84 Warning: simplexml_load_file() [function.simplexml-load-file]: in /mnt/132/sda/2/5/ippai/materiel_packs.php on line 84 Warning: simplexml_load_file() [function.simplexml-load-file]: ^ in /mnt/132/sda/2/5/ippai/materiel_packs.php on line 84 Warning: Invalid argument supplied for foreach() in /mnt/132/sda/2/5/ippai/materiel_packs.php on line 85 Warning: Division by zero in /mnt/132/sda/2/5/ippai/materiel_packs.php on line 91 4378 JPY => EUR
Le simplexml_load_file semble ne pas passer :( ?!

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

Posté : 06 mai 2015, 15:37
par Saian
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 ?

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

Posté : 06 mai 2015, 16:46
par Virginie
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 ?

Posté : 06 mai 2015, 16:51
par Saian
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 ?

Posté : 06 mai 2015, 17:02
par Virginie
Je le met où l'echo dans mon code ?

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

Posté : 06 mai 2015, 17:14
par Saian
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 ?

Posté : 06 mai 2015, 17:29
par Saian
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 ?

Posté : 06 mai 2015, 18:46
par Virginie
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 ?

Posté : 06 mai 2015, 19:33
par @rthur
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>