Précédent   Forum des professionnels en informatique > PHP > Langage > Formulaires
Formulaires Forum d'entraide sur les formulaires avec PHP. Avant de poster -> FAQ formulaires, Cours de formulaires et Sources de formulaires
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 23/08/2007, 10h02   #1
Membre actif
 
Inscription : mai 2004
Messages : 478
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 478
Points : 154
Points : 154
Envoyer un message via MSN à maysa
Par défaut checkbox = checked

bonjour,

existe t-il un moyen de savoir si une checkbox est cochée ou non en php, style if is checked ?
J'ai 3 lignes avec 3 checkbox dont la valeur provient de la bdd. si la valeur est à 1 je dis que c'est coché.
1. si je décoche la valeur se met à 0 et update la base.
2. si je ne touche à rien ça met la base à jour.
3. si je ne touche à rien mais que la valeur est à 1, ça me considère la checkbox comme isset. et je ne veux pas car
si je décoche ou je coche, ma valeur s'inverse...
un peu de code pour mieux comprendre.
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
 
 <input type="checkbox"<?=$check?> name="ajouter" value="<?=$profilInfos['ajouter'];?>" />
 <input type="checkbox"<?=$check?> name="modifier" value="<?=$profilInfos['modifier'];?>" />
 <input type="checkbox"<?=$check?> name="supprimer" value="<?=$profilInfos['supprimer'];?>" />
 
if (isset($_REQUEST['ajouter']))
		{ 
			if ($_REQUEST['ajouter']=="1")
				{
					$checked = true;
					$ajouter="0";
            }
 
			else
			{	$checked = false;
				$ajouter= "1";
 
			}	
		}
 
		else 
                        // on récupère ce qu'il y a dans la base
			$ajouter= $profilInfos['ajouter'];	
$info = array("ajout"=>$ajouter);
//echo "<pre>";
//print_r($info);
//echo "<pre>";
		$update =($profil->update($info));
voilà en espérant avoir été claire, ce que je veux c'est récupérer la valeur de la base, mettre coché si c'est 1. et si on modifie enregistrer dans la base..
merci beaucoup !
maysa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2007, 10h18   #2
Membre émérite
 
Inscription : avril 2007
Messages : 868
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : avril 2007
Messages : 868
Points : 963
Points : 963
Envoyer un message via ICQ à Mark Havel Envoyer un message via MSN à Mark Havel
La valeur d'une checkbox se récupère via le nom de la balise, genre $_POST["MaBaliseCheckbox"]. Normalement, son contenu est celui de l'attribut value si elle a été cochée.
Mark Havel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2007, 12h38   #3
Membre actif
 
Inscription : mai 2004
Messages : 478
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 478
Points : 154
Points : 154
Envoyer un message via MSN à maysa
oui mais c'est pas là le problème
la valeur est mémorisée en base de donnée.
donc quand on va sur la page avec les checkbox, on a comme valeur celle de la base avec coché si la valeur est un. Si on décide de décoché ça met là valeur à 0 dans la base normalement. mais si la valeur est déjà 1 elle est donc cochée...
et comme j'inverse les valeurs le serveur si c'est coché considère que c'est initialisé..
donc voilà, je crois que je vais reprendre tout à zero car rien ne marche !
merci
maysa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2007, 13h14   #4
Membre émérite
 
Inscription : avril 2007
Messages : 868
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : avril 2007
Messages : 868
Points : 963
Points : 963
Envoyer un message via ICQ à Mark Havel Envoyer un message via MSN à Mark Havel
J'ai pas trop compris le fonctionnement de ton truc là alors . Reprends les choses simplement et ça ira peut-être mieux.
Mark Havel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2007, 15h23   #5
Membre actif
 
Inscription : mai 2004
Messages : 478
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 478
Points : 154
Points : 154
Envoyer un message via MSN à maysa
ok..

les utilisateurs arrivent sur une page avec les infos pour lesquels ils sont abonnés.

style :
- livres [checkbox]
- cd [checkbox]

en fonction de ce qu'ils ont déjà choisi la checkbox est cochée ou non et la valeur de la checkbox c'est soit 1 soit 0 et elle est enregistré dans la base.

donc quand ils reviennent sur cette page ils ont par exemple cd de coché et s'ils ne veulent plus recevoir les news des cd ils décochent cd..(donc c'est initialisé) et la valeur de cd est donc inversé (si c'est 1=>0 et si 0=>1).
il faut donc mettre cette nouvelle valeur dans la base.
mais c'est là ou ça bug et quand je décoche. tout se décoche !

en gros c'est comment faire ce genre de page...
c'est plus clair comme ça ? parce que je m'y perds un peu....
merci
maysa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2007, 15h35   #6
Membre émérite
 
Inscription : avril 2007
Messages : 868
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : avril 2007
Messages : 868
Points : 963
Points : 963
Envoyer un message via ICQ à Mark Havel Envoyer un message via MSN à Mark Havel
À mon avis il faut faire un truc du genre :

Code :
<input type="checkbox" checked="<?php echo $MaValeurBinaireTiréeDeLaBase?>" name="CD" value="<?php echo $LeTypeDObjet ?>" />
La case est cochée selon la valeur binaire de la base de données. S'ils cochent ou décochent, cela met à jour la valeur en fonction de ce qui est coché. Donc :

Code :
1
2
3
4
5
6
if(!isset($_POST["CD"]) {
  miseAZéroDeLaCaseDeValeurCD;
}
else {
  Activation...
}
La valeur de la checkbox ne doit PAS être la valeur trouvée dans la base. Cette valeur trouvée dans la base doit définir l'attribut checked. La value ici doit surtout définir le nom du type d'objet auquel on se réfère mais à priori, elle ne sert pas dans notre cas.
Mark Havel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2007, 16h12   #7
Membre régulier
 
Avatar de akara
 
Inscription : juin 2007
Messages : 299
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 299
Points : 81
Points : 81
je sais pas si j'ai bien compris ,j'ai fais un truc dans le genre
je fais une newletter dans la table client, si le client a coché j'ai dans le champs newsletter 'o' sinon 'n'
et dans sa page modification j'affiche si est abonné a la newsletter une checkbox : coché pour abonné , décoché pour pas abonné

Code :
1
2
 
<input type="checkbox" id="newsletter" name="newsletter" value="o" <?php if(isset($newsletter) && $newsletter=="o"){ echo "checked=\"checked\"";} ?>/>
si décoche, j'enregistre dans la base 'n'
__________________
Le no life répond "Counter Strike : Source"
Le geek répond "Cascading Style Sheets"
Ce n'est pas un hasard si deux choses vitales ont le même sigle
akara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/08/2007, 08h21   #8
Membre émérite
 
Inscription : avril 2007
Messages : 868
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : avril 2007
Messages : 868
Points : 963
Points : 963
Envoyer un message via ICQ à Mark Havel Envoyer un message via MSN à Mark Havel
Oui voilà. La value ne sert pas à grand chose ici en fait.
Mark Havel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/08/2007, 11h00   #9
Membre actif
 
Inscription : mai 2004
Messages : 478
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 478
Points : 154
Points : 154
Envoyer un message via MSN à maysa
Merci je vais essayer comme ça..
parce que là ça fait deux jours que je suis dessus ! j'en ai marre....
;-)
maysa 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 04h50.


 
 
 
 
Partenaires

Hébergement Web