Question à propos des formulaires

Eléphanteau du PHP | 41 Messages

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

ViPHP
ViPHP | 1996 Messages

13 janv. 2008, 23:22

Penche toi vers javascript pour cela mais attention si tu débutes en php çà va être coton !
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

ViPHP
AB
ViPHP | 5818 Messages

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

Eléphanteau du PHP | 41 Messages

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 !!

Eléphanteau du PHP | 41 Messages

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.

ViPHP
AB
ViPHP | 5818 Messages

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:

Eléphanteau du PHP | 41 Messages

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>

ViPHP
AB
ViPHP | 5818 Messages

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
Modifié en dernier par AB le 16 janv. 2008, 01:22, modifié 1 fois.

Eléphanteau du PHP | 41 Messages

16 janv. 2008, 01:20

Embrumé ??

ViPHP
AB
ViPHP | 5818 Messages

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.
Modifié en dernier par AB le 16 janv. 2008, 01:27, modifié 1 fois.

Eléphanteau du PHP | 41 Messages

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>

ViPHP
AB
ViPHP | 5818 Messages

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

Eléphanteau du PHP | 41 Messages

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