formulaire case à cocher grisée

Eléphanteau du PHP | 30 Messages

14 déc. 2010, 01:54

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.

Eléphanteau du PHP | 30 Messages

14 déc. 2010, 02:15

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:

Eléphant du PHP | 209 Messages

14 déc. 2010, 07:56

Comment tu les as grisé en javascript ?
--
Eric

Eléphanteau du PHP | 30 Messages

14 déc. 2010, 10:22

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>

Eléphant du PHP | 209 Messages

14 déc. 2010, 10:30

quand tu affiche ta case à cocher, j'imagine que tu peux faire :
<input type='checkbox' name='...' <?php  echo isset($_POST['option1'])?"disabled='disabled'":""?> />
--
Eric

Eléphanteau du PHP | 30 Messages

14 déc. 2010, 17:11

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.

Eléphant du PHP | 209 Messages

14 déc. 2010, 18:35

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 ...
--
Eric

Eléphanteau du PHP | 30 Messages

14 déc. 2010, 22:58

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

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

15 déc. 2010, 00:01

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=''; ;)

@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 30 Messages

15 déc. 2010, 00:08

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:

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

15 déc. 2010, 00:17

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 !
?>
@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 30 Messages

15 déc. 2010, 00:31

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:

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

15 déc. 2010, 00:42

Un peu de doc http://fr.selfhtml.org/html/formulaires ... htm#champs

Tu y trouvera la reponse.

@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 30 Messages

15 déc. 2010, 00:59

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.

devlop78
Invité n'ayant pas de compte PHPfrance

15 déc. 2010, 01:15

disabled="disabled" est déjà plus xhtml respectueux :p