Récupérer des données d'une API et l'intégrer dans un calcul PHP
Résolu
Flo-mdt
-
Flo-mdt -
Flo-mdt -
Bonjour à tous,
Je suis actuellement plongé dans la création d'un petit programme de calcul qui indique les bénéfices des utilisateurs dans le domaine de la cryptomonnaie.
Le code possède un formulaire qui récupère le montant investi et à quel prix et mon problème est que je n'arrive pas intégrer la valeur du cours de la bourse pour l'intégrer dans mon calcul PHP.
J'ai le lien de l'API, mais je ne sais pas comment intégrer la valeur à mon calcul avec les deux variables du formulaire.
Voici le code du fomulaire avec pour exemple le cardano :
Et voici la réponse au fomulaire :
En espérant que mon explication soit assez clair
D'avance merci pour votre aide !
Je suis actuellement plongé dans la création d'un petit programme de calcul qui indique les bénéfices des utilisateurs dans le domaine de la cryptomonnaie.
Le code possède un formulaire qui récupère le montant investi et à quel prix et mon problème est que je n'arrive pas intégrer la valeur du cours de la bourse pour l'intégrer dans mon calcul PHP.
J'ai le lien de l'API, mais je ne sais pas comment intégrer la valeur à mon calcul avec les deux variables du formulaire.
Voici le code du fomulaire avec pour exemple le cardano :
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Cardano</title>
<script type="text/javascript">
function formatMontant(m) {
var intlN=new Intl.NumberFormat();
return intlN.format(m);
}
/* Récupération des données de cours du Cardano */
function getCours(){
/* Appel AJAX vers cryptocompare.com */
var ajax=new XMLHttpRequest();
console.log("readyState après new : "+ajax.readyState);
/* Détection de l'avancement de l'appel */
ajax.onreadystatechange=function(){
console.log("readyState a changé et vaut : "+ajax.readyState)
}
/* Détection de la fin de l'appel */
ajax.onload = function(){
console.log("Appel AJAX terminé");
console.log(" status : "+this.status);
console.log(" response : "+this.response);
if (this.status == 200) { /* Le service a bien répondu */
try {
var json=JSON.parse(this.response); // Convertir le retour JSON
} catch(err) {
console.log("Retour JSON incorrect");
return false;
}
/* Vérifier que le JSON de retour contient bien la propriété EUR */
if (json.USD) {
var usd=formatMontant(json.USD);
document.getElementById("cours").innerHTML=usd+" $";
} else {
console.log("Retour du cours incorrect");
}
}
}
/* Détection du timeout */
ajax.ontimeout=function(){
console.log("Le service n'a pas répondu à temps : nouvel essai dans 5 sec");
/* Relancer l'appel 5 secondes plus tard */
setTimeout("getCours()", 10000);
}
/* Préparation de la requête et envoi */
var url="https://min-api.cryptocompare.com/data/price?fsym=ADA&tsyms=USD";
ajax.open("GET", url, true);
ajax.timeout=1000; /* Délai d'expiration à 1 seconde */
ajax.send();
}
/* Démarrage de l'appel */
window.onload=function(){
getCours();
setInterval("getCours()", 10000);
}
</script>
</head>
<body>
<form action="cardano.php" method="post" class="box">
<h1>Cardano</h1>
<div id="Cardano">
<div id="cours">
</div>
</div>
<input type="text" name="nbrc" placeholder=" A combien avez vous acheter vos Cardano ?" />
<input type="text" name="invest" placeholder=" Pour quel montant ?" />
<input type="submit" value="Valider" placeholder="Valider" />
</body>
</html>
<head>
Et voici la réponse au fomulaire :
<?php
if(empty($_POST['nbrc']) || empty($_POST['invest']))
{
echo '<p>Il manque des valeurs</p>';
}
else
{
if(!is_numeric($_POST['nbrc']) || !is_numeric($_POST['invest']))
{
echo '<p>Les deux valeurs doivent contenir des chiffres uniquement</p>';
}
else
{
$gain = /*c'est ici qu'il faut rajouter la valeur du cours*/ * $_POST['invest'] / $_POST['nbrc'];
echo '<p>Vous avez ' . $gain . ' $</p>';
}
}
?>
En espérant que mon explication soit assez clair
D'avance merci pour votre aide !
A voir également:
- Récupérer données api php
- Fuite données maif - Guide
- Recuperer message whatsapp supprimé - Guide
- Récupérer mon compte facebook désactivé - Guide
- Comment récupérer un compte facebook piraté - Guide
- Comment recuperer une video sur youtube - Guide
4 réponses
Bonjour
Au lieu (ou "en plus") de stocker la valeur du cours dans une div,
Mets le dans un input (hidden si tu veux) dans ton formulaire.
Il sera ainsi, envoyé en même temps que tes deux autres variables lors du submit.
Au lieu (ou "en plus") de stocker la valeur du cours dans une div,
Mets le dans un input (hidden si tu veux) dans ton formulaire.
Il sera ainsi, envoyé en même temps que tes deux autres variables lors du submit.
oui mais pourtant quand je met le input type hidden la valeur n'est pas récupéré. Il y a marqué dans le network les deux valeurs de l'utilisateur mais pour la valeur du cour il y mamarqué :
cours :
et aucune valeur n'est envoyé donc le calcul ne peux pas se faire
cours :
et aucune valeur n'est envoyé donc le calcul ne peux pas se faire
voici le code :
et la réponse :
Merci pour votre aide !
EDIT : Ajout du LANGAGE dans les balises de code pour avoir la coloration syntaxique
<body> <form action="cardano.php" method="post" class="box"> <h1>Cardano</h1> <div id="Cardano"> <div id="cours"></div> </div> <input type="text" name="nbrc" placeholder=" A combien avez vous acheter vos Cardano ?" /> <input type="text" name="invest" placeholder=" Pour quel montant ?" /> <input type="hidden" name="cours" id="cours" /> <input type="submit" value="Valider" placeholder="Valider" /> </body> </html>
et la réponse :
<?php if(empty($_POST['nbrc']) || empty($_POST['invest'])) { echo '<p>Il manque des valeurs</p>'; } else { if(!is_numeric($_POST['nbrc']) || !is_numeric($_POST['invest'])) { echo '<p>Les deux valeurs doivent contenir des chiffres uniquement</p>'; } else { $gain = $_POST['cours'] * $_POST['invest'] / $_POST['nbrc']; echo '<p>Vous avez ' . $gain . ' $</p>'; } } ?>
Merci pour votre aide !
EDIT : Ajout du LANGAGE dans les balises de code pour avoir la coloration syntaxique
Oui pardon le voilà :
</style>
<script type="text/javascript">
function formatMontant(m) {
var intlN=new Intl.NumberFormat();
return intlN.format(m);
}
/* Récupération des données de cours du Cardano */
function getCours(){
/* Appel AJAX vers cryptocompare.com */
var ajax=new XMLHttpRequest();
console.log("readyState après new : "+ajax.readyState);
/* Détection de l'avancement de l'appel */
ajax.onreadystatechange=function(){
console.log("readyState a changé et vaut : "+ajax.readyState)
}
/* Détection de la fin de l'appel */
ajax.onload = function(){
console.log("Appel AJAX terminé");
console.log(" status : "+this.status);
console.log(" response : "+this.response);
if (this.status == 200) { /* Le service a bien répondu */
try {
var json=JSON.parse(this.response); // Convertir le retour JSON
} catch(err) {
console.log("Retour JSON incorrect");
return false;
}
/* Vérifier que le JSON de retour contient bien la propriété EUR */
if (json.USD) {
var usd=formatMontant(json.USD);
document.getElementById("cours").innerHTML=usd+" $";
} else {
console.log("Retour du cours incorrect");
}
}
}
/* Détection du timeout */
ajax.ontimeout=function(){
console.log("Le service n'a pas répondu à temps : nouvel essai dans 5 sec");
/* Relancer l'appel 5 secondes plus tard */
setTimeout("getCours()", 10000);
}
/* Préparation de la requête et envoi */
var url="https://min-api.cryptocompare.com/data/price?fsym=ADA&tsyms=USD";
ajax.open("GET", url, true);
ajax.timeout=1000; /* Délai d'expiration à 1 seconde */
ajax.send();
}
/* Démarrage de l'appel */
window.onload=function(){
getCours();
setInterval("getCours()", 10000);
}
</script>