Calculette spéciale en PHP

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Calculette spéciale en PHP

par kouray » 12 sept. 2005, 23:05

Bon, trop dur pour l'instant, je réessaierai dans une semaine ou deux ^^

par kouray » 08 sept. 2005, 22:58

Erf, déja un probleme :/
j'ai du mal à savoir par quoi commencer...
Je vais essayer d'insérer x comme tu m'as dit, et je verrai en suite :)

par kouray » 08 sept. 2005, 22:37

Lol merci ^^
La j'allai commencer dans quelques minutes !
Sinon le site c'était plutot un site jusqu'ici pas trop destiné au public, mais c'est vrai que si ça peut intéresser des gens jvais le développer un peu plus ^^

par HD » 08 sept. 2005, 22:34

tu coince où là ? (eh oui je veux bien t'aider car j'ai aimé le principe de ton site. il y a quelque mois je voulais faire la meme chose...)

par kouray » 08 sept. 2005, 22:31

Si si, j'ai codé la calculette moi meme mais bon... c'est pas loin de ma "limite" actuelle en PHP ^^
j'ai encore énormément à apprendre !

par HD » 08 sept. 2005, 22:21

pourquoi ce n'est pas de ton niveau ? tu n'as pas codé la calculette toi meme ?
en tous cas merci pour le code ca devrait inspirer plus d'un newbie

par kouray » 08 sept. 2005, 22:19

<?
if (isset($_POST['nombre1']) AND ($_POST['signe']) AND ($_POST['nombre2']))
{
	$nombre1 = $_POST['nombre1'];
	$signe = $_POST['signe'];
	$nombre2 = $_POST['nombre2'];
		if ($signe == "+")
		{
	function calcul($nombre1, $nombre2)
		{
		$resultat = $nombre1 + $nombre2;
		return $resultat;
		}
		$resultat = calcul($nombre1, $nombre2);
		echo "$nombre1 + $nombre2 = $resultat";
		}
		if ($signe == "-")
		{
	function calcul($nombre1, $nombre2)
		{
		$resultat = $nombre1 - $nombre2;
		return $resultat;
		}
		$resultat = calcul($nombre1, $nombre2);
		echo "$nombre1 - $nombre2 = $resultat";
		}
		if ($signe == "*")
		{
	function calcul($nombre1, $nombre2)
		{
		$resultat = $nombre1 * $nombre2;
		return $resultat;
		}
		$resultat = calcul($nombre1, $nombre2);
		echo "$nombre1 x $nombre2 = $resultat";
		}
		if ($signe == "/")
		{
	function calcul($nombre1, $nombre2)
		{
		$resultat = $nombre1 / $nombre2;
		return $resultat;
		}
		$resultat = calcul($nombre1, $nombre2);
		echo "$nombre1 / $nombre2 = $resultat";
		}		
?>
<p><a href="index.php">Effectuer un autre Calcul</a><br/><br/><br/><br/><br/></p>
<?
}

else
{
?>
<h2 text-align: center;>Calculette<h2>
<p>
<form action="calculette.php" method="post">
<input type="text" name="nombre1"/> 
<select name="signe"> <option value="+">+</option> <option value="-">-</option> <option value="*">x</option> <option calue="/">/</option></select>
<input type="text" name="nombre2"/>
<input type="submit" value="Valider"/>
</form>
<br/>
</p>
<?
}
?>

par HD » 08 sept. 2005, 22:18

Ensuite, je pense qu'il devrait y avoir le moyen de saisir l'équation directement et de la découper par le = puis par les opérateurs +,-,*,/ et d'identifier les différents membres
j'y ai pensé aussi mais je ne l'ai pas fit pour 2raisons :
1 - si l'utilisateur ne respecte pas la syntaxe "par defaut" de l'application et qu'on ne prevoit pas certains "evenements" (nombreux) de ce genre, ca risque de buger facilement
2- faut plus de temps pour ecrire ca :oops: Image

par zeus » 08 sept. 2005, 22:09

Si je comprend la méthode de HD et je suis d'accord.

Il veut demander l'équation comme suit :
(_)x+(_)=(_)x+(_) où _ est une variable à saisir

donc dans l'équation -2x+3=-12, il faudra saisir (-2)x+(3)=(0)x+(-12)

J'ai pas testé mais le script doit donner le bon résultat.
Ensuite, je pense qu'il devrait y avoir le moyen de saisir l'équation directement et de la découper par le = puis par les opérateurs +,-,*,/ et d'identifier les différents membres

Intéressant comme question. Je ne peut pas m'y mettre ce soir mais si j'ai 5mn demain, je cherche de mon côté

par HD » 08 sept. 2005, 22:04

non c'est pas ca
ce que j'ai proposé s'insipre (seulement) de sa calculette pour faire un formulaire de ce genre :

[ ] x1 + [ ] = [ ] x2 + [ ]
(x1) (c1) (x2) (c2)

(remplir les [] car elles correspondent à des textarea ou numeriqueupdown ou comme il veut)
et apres c'est facile
$x=$x1-$x2 ; 
$c=$c1-$c2 ; 
$res=($c * (-1)) / $x ; 
echo "X = $res" ; 
CORRECTION :
$res= ($c * (-1)) / $x ;

par Cyrano » 08 sept. 2005, 21:56

je t'ai pas bien suivi cyrano mais j'ai ecrit ca :
<?
// comme pour ta calculette crée un formulaire avec
// une case, un "x +" , une autre case , un = , une case, un "x +" , une autre case
// attribue leurs dans l'ordre les noms : x1 , c1 , x2 , c2
$x=$x1-$x2 ;
$c=$c1-$c2 ;
$res=$c/$x ;
echo "X = $res" ;
// je ne l'ai pas testé alors à toi de me dire si c'est correcte !
?>
c'est trop facile d'où le doute qui s'installe chez moi...

edit : j'ai ajouté "x +" 2fois comme ca c'est plus clair
Faudrait que tu m'explique comment tu initialises tes variables... :-k

Que certaines viennent de la calculatrice, admettons, mais l'exemple du calcul 2x = 3x + 5 pose un problème: si "2", "3" et et "5" proviennent de la calculatrice, pas de problème, mais "x" pose un problème majeur par ce qu'on le trouve des deux cotés de l'égalités et il n'est pas initialisé : comment vas-tu donc faire ?

par kouray » 08 sept. 2005, 21:50

Merci, je vais essayer, je donne des nouvelles dans la soirée ( si j'ai compris d'ici la ^^ )
Merci encore

par HD » 08 sept. 2005, 21:46

je t'ai pas bien suivi cyrano mais j'ai ecrit ca :
<?
// comme pour ta calculette crée un formulaire avec
// une case, un "x +" , une autre case , un = , une case, un "x +" , une autre case
// attribue leurs dans l'ordre les noms : x1 , c1 , x2 , c2
$x=$x1-$x2 ;
$c=$c1-$c2 ;
$res=($c * (-1)) / $x ;
echo "X = $res" ;
// je ne l'ai pas testé alors à toi de me dire si c'est correcte !
?>
c'est trop facile d'où le doute qui s'installe chez moi...

edit : j'ai ajouté "x +" 2fois comme ca c'est plus clair

par Cyrano » 08 sept. 2005, 21:43

Le problème, c'est que tu pourras pas simplement mettre une équation directement avec une variable indéfinie, ça ne fonctionnera pas: il faudra donc manipuler ton équation de façon à ce qu'elle serve à initialiser ta variable. Donc pour faire quelque chose comme 2x = 3x + 5 par exemple, il va falloir décomposer ton calcul de façon à n'avoir plus que x = opération modifiée. Ce qui en fin de compte n'est pas un avantage considérable vu qu'il va falloir effectuer le calcul toi-même.

par kouray » 08 sept. 2005, 21:40

Merci beaucoup ^^
Je te demande pas de me le faire en entier lol :D
juste me dire comment atribuer x ( sinon ia plus aucun plaisir :D )