Transformer un PHP en JS
Résolu
Templier Nocturne
Messages postés
7734
Date d'inscription
Statut
Membre
Dernière intervention
-
Templier Nocturne Messages postés 7734 Date d'inscription Statut Membre Dernière intervention -
Templier Nocturne Messages postés 7734 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
je suis embêté, j'aimerais limiter la charge du serveur en transférant tout le travail au client au lieu du serveur mais je ne sais pas comment faire
voilà le script :
en espérant que quelqu'un pourra m'aider :)
je suis embêté, j'aimerais limiter la charge du serveur en transférant tout le travail au client au lieu du serveur mais je ne sais pas comment faire
voilà le script :
<?php function factorielle($valeur){ $fact = 1; for($i = 1; $i <= $valeur; $i++) $fact *= $i; return $fact; } function combinaison($k, $n){ return (factorielle($n) / (factorielle($k) * factorielle($n - $k))); } function maFonction($a, $b, $c){ $resu = 0; for($k = $c + 1; $k <= $b; $k++){ $temp = combinaison($k, $b); $temp *= pow((1/$a), $k); $temp *= pow((1 - 1/$a), $b - $k); $resu += $temp; } $resu = $resu * 100; $resu = 100 - $resu; return round($resu,3); } ?> <form action="#" method="post"> <?php if(empty($_POST)) {?> a = <input type="text" name="a" /><br /> b = <input type="text" name="b" /><br /> c = <input type="text" name="c" /><br /> <input type="submit" /> <?php } else { ?> resultat = <input type="text" value="<?php echo maFonction($_POST['a'], $_POST['b'], $_POST['c']); ?>" /><br /> <?php } ?> </form>
en espérant que quelqu'un pourra m'aider :)
A voir également:
- Transformer un PHP en JS
- Transformer majuscule en minuscule word - Guide
- Transformer une image en icone - Guide
- Easy php - Télécharger - Divers Web & Internet
- Transformer epub en kindle - Guide
- Transformer un gif en vidéo - Guide
10 réponses
Salut,
Tu peux réecrir tes fonctions en Js(ça diffère quasiment pas),concernant le formulaire tu peux faire quelque chose du genre
function res()
{
return document.getElementByid('tonid').value
}
<a href="#" onclick="res()">Calcul</a>
tu met l'id correspondant à tes champs de texte(<input id="tonid"...)
Tu peux aussi faire si ça marche pas
document.nomdetonform.tonid.value
En tous cas le principe marchera,après à toi de stoquer ça dans des variables comme tu le désire.A+
Tu peux réecrir tes fonctions en Js(ça diffère quasiment pas),concernant le formulaire tu peux faire quelque chose du genre
function res()
{
return document.getElementByid('tonid').value
}
<a href="#" onclick="res()">Calcul</a>
tu met l'id correspondant à tes champs de texte(<input id="tonid"...)
Tu peux aussi faire si ça marche pas
document.nomdetonform.tonid.value
En tous cas le principe marchera,après à toi de stoquer ça dans des variables comme tu le désire.A+
tu définis les mêmes fonctions en javascript, la syntaxe est presque la même (il suffit d'enlever les $ je crois)
au chargement de la page tu appels t'es fonctions.
Code
<form action="#" method="post">
a = <input type="text" id="a" onKeyUp="mettreAJour()" /><br />
b = <input type="text" id="b" onKeyUp="mettreAJour()" /><br />
c = <input type="text" id="c" onKeyUp="mettreAJour()" /><br />
resultat = <input type="text" id="resultat" /><br />
</form>
<script language="javascript">
function factorielle(valeur){
fact = 1;
for(i = 1; i <= valeur; i++)
fact *= i;
return fact;
}
function combinaison(k, n){
return (factorielle(n) / (factorielle(k) * factorielle(n - k)));
}
function calculer(a, b, c){
resu = 0;
for(k = c + 1; k <= b; k++){
temp = combinaison(k, b);
temp *= Math.pow((1/a), k);
temp *= Math.pow((1 - 1/a), b - k);
resu += temp;
}
resu = resu * 100;
resu = 100 - resu;
return Math.round(resu,3);
}
function mettreAJour()
{
a=document.getElementById("a").value;
b=document.getElementById("b").value;
c=document.getElementById("c").value;
document.getElementById("resultat").value=calculer(a,b,c);
}
</script>
Allah mo3ine
au chargement de la page tu appels t'es fonctions.
Code
<form action="#" method="post">
a = <input type="text" id="a" onKeyUp="mettreAJour()" /><br />
b = <input type="text" id="b" onKeyUp="mettreAJour()" /><br />
c = <input type="text" id="c" onKeyUp="mettreAJour()" /><br />
resultat = <input type="text" id="resultat" /><br />
</form>
<script language="javascript">
function factorielle(valeur){
fact = 1;
for(i = 1; i <= valeur; i++)
fact *= i;
return fact;
}
function combinaison(k, n){
return (factorielle(n) / (factorielle(k) * factorielle(n - k)));
}
function calculer(a, b, c){
resu = 0;
for(k = c + 1; k <= b; k++){
temp = combinaison(k, b);
temp *= Math.pow((1/a), k);
temp *= Math.pow((1 - 1/a), b - k);
resu += temp;
}
resu = resu * 100;
resu = 100 - resu;
return Math.round(resu,3);
}
function mettreAJour()
{
a=document.getElementById("a").value;
b=document.getElementById("b").value;
c=document.getElementById("c").value;
document.getElementById("resultat").value=calculer(a,b,c);
}
</script>
Allah mo3ine
merci pour votre aide :)
hamzafes, je ne comprend pas, ton script ne donne pas les mêmes résultats que le mien :S
exemple, pour a=15,b=100 et c=2, je devrais obtenir 3.368 pourtant j'ai 100, j'ai regardé dans ton script mais je n'ai pas trouvée l'erreur :(
hamzafes, je ne comprend pas, ton script ne donne pas les mêmes résultats que le mien :S
exemple, pour a=15,b=100 et c=2, je devrais obtenir 3.368 pourtant j'ai 100, j'ai regardé dans ton script mais je n'ai pas trouvée l'erreur :(
1- Remplaces la fonction mettreAJour par :
function mettreAJour()
{
a=parseFloat(document.getElementById("a").value);
b=parseFloat(document.getElementById("b").value);
c=parseFloat(document.getElementById("c").value);
document.getElementById("resultat").value=calculer(a,b,c);
}
2- Remplaces la ligne "return Math.round(resu,3)" par
return resu.toFixed(3);
Allah mo3ine
function mettreAJour()
{
a=parseFloat(document.getElementById("a").value);
b=parseFloat(document.getElementById("b").value);
c=parseFloat(document.getElementById("c").value);
document.getElementById("resultat").value=calculer(a,b,c);
}
2- Remplaces la ligne "return Math.round(resu,3)" par
return resu.toFixed(3);
Allah mo3ine
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
par contre j'ai encore un problème que j'avais espérer résoudre avec JS... si b>170, le résultat est toujours "NaN" comment résoudre ce problème :/
Tu peux vérifier les valeurs de a, b et c avant de faire le calcule, dans l'exemple ci-dessous si a ou b ou c est négatif alors j'affiche 0 sinon je calcule. C'est à toi de faire la condition qui te conviens.
Exemple:
function mettreAJour()
{
a=parseFloat(document.getElementById("a").value);
b=parseFloat(document.getElementById("b").value);
c=parseFloat(document.getElementById("c").value);
if(a<0 || b<0 || c<0)
document.getElementById("resultat").value=0;
else
document.getElementById("resultat").value=calculer(a,b,c);
}
Allah mo3ine
Exemple:
function mettreAJour()
{
a=parseFloat(document.getElementById("a").value);
b=parseFloat(document.getElementById("b").value);
c=parseFloat(document.getElementById("c").value);
if(a<0 || b<0 || c<0)
document.getElementById("resultat").value=0;
else
document.getElementById("resultat").value=calculer(a,b,c);
}
Allah mo3ine
nan, c'est pas un problème de condition, tout les nombres inférieurs à 170 fonctionnent mais à partir de 171, les résultat est NaN de même en PHP... je voudrais savoir comment faire pour qu'il prenne mes factorielles au dessus de 170