Version complète: sur le forum Webmaster Hub : Donner des valeurs à un champ par bouton
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > PHP
calou80
Bonjour, débutant en php et mysql je cherche un petit renseignement: comment passer 4 valeurs possibles à un champ avec 4 boutons ( du type de ceux que l'on trouve dans les formulaires ). Je m'explique: je voudrais pouvoir passer 4 valeurs possibles ( 0, 1, 2 ou 3 ) à un champ ( de type ENUM ? ) selon si on appuie sur le bouton 1, le bouton 2 ... En fait, si j'appuie sur le bouton 1 le champ prendra la valeur 1, si j'appuie sur le bouton 2 le champ prendra la valeur 2 etc etc ... Ai-je été clair ? Merci d'avance.
Jan
Bonjour,
Tu peux utiliser ce code et l'adapter à ton besoin:
CODE
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">

<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Champ modifiable par des boutons</title>
</head>

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

<p>
<label for="champ_modifiable">Champ modifiable par des boutons:</label><br />
<input type="text" size="50" name="champ_modifiable" id="champ_modifiable" value="<?php
if (isset($_POST["bouton1"])) {
 echo "valeur 1";
}
elseif (isset($_POST["bouton2"])) {
 echo "valeur 2";
}
elseif (isset($_POST["bouton3"])) {
 echo "valeur 3";
}
elseif (isset($_POST["bouton4"])) {
 echo "valeur 4";
}
?>" />
</p>

<p>
<input type="submit" name="bouton1" value="Bouton 1" />
<input type="submit" name="bouton2" value="Bouton 2" />
<input type="submit" name="bouton3" value="Bouton 3" />
<input type="submit" name="bouton4" value="Bouton 4" />
</p>
</form>
</body>

</html>
Anonymus
Bonjour,

Le code de jan devrait te convenir, cependant ce que tu veux faire ne correspond pas à ce qu'attend un utilisateur.

Pour faire un choix (et un seul) parmi une liste de choix, on utilise habituellement le bouton 'radio'. Par exemple, pour choisir la civilité (homme ou femme), ce sont des 'boutons radio', et non des boutons 'submit'.

Pour utiliser un bouton radio, c'est le code suivant :
<input type=radio name=choix value=1>
<input type=radio name=choix value=2>
etc..
calou80
Merci à vous. J'essaie tout ça et je vous dis quoi. Encore merci.
calou80
Mille excuses à vous j'ai du mal m'exprimer.

En fait quand je parle de champ, il s'agit d'un champ de base de données. Le principe du code que vous m'avez donné est bon mais il "faudrait juste" que quand on clique sur l'un des 4 boutons, la valeur correspondante au bouton cliqué s'inscrive dans un champ de base de données. J'ai pensé à un champ de type ENUM("0","1","2","3").

Encore mille excuses mais comme je suis un très grand débutant je n'utilise peut-être pas encore le bon vocabulaire... mais j'y travaille. Pour le php j'utilise phpedit v0.6 et easyphp, ai-je fait le bon choix ? Pour phpedit il me semble qu'il faut enregistrer à chaque fois en indiquant bien l'extension .php est-ce normal ?
Boo2M0rs0
Bonjour,

Pour un champ enum la requête sql qui va avec n'est pas plus difficile.

Le code de Jan me parait bizarre ... ça défie un peu la logique du html mais je l'ai testé et ça marche ... blink.gif
Bon bref, en se servant de son code, tu peux facilement faire une requête sql qui remplirait ce champs enum:

CODE
$valeur = "";
if (isset($_POST["bouton1"])) {
$valeur = 0;
}
elseif (isset($_POST["bouton2"])) {
$valeur = 1;
}
elseif (isset($_POST["bouton3"])) {
$valeur = 2;
}
elseif (isset($_POST["bouton4"])) {
$valeur = 3;
}
mysql_query("INSERT INTO ta_table (champ_enum) VALUES ( '$valeur')");


Pour phpedit, je ne connais, personnelement, j'utilise notepad++ tout en sachant que ce n'est pas le meilleur (poil dans la main).
Easyphp, étant donné que c'est juste un serveur web php/mysql préinstallé, on ne peut pas dire qu'il soit bon ou mauvais, il satisfait très bien le rôle pour lequel il a été conçu c'est tout smile.gif
Jan
CITATION(Boo2M0rs0 @ dimanche 25 septembre 2005, 14h49)
Le code de Jan me parait bizarre ... ça défie un peu la logique du html mais je l'ai testé et ça marche ...  blink.gif

Pas impossible ça laugh.gif Pour info, qu'est-ce qui te choque?
calou80
Ok Boo2MOrsO mais je mets ça où exactement dans le code de Jan ? Je suppose également que dans la dernière ligne de ton code ta_table doit être remplacée par le nom de ma table et champ_enum alors par le nom de mon champs ? Mais aussi, quand on essaie de remplir une table ne faut-il pas également un petit fichier qui permet de se connecter à la base de données et qu'on appelle dans le formulaire de saisie ? Mille excuses pour toutes ces précisions mais je suis un grand débutant !
Boo2M0rs0
CITATION(Jan @ dimanche 25 septembre 2005, 14h57)
Pas impossible ça laugh.gif Pour info, qu'est-ce qui te choque?
*


En fait quand je vois ça:
CODE
<input type="submit" name="bouton1" value="Bouton 1" />
<input type="submit" name="bouton2" value="Bouton 2" />
<input type="submit" name="bouton3" value="Bouton 3" />
<input type="submit" name="bouton4" value="Bouton 4" />

Ces trois boutons sont dans le même formulaire, ils ont tous les 4 un attribut name et une valeur, donc les 4 devraient être envoyés au script lors de l'envoi du formulaire ...
C'est sûrement une subtilité du html rolleyes.gif

CITATION(calou80 @ dimanche 25 septembre 2005, 20h00)
Ok Boo2MOrsO mais je mets ça où exactement dans le code de Jan ? Je suppose également que dans la dernière ligne de ton code ta_table doit être remplacée par le nom de ma table et champ_enum alors par le nom de mon champs ? Mais aussi, quand on essaie de remplir une table ne faut-il pas également un petit fichier qui permet de se connecter à la base de données et qu'on appelle dans le formulaire de saisie ? Mille excuses pour toutes ces précisions mais je suis un grand débutant !
*

Oui, les "ta_table" et "champ_enum" doivent être remplacée par les vrais noms.
Je supposait aussi que le code pour se connecter au serveur mysql et choisir la base de donnée était déjà mis ( mysql_connect() et mysql_select_db() ).

Ca devrait donner en tout:
CODE

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">

<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Champ modifiable par des boutons</title>
</head>

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

mysql_connect('localhost', 'user', 'pass') or die( "Connection impossible");
mysql_select_db('basededonnee') or die('Impossible de choisir la base de donnée');

if (isset($_POST["bouton1"])) {
$valeur = 0;
}
elseif (isset($_POST["bouton2"])) {
$valeur = 1;
}
elseif (isset($_POST["bouton3"])) {
$valeur = 2;
}
elseif (isset($_POST["bouton4"])) {
$valeur = 3;
}

if( isset( $valeur ))
{
mysql_query("INSERT INTO ta_table (champ_enum) VALUES ( '$valeur')");
echo "Le bouton n°" . ($valeur +1) . " a été pris en compte dans la base de donnée";
}

?>
</p>

<p>
<input type="submit" name="bouton1" value="Bouton 1" />
<input type="submit" name="bouton2" value="Bouton 2" />
<input type="submit" name="bouton3" value="Bouton 3" />
<input type="submit" name="bouton4" value="Bouton 4" />
</p>
</form>
</body>

</html>


EDIT: à remplacer aussi les 'localhost', 'user' , 'pass' et 'basededonne'. Certaines fois il est d'ailleur pratique de stocker ces données dans un fichier séparé que l'on inclus dans chaque page. On peut aussi carément inclure un fichier qui contient ces deux commandes.
calou80
Merci à vous ça fonctionne.
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.