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 03/05/2011, 17h12   #1
Membre à l'essai
 
Étudiant
Inscription : mai 2007
Messages : 36
Détails du profil
Informations personnelles :
Âge : 23
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2007
Messages : 36
Points : 21
Points : 21
Envoyer un message via MSN à DanTesS
Par défaut Array checkbox : Disabled non pris en compte ?

Bonjour à tous,

J'affiche un formulaire contenant plusieurs checkbox, et j'ai besoin de récupérer leur valeur pour les insérer dans une base de données.

Celles-ci étant classable en catégories distinctes, j'utilise un array pour le nom des checkbox, et je récupère via un petit script PHP.

Seulement, quelques unes de mes checkbox doivent être obligatoirement cochées, non pas comme un formulaire ou,
par exemple : "Choisissez vos 3 marques de voiture préférées" et ou on ne peut pas valider le formulaire si au moins 3 choix ne sont pas cochés dans la liste,
mais obligatoirement cochées dans le sens ou quand l'utilisateur arrive sur la page, la case est pré-cochée et il ne peut pas la décocher (ne me demandez pas pourquoi je dois faire ça, c'est pour m'éviter de coder quelque chose de beaucoup plus embêtant et qui arriverait au même résultat).

Pour réussir cela, je voudrais éviter de passer par du javascript, sauf si j'y suis vraiment obligé.

J'ai donc opté pour une solution de type disabled="true" dans les attributs des checkbox, la grisant et nous empêchant donc de cliquer.

Seulement...quand on fait cela, la case n'est plus prise en compte dans le array des checkbox !

Voici un bout de code qui sera plus parlant (le code est loin d'être valide W3C, mais un simple copier-coller et il fonctionne ^^) :

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
 
<?php
	// This is to collect box array value as global_variables is set off in PHP5 by default 
 
	$box=$_POST['box'];
 
	var_dump($box);
	while (list ($key,$val) = @each ($box)) 
	{ 
		echo "$val," ; 
	} 
 
	echo "<form method=post action=''>" ; 
	echo "<table border='0' cellspacing='0' style='border-collapse: collapse' width='100' > 
			<tr bgcolor='#ffffff'> 
				<td width='25%'><input type=checkbox name=box[] value='John' checked disabled></td> 
				<td width='25%'>&nbsp;John</td> 
				<td width='25%'><input type=checkbox name=box[] value='Mike'></td> 
				<td width='25%'>&nbsp;Mike</td> 
				<td width='25%'><input type=checkbox name=box[] value='Rone'></td> 
				<td width='25%'>&nbsp;Rone</td> 
			</tr> 
			<tr bgcolor='#f1f1f1'> 
				<td width='25%'><input type=checkbox name=box[] value='Mathew'></td> 
				<td width='25%'>&nbsp;Mathew</td> 
				<td width='25%'><input type=checkbox name=box[] value='Reid'></td> 
				<td width='25%'>&nbsp;Reid</td> 
				<td width='25%'><input type=checkbox name=box[] value='Simon'></td> 
				<td width='25%'>&nbsp;Simon</td> 
			</tr> 
 
			<tr><td colspan =6 align=center><input type=submit value=Select></form></td></tr> 
		</table>"; 
?>
Comme vous pouvez le voir à cette ligne :

Code :
1
2
 
<td width='25%'><input type=checkbox name=box[] value='John' checked disabled></td>
La case est validée/grisée, mais elle n'est jamais prise en compte dans le array, car sa valeur n'est tout simplement pas envoyée, du au disabled.

Mon problème est : Comment contourner cela ? comment rendre une case bloquée sur "cochée", sans pouvoir changer son état, et l'envoyer ?

J'ai tenté avec "readonly", on peut modifier, et "required" ne fait rien.

Merci d'avance pour vos réponses, et bonne soirée à tous
DanTesS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/05/2011, 17h20   #2
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
normalement readonly c'est bon, et c'est readonly="readonly"

après le contrôle coté client c'est plus pour la deco puisque tu peux tout modifier
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h40.


 
 
 
 
Partenaires

Hébergement Web