Transformer un PHP en JS

Résolu/Fermé
Templier Nocturne Messages postés 7734 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 21 mai 2016 - 19 juin 2009 à 02:12
Templier Nocturne Messages postés 7734 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 21 mai 2016 - 20 juin 2009 à 01:47
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 :

<?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:

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+
0
hamzafes Messages postés 243 Date d'inscription lundi 26 juin 2006 Statut Membre Dernière intervention 4 mai 2013 54
19 juin 2009 à 11:18
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
0
Templier Nocturne Messages postés 7734 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 21 mai 2016 1 103
19 juin 2009 à 13:49
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 :(
0
hamzafes Messages postés 243 Date d'inscription lundi 26 juin 2006 Statut Membre Dernière intervention 4 mai 2013 54
19 juin 2009 à 15:46
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Templier Nocturne Messages postés 7734 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 21 mai 2016 1 103
19 juin 2009 à 23:05
\o/fantastique, merci beaucoup hamzafes !!!! \o/
0
Templier Nocturne Messages postés 7734 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 21 mai 2016 1 103
19 juin 2009 à 23:16
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 :/
0
hamzafes Messages postés 243 Date d'inscription lundi 26 juin 2006 Statut Membre Dernière intervention 4 mai 2013 54
20 juin 2009 à 00:24
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
0
Templier Nocturne Messages postés 7734 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 21 mai 2016 1 103
20 juin 2009 à 01:07
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
0
hamzafes Messages postés 243 Date d'inscription lundi 26 juin 2006 Statut Membre Dernière intervention 4 mai 2013 54
20 juin 2009 à 01:38
170! est égale à 7.25741561531E+306 je pense pas que la mémoire peut supporter plus que ça.
0
Templier Nocturne Messages postés 7734 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 21 mai 2016 1 103
20 juin 2009 à 01:47
:S

quelqu'un sait insérer un script python dans une page web :D
0