Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 18/04/2011, 23h29   #1
Invité de passage
 
Inscription : septembre 2009
Messages : 37
Détails du profil
Informations forums :
Inscription : septembre 2009
Messages : 37
Points : 3
Points : 3
Par défaut Problème d'envoi formulaire avec checkboxes

Bonsoir,

j'ai un problème avec l'envoi d'un formulaire comprenant des checkboxes.
J'ai une formulaire qui s'affiche avec des checkboxes qui sont déjà cochées ou non en fonction de booléens dans ma BDD Mysql.

Mon problème vient du fait que je n'arrive pas à changer ma BDD en fonction de l'état de la checkbox que je coche.

Voici le code du formulaire :
Code :
1
2
3
<form name ="form1" method ="post" action ="<?echo $_SERVER['PHP_SELF']?>">
<input type='checkbox' name="checkbox" <?php print $ch[20]; ?>>  Label</br> <!--<?php print $ch[20]; ?> étant la valeur de mon booléen dans ma BDD qui renvoie 'checked' ou 'unchecked'-->
<input type = "submit" name = "submit1" value = "Envoyer">
Et le traiement PHP
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
//connexion à la table puis
 
    if(isset($_POST['submit1']))
    {
        if (isset($_POST['ch'])) // Case chochée
        {
   			if ($ch1 == 'box') {
				$req=mysql_query("UPDATE maTable SET boolDynMess=1 WHERE idDynMess = 20") or die(mysql_error());
				echo "mise à UN";
			}
			else
			{
				$req=mysql_query("UPDATE maTable SET boolDynMess=0 WHERE idDynMess = 20") or die(mysql_error()); 
				echo "mise à ZERO";
			}
		}
	}
	mysql_close();
Dans le cas où la case est cochée au premier affichage, si je la décoche, j'ai le message "Mise à UN" quand même alors qu'elle devrait être se mettre à 0 et pas de modif de la BDD.
Dans le cas où la case est cochée au premier affichage, si je la coche, j'ai aussi le message "mise à UN", ce qui est normal cette fois, et ma BDD est bien modifiée.

Pourriez-vous m'aidez svp
Merci
neospirit
neospirit est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/04/2011, 09h30   #2
Membre Expert
 
Avatar de Bebel
 
Homme David B.
Développeur informatique
Inscription : avril 2003
Messages : 742
Détails du profil
Informations personnelles :
Nom : Homme David B.
Âge : 29
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : avril 2003
Messages : 742
Points : 1 085
Points : 1 085
Bonjour,

si ta case est cochée tu dois mettre à 1.
donc tu fais l'opération dans ton
Code :
if (isset($_POST['ch']))
sinon tu mets à 0, tu dois donc rajouter un else à ce if.

et d'où vient ta variable $ch1 ?
__________________
Tout énigme a une solution ! Tout est question de discipline !
Bebel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/04/2011, 10h02   #3
Modérateur
 
Avatar de sebhm
 
Homme Seb
Développeur Web
Inscription : avril 2004
Messages : 1 063
Détails du profil
Informations personnelles :
Nom : Homme Seb
Âge : 31
Localisation : France, Landes (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : avril 2004
Messages : 1 063
Points : 1 181
Points : 1 181
"unchecked" n'existe pas.
Si la checkbox doit être cochée : sinon rien.

Le nom de ta checkbox est "checkbox" (je ne pense pas que tu auras de probleme dans ce cas mais utiliser les noms réservés va te causer des problemes)
mais tu testes $_POST["ch"]. Y'a deja un probleme.

et comme te le dis Bebel, qu'est ce que ch1 ?

En fait, $_POST["checkbox"] n'existera que si la checkbox est cochée.
Sinon, il sera !isset
sebhm est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/04/2011, 11h14   #4
Invité de passage
 
Inscription : septembre 2009
Messages : 37
Détails du profil
Informations forums :
Inscription : septembre 2009
Messages : 37
Points : 3
Points : 3
Bonjour et merci pour vos réponses. Grâce à elles, j'ai réussi ! Je vous mets le code complet pour finir et aider les autres.

Pour répondre à vos questions, ch[$ii] sont les variables qui me permettent de récupérer les booléens pour afficher si la case est cochée ou non. J'ai renommé en chk[$ii] pour un peu plus de clarté.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
<!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"><head>
<!--<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />-->
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<html>
<?php
 
// connexion à la base
$db =mysql_connect('xxxxx', 'xxxxxxx', 'xxxxx');
mysql_select_db('xxxxxxx',$db);
 
for($ii = 0; $ii<11; $ii++){
	$boxchecked=current(mysql_fetch_array(mysql_query("SELECT boolDyn FROM maTableDyn WHERE id = ".$ii." LIMIT 1"))); 
	if ($boxchecked== 1) 
	{
		$chk[$ii] = 'checked';
	}
	else 
	{
		$chk[$ii] = '';
	}
 
	$description[$ii] = current(mysql_fetch_array(mysql_query("SELECT descriptionDyn FROM maTableDyn WHERE id = ".$ii." LIMIT 1"))); 
	$data[$ii] = current(mysql_fetch_array(mysql_query("SELECT dataDyn FROM maTableDyn WHERE id = ".$ii." LIMIT 1"))); 
 
	}
 
    if(isset($_POST['submit1']))
    {
	for($ii = 1; $ii<11; $ii++){
		if (isset($_POST['chk'.$ii.''])) // Case chochée
		{
			$req=mysql_query("UPDATE maTableDyn SET boolDyn=1 WHERE id = ".$ii."") or die(mysql_error());
		}
		else
		{
			$req=mysql_query("UPDATE maTableDyn SET boolDyn=0 WHERE id = ".$ii."") or die(mysql_error()); 
		}
	}
}
 
?>
 
</head>
<body>
<form name ="form1" method ="post" action ="<?echo $_SERVER['PHP_SELF']?>">
<!--<form name ="form1" method ="post" action ="test2.php">-->
<input type='checkbox' name="chk1" <?php print $chk[1]; ?>>  Label1</br>
<input type='checkbox' name="chk2" <?php print $chk[2]; ?>>  Label2</br>
<input type='checkbox' name="chk3" <?php print $chk[3]; ?>>  Label3</br>
<input type='checkbox' name="chk4" <?php print $chk[4]; ?>>  Label4</br>
<input type='checkbox' name="chk5" <?php print $chk[5]; ?>>  Label5</br>
<input type='checkbox' name="chk6" <?php print $chk[6]; ?>>  Label6 : <strong><?php print $data[6]; ?></strong></br>
<input type='checkbox' name="chk7" <?php print $chk[7]; ?>>  Label7: <strong><?php print $data[7]; ?></strong></br>
<input type='checkbox' name="chk8" <?php print $chk[8]; ?>>  Label8: <strong><?php print $data[8]; ?></strong></br>
<input type='checkbox' name="chk9" <?php print $chk[9]; ?>>  Label9: <strong><?php print $data[9]; ?></strong></br>
<input type='checkbox' name="chk10" <?php print $chk[10]; ?>>  Label10: <strong><?php print $data[10]; ?></strong></br>
<input type = "submit" name = "submit1" value = "Envoyer">
</form>
</form>
 
</body>
</html>
 
<?php
	mysql_close(); 
?>
Merci pour votre aide
neospirit
neospirit est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h29.


 
 
 
 
Partenaires

Hébergement Web