Jump to content

[RESOLU] Modif. d'un formulaire avec checkbox


Recommended Posts

Posted

Salut,

Je fais de temps à autre de petits formulaires avec des champs de texte tout en PHP qui envoi les données vers une BD MySQL, pas de problème là. J'ai fais une fenêtre qui permet de reprendre le formulaire et de rééditer le contenu. Pas de problème là encore !

Maintenant, je dois faire un petit FORM qui contient des champs non-texte, de type CHECKBOX. Les checkbox sont écrits de cette façon:

<input type="checkbox" name="global" value="legume" />Légumes<br>
<input type="checkbox" name="global" value="fruit" />Fruits<br>
<input type="checkbox" name="global" value="viande" />Viandes<br>

Lorsque je POST le tout, ça envoi la valeur contenu dans value, si le checkbox n'est pas coché rien n'est transmis, valeur vide "" et c'est ok comme ça !

Alors si je veux modifier ce formulaire plus tard depuis une fenêtre qui récupère les valeurs de ma BD, comment je fais pour spécifier que le choix Légumes ou Fruits était coché ou NON? Car pour mettre en mode coché un champs de type checkbox, il faut l'écrire comme ceci:

<input type="checkbox" name="global" value="legume" checked="checked" />Légumes<br>

et non

<input type="checkbox" name="global" value="legume" />Légumes<br>

Je ne sais pas trop comment m'y prendre ?

Merci de vos conseils. :yes:

Posted

et bien heu c simple (fin je crois :p )

donc tu fais un select en ramenant toutes les données de ta base, ensuite un

$sql=mysql_query($requete select); ensuite un

$data=mysql_fetch_assoc($sql);

et au moment de reecrire ton formulaire tu fais :

if (isset($data['viande']) || $data['viande'] <> '') echo "<input type='checkbox' name='viande' checked='checked'>";
else echo "<input type='checkbox' name='viande'>";

tu fais le isset si tas rien inséré dans le champs de la base et le <> si tu as mis une valeur vide...

de ce fait, si ton truc etait coché auparavant et donc que ça a posté quelque chose dans ta base, tu teste si ton champ a été affecté si oui alors tu reaffiches ta case cochée sinon tu l'affiches décochée...

c'est bien ça que tu cherchais? :transpi:

  • 1 month later...
Posted

Bonjour,

j'ai du mal à comprendre se test ?

if (isset($data['boite0']) || $data['boite0'] <> '') echo "sports <input type='checkbox' name='boite0' value='sports' checked='checked'>";

et notemment cette partie là :

$data['boite0'] <> '')

les deux croçchet veule dire vide, je ne savais pas, les deux apostrophe je comprend que c'est vide ?

Merci

Posted

$data['boite0'] <> '')

En réalité ça veut dire: si la valeur boite0 est plus grande ou plus petite (différente) de rien...

Mais de toute façon ça n'a pas été ma solution finale pour que ça fonctionne bien.

Voici la partie du formulaire pour ma page "add.html" (AJOUTER/NOUVEAU):

<form method="post" action="add.php">
<input type="checkbox" name="legumes" value="legumes" /> Légumes<br>
<input type="checkbox" name="fruits" value="fruits" /> Fruits<br>
<input type="submit" value="Ajouter">

"add.php"

$legumes = $_POST['legumes'];
$fruits = $_POST['fruits'];
mysql_connect('localhost', 'user', 'password') or die("Impossible de se connecter au serveur");
mysql_select_db('mabdd') or die("Base de données inexistante");
$sql = "INSERT INTO inventaire(fruits,legumes) VALUES('$fruits','$legumes');";
mysql_query($sql) or die ("Erreur d'écriture dans la table");
print ("Ajouté avec succès !");
mysql_close();

Voici la partie pour ma page "modifier.php" (MODIFIER):

$idm = $_GET['idm']; //ID autoincrémentiel de l'item sélectionné d'une liste d'inventaire
mysql_connect('localhost', 'user', 'password') or die("Impossible de se connecter au serveur");
mysql_select_db('mabdd') or die("Base de données inexistante");
$sql = "SELECT fruits,legumes FROM inventaire WHERE id='$idm';";
$req = mysql_query($sql) or die ("Erreur de lecture de la table");
while($data = mysql_fetch_assoc($req))
{
$id = $data['id'];
$fruits = $data['fruits'];
$legumes = $data['legumes'];
echo ("<form method=\"post\" action=\"modifier2.php?idm=$id\">\n");
if ($fruits == 'fruits')
{
echo ("<input type=\"checkbox\" name=\"fruits\" value=\"fruits\" checked=\"checked\" /> Fruits<br />\n");
}
else
{
echo ("<input type=\"checkbox\" name=\"fruits\" value=\"fruits\" /> Fruits<br />\n");
} 
if ($legumes == 'legumes')
{
echo ("<input type=\"checkbox\" name=\"legumes\" value=\"legumes\" checked=\"checked\" /> Légumes<br />\n");
}
else
{
echo ("<input type=\"checkbox\" name=\"legumes\" value=\"legumes\" /> Légumes<br />\n");
} 
echo ("<input type=\"submit\" value=\"Modifier\"></form>\n");
}
mysql_close();
?>

"modifier2.php"

$idm = $_POST['idm'];
$legumes = $_POST['legumes'];
$fruits = $_POST['fruits'];
mysql_connect('localhost', 'user', 'password') or die("Impossible de se connecter au serveur");
mysql_select_db('mabdd') or die("Base de données inexistante");
$sql = "UPDATE inventaire SET fruits='$fruits', legumes='$legumes' WHERE id='$idm';";
mysql_query($sql) or die ("Erreur d'écriture dans la table");
print ("Ajouté avec succès !");
mysql_close();

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...