Question à propos des formulaires

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 : Question à propos des formulaires

par aganim07 » 16 janv. 2008, 13:46

Bah j'avoue que la partie javascript m'échappe encore !! Mais je commence un peu à comprendre les formulaires, de type input ou select, avec une méthode post etc...

Je lis toujours mon livre sur PHP 5, j'en suis au chapitre sur les tableaux, et je trouve cela plus compliqué qu'en C.
Un tableau d'association en php est plus compliqué qu'un malloc en C je trouve *_*

Ce chapitre, bien que très important, je le trouve rébarbatif. Par contre le chapitre suivant est intitulé Widgets ! Là je vais apprendre plein de choses sur les formulaires et tout ce qu'on peut faire avec !!

Plus loin dans le livre il y a un chapitre sur Ajax, Javascript etc...

Je voudrais bien aussi avancer mon site web mais pour l'instant j'ai l'impression de ne pas avoir suffisament de connaissances pour le faire.
J'ai déjà fait l'index.php quand même ;)

par AB » 16 janv. 2008, 05:32

En reprenant ton idée, une fois le code remis en ordre, voilà ce que pourrait donner ta calculette :
<?php
if (isset($_POST['valeur1'],$_POST['valeur2'],$_POST['signe']) && is_numeric($_POST['valeur1']) && is_numeric($_POST['valeur2'])) 
{
    switch($_POST['signe']) {
        case 0:
        $resultat = $_POST['valeur1'] + $_POST['valeur2'];
        break;
        case 1:
        $resultat = $_POST['valeur1'] - $_POST['valeur2'];
        break;
        case 2:
        $resultat = $_POST['valeur1'] * $_POST['valeur2'];
        break;
        case 3:
        if ($_POST['valeur2'] == 0) {
            $resultat = "Mathematic Error";
            break;
        }
        $resultat = $_POST['valeur1'] / $_POST['valeur2'];
        break;
		
        default:$resultat = 'Syntax Error';
        }
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Calculette spéciale pour amuser aganim07</title>
</head>

<body onload="document.getElementById('valeur1').focus()" style="background-color:#CCCCCC">

<div style="width:400px;margin:auto">

<form method="post" action="<?php echo $_SERVER['PHP_SELF']?>" >

<p>

<input  type="text" style="width:150px; background-color: #F2FFFE" id = "valeur1"  name = "valeur1" value = "<?php if (isset($_POST['valeur1'])) echo $_POST['valeur1']?>" />

<select name="signe" style="width:50px;border:1px solid green; background-color: #00CCCC">
    <option value="0" <?php if (isset($_POST['signe']) && $_POST['signe'] == 0) echo 'selected="selected"'?>>+</option>
    <option value="1" <?php if (isset($_POST['signe']) && $_POST['signe'] == 1) echo 'selected="selected"'?>>-</option>
    <option value="2" <?php if (isset($_POST['signe']) && $_POST['signe'] == 2) echo 'selected="selected"'?>>x</option>
    <option value="3" <?php if (isset($_POST['signe']) && $_POST['signe'] == 3) echo 'selected="selected"'?>>/</option>
</select>

<input type="text" style="width:150px; background-color: #F2FFFE" id = "valeur2" name="valeur2" value = "<?php if (isset($_POST['valeur2'])) echo $_POST['valeur2']?>" />

</p>

<p>

<input type="submit" style="width:100px;border:1px solid green; background-color:#00CCCC;cursor:pointer" value="=" />

<input id = "resultat" type="text" style="width:150px; background-color:#FFFFFF" value="<?php if (isset($resultat)) echo $resultat?>" />
<input name="button" type="button" style="width:105px;border:1px solid black; background-color: #99CCFF;cursor:pointer" onclick="document.getElementById('valeur1').value='';document.getElementById('valeur2').value='';document.getElementById('resultat').value='';document.getElementById('valeur1').focus()" value="reset" />

</p>

</form>

</div>

</body>
</html>
La dernière étape serait de regrouper les styles incorporés.

C'est pour le fun car c'est quand même très limité comme calculette puisqu'on ne peut saisir que deux nombres. Pour ajouter des champs à la volée (suivant les besoins), il faudrait encore plus de javascript et alors autant tout faire en javascript car le serveur ne serait jamais sollicité.

Enfin j'espère que tu auras appris quelques trucs sur les formulaires... T'as intérêt de tout comprendre, demain, interro surprise :)

par aganim07 » 16 janv. 2008, 01:26

Oui je suis en train d'éditer mon script en conséquence merci :)
Désolé je ne connaissais pas cette expression.

Voici ce que j'obtiens. J'ai également ajouté des tentatives de contrôle des valeurs 1 et 2 pour que l'utilisateur ne puisse pas se permettre n'importe quoi (division par 0 etc...). Bon j'espère que ce n'est pas truffé de fautes ;)
<form method="post">

<p>

<input type="text" name="valeur1">

<select name="signe">
	<option value="0">+</option>
	<option value="1">-</option>
	<option value="2">x</option>
	<option value="3">/</option>
</select>

<input type="text" name="valeur2">

</p><p>

<input type="submit" value="=">

<input type="text" value="<?php
	
	if ((is_numeric($valeur1)==false) || (is_numeric($valeur2)==false)) {echo "Syntax Error";}
	else {
	
		switch($signe) {
		case 0:
			$resultat = $_POST['valeur1'] + $_POST['valeur2'];
			echo $resultat;
			break;
		case 1:
			$resultat = $_POST['valeur1'] - $_POST['valeur2'];
			echo $resultat;
			break;
		case 2:
			$resultat = $_POST['valeur1'] * $_POST['valeur2'];
			echo $resultat;
			break;
		case 3:
			if($valeur2==0) {echo "Mathematic Error";} else
			{
				$resultat = $_POST['valeur1'] / $_POST['valeur2'];
				echo $resultat;
			}
			break;
		default:
			echo "Script Error";
		}
	}
	?>"></p>

</form>

par AB » 16 janv. 2008, 01:25

Embrumé ??
TU L'A REGARDE ET COMPRIS OU PERDU DE VUE :?:

Je viens d'éditer mon précédent message.

par aganim07 » 16 janv. 2008, 01:20

Embrumé ??

par AB » 16 janv. 2008, 01:16

Hop j'ai quand même réussi à obtenir cela ! Je me suis largement inspiré d'un script trouvé sur le web pour comprendre la syntaxe de base des formulaires en html. Pour le reste j'ai fait un swtich mais je viens de me rendre compte qu'il est également disponible sur le web. Enfin bref ça fonctionne !
<form>

<p>

<input type="text" name="valeur1">

<select name="signe">
	<option value="0">+</option>
	<option value="1">-</option>
	<option value="2">x</option>
	<option value="3">/</option>
</select>

<input type="text" name="valeur2">

</p><p>

<input type="submit" value="=">

<input type="text" value="<?php
	switch($signe) {
		case 0:
		$resultat = $valeur1 + $valeur2;
		echo $resultat;
		break;
		case 1:
		$resultat = $_POST['valeur1'] - $_POST['valeur2'];
		echo $resultat;
		break;
		case 2:
		$resultat = $_POST['valeur1'] * $_POST['valeur2'];
		echo $resultat;
		break;
		case 3:
		if ($valeur2==0) {
			$resultat = "Mathematic Error";
			echo $resultat;
			break;
		}
		$resultat = $_POST['valeur1'] / $_POST['valeur2'];
		echo $resultat;
		break;
		default:
		echo "Syntax Error";
		}
	?>"></p>

</form>
Oui si tu travailles sur une vielle version de php peut-être que l'addition peux fonctionner, pour les autres opérations c'est impossible.

Et si tu travailles sur une version récente (global register off) alors rien ne fonctionnera.

Le lien que j'ai donné plus haut concernant les variables tu l'as embrumé ?

EDIT Le début du commencement de la base de compréhension des formulaires c'est que si tu ne stipules pas de method pour un formulaire les variables seront passées par la méthode $_GET donc inutile d'essayer de les récupérer par $_POST

par aganim07 » 16 janv. 2008, 00:44

Hop j'ai quand même réussi à obtenir cela ! Je me suis largement inspiré d'un script trouvé sur le web pour comprendre la syntaxe de base des formulaires en html. Pour le reste j'ai fait un swtich mais je viens de me rendre compte qu'il est également disponible sur le web. Enfin bref ça fonctionne !
<form>

<p>

<input type="text" name="valeur1">

<select name="signe">
	<option value="0">+</option>
	<option value="1">-</option>
	<option value="2">x</option>
	<option value="3">/</option>
</select>

<input type="text" name="valeur2">

</p><p>

<input type="submit" value="=">

<input type="text" value="<?php
	switch($signe) {
		case 0:
		$resultat = $valeur1 + $valeur2;
		echo $resultat;
		break;
		case 1:
		$resultat = $_POST['valeur1'] - $_POST['valeur2'];
		echo $resultat;
		break;
		case 2:
		$resultat = $_POST['valeur1'] * $_POST['valeur2'];
		echo $resultat;
		break;
		case 3:
		if ($valeur2==0) {
			$resultat = "Mathematic Error";
			echo $resultat;
			break;
		}
		$resultat = $_POST['valeur1'] / $_POST['valeur2'];
		echo $resultat;
		break;
		default:
		echo "Syntax Error";
		}
	?>"></p>

</form>

par AB » 15 janv. 2008, 23:16

Comme projet amusant, je te verrais bien faire tous les tutos de phpdebutant.org (colonne de droite).

Tu aurais déjà un minimum de base pour comprendre ces premières questions que tu te poses.

Pour répondre directement à ta question sur les variables http://fr3.php.net/manual/fr/language.v ... efined.php

Commencer par faire une calculette en php n'est peut-être pas le plus approprié car il faudra faire appel à javascript. D'ailleurs pour qu'elle soit bien fonctionnelle, le mieux serait de la faire tout en javascript et sans PHP.

Mon avis est qu'il faudrait commencer par le commencement et prendre les choses l'une après l'autre. En plus du site que j'ai cité plus haut il y a aussi le siteduzero qui montre de nombreuses applications expliquées à partir de zero (chaque étape est commentée).

Pratiquement tous les non informaticiens d'origine (dont je fais partie) ont débutés avec ces deux sites. Une bonne piste à suivre :wink:

par aganim07 » 15 janv. 2008, 22:36

Pourriez-vous m'expliquer svp l'intéret de la syntaxe $_POST($valeur1) vu que $valeur1 fonctionne aussi. D'ailleurs ça me parait dingue... Comment php sait que valeur1 par exemple correspondra à $valeur1 une fois entre les balises <?php et ?>. php ne peut avoir conscience de ce qui se passe en dehors de ses propres balises non ? Il ne peut pas parcourir le html à la recherche d'une valeur pour valeur1 selon moi alors je ne comprends plus...
<form>

<input type="text" name="valeur1">

<select name="signe">
<option value="0">+</option>
<option value="1">-</option>
<option value="2">x</option>
<option value="3">/</option>
</select>

<input type="text" name="valeur2">
<input type="submit" value="=">
<input type="text" value="
<?php
switch($signe) {
case 0:
$resultat = $valeur1 + $valeur2;
echo $resultat;
break;
case 1:
$resultat = $_POST['valeur1'] - $_POST['valeur2'];
echo $resultat;
break;
Sinon comme vous me l'aviez dit je sèche sur la partie javascript. En fait je n'ai pas trop d'idée de projet amusant qui pourrait me permettre de bien monter en compétence en php.

par aganim07 » 14 janv. 2008, 18:25

Ok. Merci bien :) Je vais chercher de ce côté là alors. J'ai décidé de coder une calculatrice comme premier projet en php. Ensuite je m'attaquerai à un pendu... ou autre chose qui fera plus intervenir du gros php avec l'utilisation d'une bdd derrière. Je pensais à la bdd pour contenir la liste des mots à trouver. Wali walou :) Sinon j'ai fait ma bannière sous Photoshop comme un grand !!

par AB » 13 janv. 2008, 23:37

Faut chercher du côté de javascript

Pour avoir la valeur d'un champs input tu peux par exemple utiliser

Code : Tout sélectionner

var valeur = document.getElementById('entree').value; ... <input type = "text" id = "entree" value = "" />
Il te reste ensuite à concaténer la seconde entrée avec la première et ainsi de suite

par Aureusms » 13 janv. 2008, 23:22

Penche toi vers javascript pour cela mais attention si tu débutes en php çà va être coton !

Question à propos des formulaires

par aganim07 » 13 janv. 2008, 23:18

Bonjour à tous !

Comment faire pour obtenir un bouton avec le chiffre 1 par exemple qui, lorsqu'il est pressé, vient afficher le chiffre 1 dans un cadre. Si derrière je rappuie sur un autre bouton comme le bouton 2 eh bien le texte obtenu dans le cadre sera 12 ! Le but est de réaliser des boutons de calculatrice pour mon premier projet en php !!

Code : Tout sélectionner

<input type="text" name="valeur1"> </p><p> <input type="submit" value="1"> <input type="submit" value="2"> <input type="submit" value="3">
Sur cet exemple, je voudrais que les boutons 1, 2 et 3 viennent ajouter un chiffre dans le cadre valeur1 pour qu'il soit embarqué par le code php qui procédera au calcul : valeur1<operateur>valeur2.

D'avance merci :)