Page 1 sur 2

formulaire case à cocher grisée

Posté : 14 déc. 2010, 01:54
par Lowlow
Bonsoir tout le monde,

Alors voilà j'ai un petit souci avec mon formulaire réalisé en php et avec un peu de javascript.
Le formulaire teste différentes variables, tels que le nom, l'adresse etc... il y a aussi une partie ou l'utilisateur doit faire un choix entre deux options, s'il choisit l'option 1, il doit tout remplir, si c'est l'option 2, certaine information ne sont pas nécessaire et donc des cases sont grisées (utilisation de javascript) jusque là pas de problème tout fonctionne très bien.

Par contre si je clic sur "valider", j'effectue un test de vérification en php de mon formulaire pour voir si les données obligatoires sont là (recharge la page). S'il y a une erreur, un message apparait en haut de la page, les données déjà indiquées sont conservées par la méthode : value = "<?php if(isset($_POST["name"])) echo htmlspecialchars($_POST["name"]) ?>" />
mais ce qui se passe c'est que les cases grisées ne sont plus grisées... et c'est bien là mon problème, comment faire pour que quand je valide mon formulaire, que le test s'effectue et que s'il y a une erreur, les cases restent grisées...
#-o

Merci par avance.

Re: formulaire case à cocher grisée

Posté : 14 déc. 2010, 02:15
par Lowlow
On avance, dans ma fonction test :

Code : Tout sélectionner

if (isset($_POST['option1'])) { echo 'La checkbox est pas cochée'; } else { echo 'La checkbox n\'est pas cochée'; }
mais comment mettre :

Code : Tout sélectionner

if (isset($_POST['option1'])) { les cases 1, 2 et 3 sont grisées } else { il ne se passe rien }
:shock:

Re: formulaire case à cocher grisée

Posté : 14 déc. 2010, 07:56
par epommate2
Comment tu les as grisé en javascript ?

Re: formulaire case à cocher grisée

Posté : 14 déc. 2010, 10:22
par Lowlow
Comment tu les as grisé en javascript ?
Comme ça :

Code : Tout sélectionner

<script type="text/javascript"> function GereChkbox() { if(document.getElementById("option1").checked) { document.getElementById("option2").disabled = "disabled"; document.getElementById("form3Manifestation").disabled = "disabled"; document.getElementById("form3Manifestation").style.backgroundColor="#CCCCCC"; else if(document.getElementById("option2").checked) { document.getElementById("option1").disabled = "disabled"; document.getElementById("option2").disabled = ""; else { document.getElementById("option1").disabled = ""; document.getElementById("option2").disabled = ""; } } //--> </script>

Re: formulaire case à cocher grisée

Posté : 14 déc. 2010, 10:30
par epommate2
quand tu affiche ta case à cocher, j'imagine que tu peux faire :
<input type='checkbox' name='...' <?php  echo isset($_POST['option1'])?"disabled='disabled'":""?> />

Re: formulaire case à cocher grisée

Posté : 14 déc. 2010, 17:11
par Lowlow
quand tu affiche ta case à cocher, j'imagine que tu peux faire :
<input type='checkbox' name='...' <?php  echo isset($_POST['option1'])?"disabled='disabled'":""?> />
Hum mais je comprends pas vraiment le but...
:oops:

pour l'instant j'ai

Code : Tout sélectionner

<input type="checkbox" name="materiel" id ="materiel" value="uniquement coffrets" onClick="GereChkbox();"<?php if (isset($_POST['materiel'])) echo 'checked = "checked"'?>/>
ce qui me permet de garder en mémoire que cette case a été cochée. Ainsi lors de la vérification du formulaire s'il y a une erreur, la case reste cochée.

Re: formulaire case à cocher grisée

Posté : 14 déc. 2010, 18:35
par epommate2
Heuh, alors c'est moi qui n'est pas compris le but, je pensais que tu voulais griser la case quand on avait coché option1 ...

Re: formulaire case à cocher grisée

Posté : 14 déc. 2010, 22:58
par Lowlow
Heuh, alors c'est moi qui n'est pas compris le but, je pensais que tu voulais griser la case quand on avait coché option1 ...
Non ça ça marche :)

en fait, je recommence lol, si on choisit l'option 1 (par exemple) il y a certaine case de saisie du formulaire qui sont grisées car elles ne sont plus obligatoires.

Lorsqu'on clic sur "valider", j'ai une fonction php, qui vérifie mon formulaire, s'il y a une donnée obligatoire comme par exemple l'adresse email de la personne qui manque, alors il y a un message d'erreur sur la page "il y a une erreur dans l'adresse email".Mon problème c'est que les cases grisées avant d'avoir appuyé sur "valider", ne le sont plus, puisque je teste mon formulaire en PHP, autrement dit la page est rechargée.
J'aimerai simplement garder les cases de saisie grisées même si je vérifie le formulaire...

hum c'est plus clair ?

Merci

Re: formulaire case à cocher grisée

Posté : 15 déc. 2010, 00:01
par moogli
Salut,

Lors du reaffichage du formulaire tu sais verifier si la case un est cochée (tu l'indique dans l'un de tes messages).
Dans ce if tu peut utiliser une variable qui va te permettre d'initialiser les cases 2 a 4. Par exemple tu peut creer une variable $init qui va contenir disable="disable" dans le cas ou la case 1 est cochée. Pour le else tu met $init=''; ;)

@+

Re: formulaire case à cocher grisée

Posté : 15 déc. 2010, 00:08
par Lowlow
Salut,

Lors du reaffichage du formulaire tu sais verifier si la case un est cochée (tu l'indique dans l'un de tes messages).
Dans ce if tu peut utiliser une variable qui va te permettre d'initialiser les cases 2 a 4. Par exemple tu peut creer une variable $init qui va contenir disable="disable" dans le cas ou la case 1 est cochée. Pour le else tu met $init=''; ;)

@+
Merci pour ta réponse, je débute en programmation et ce n'est pas toujours simple, donc si j'ai bien compris, mon code devrait être :

Code : Tout sélectionner

$init="disable"; "if (isset($_POST['option1'])) { $init["case1"] ; } else { $init=''; }
Je ne sais pas pourquoi mais je crois que je suis encore loin du compte :'( pas facile la programmation :oops:

Re: formulaire case à cocher grisée

Posté : 15 déc. 2010, 00:17
par moogli
Plutot
<?php
If (isset($_POST['case1'])){
$init ='disable';
}
else{
$init='';
}

// a l'affichage des cases 2 a 4
Echo '<input type="checkbox" name="case2" '.$init.' />';
// idem pour les autres !
?>
@+

Re: formulaire case à cocher grisée

Posté : 15 déc. 2010, 00:31
par Lowlow
Plutot
<?php
If (isset($_POST['case1'])){
$init ='disable';
}
else{
$init='';
}

// a l'affichage des cases 2 a 4
Echo '<input type="checkbox" name="case2" '.$init.' />';
// idem pour les autres !
?>
@+
Merci, mais ça bug encore un peu, puisque les cases 2 à 4 ne sont pas forcément des checkbox, j'ai aussi des input text
Par exemple voilà un input qui devrait rester grisé après avoir cliqué sur "valider" :
<input name="manifestation" type="text" id="form3Manifestation"  size="45" value = "<?php if(isset($_POST["manifestation"])) echo htmlspecialchars($_POST["manifestation"]) ?>" />
je ne sais pas où mettre le '.$init.'
:oops:

Re: formulaire case à cocher grisée

Posté : 15 déc. 2010, 00:42
par moogli
Un peu de doc http://fr.selfhtml.org/html/formulaires ... htm#champs

Tu y trouvera la reponse.

@+

Re: formulaire case à cocher grisée

Posté : 15 déc. 2010, 00:59
par Lowlow
Un peu de doc http://fr.selfhtml.org/html/formulaires ... htm#champs

Tu y trouvera la reponse.

@+
j'avais essayé ça :

Code : Tout sélectionner

<input name="manifestation"'.$init.' type="text" id="form3Manifestation" size="45" value = "<?php if(isset($_POST["manifestation"])) echo htmlspecialchars($_POST["manifestation"]) ?>" />
mais ce n'est pas ça, je vais voir la documentation un peu plus demain, car je suis fatiguée.

Merci pour ton aide. Bonne nuit.

Re: formulaire case à cocher grisée

Posté : 15 déc. 2010, 01:15
par devlop78
disabled="disabled" est déjà plus xhtml respectueux :p