Rechercher : dans
Par :

Transformer un PHP en JS

Dernière réponse le 20 jun 2009 à 01:47:04 Templier Nocturne, le 19 jun 2009 à 02:12:22 
 Signaler ce message aux modérateurs

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

Meilleures réponses pour « Transformer un PHP en JS » dans :
Javascript - Coloration syntaxique dans vos pages web VoirSi vous avez un site web contenant des exemples de code (php, javascript, C#, Delphi, Python...), il peut être intéressant d'avoir une coloration syntaxique. C'est parfois pénible à réaliser, mais il existe une librairie Javascript qui permet de...
Javascript - L'objet Date VoirLes particularités de l'objet Date L'objet Date permet de travailler avec toutes les variables qui concernent les dates et la gestion du temps. Il s'agit d'un objet inclus de façon native dans Javascript, et que l'on peut toujours utiliser. La...
Javascript - L'objet String VoirLes particularités de l'objet String string est un mot anglais qui signifie "chaîne", il s'agit en fait de chaîne de caractères. L'objet String est un objet qui contient un certain nombre de propriétés et de méthodes permettant la manipulation...

1

Aucun, le 19 jun 2009 à 11:11:35

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+

Répondre à Aucun

2

hamzafes, le 19 jun 2009 à 11:18:11

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

Répondre à hamzafes

3

Templier Nocturne, le 19 jun 2009 à 13:49:43

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

Répondre à Templier Nocturne

4

hamzafes, le 19 jun 2009 à 15:46:35

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

Répondre à hamzafes

5

Templier Nocturne, le 19 jun 2009 à 23:05:58

\o/fantastique, merci beaucoup hamzafes !!!! \o/

Répondre à Templier Nocturne

6

Templier Nocturne, le 19 jun 2009 à 23:16:18

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

Répondre à Templier Nocturne

7

hamzafes, le 20 jun 2009 à 00:24:46

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

Répondre à hamzafes

8

Templier Nocturne, le 20 jun 2009 à 01:07:16

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

Répondre à Templier Nocturne

9

hamzafes, le 20 jun 2009 à 01:38:05

170! est égale à 7.25741561531E+306 je pense pas que la mémoire peut supporter plus que ça.

Répondre à hamzafes

10

 Templier Nocturne, le 20 jun 2009 à 01:47:04

:S

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

Répondre à Templier Nocturne