Garder en mémoire case à cocher checked PHP

Résolu/Fermé
katarina999 Messages postés 68 Date d'inscription dimanche 30 janvier 2011 Statut Membre Dernière intervention 28 avril 2015 - 18 août 2011 à 14:55
katarina999 Messages postés 68 Date d'inscription dimanche 30 janvier 2011 Statut Membre Dernière intervention 28 avril 2015 - 18 août 2011 à 17:26
Bonjour tout le monde !

J'ai un petit soucis avec des cases à cocher.
Lorsque je valide mon formulaire, si j'ai des champs mal remplis, j'aimerais que les cases que j'ai cochées restent sélectionnés.

J'ai essayé de procéder de la même manière que mes champs, mais cela ne fonctionne pas.

Voici mon code :

<?php 
 if (isset($_POST['ok'])) 
 { 
  $msg = ''; 

  $nom = ucfirst($_POST["nom"]); 
  $prenom = ucfirst($_POST["prenom"]); 
  $postes = ''; 
   
   
  if (empty($nom) or empty($prenom)) 
  { 
   $msg .= 'Remplir tous les champs <br />'; 
  } 
   
  if (isset($_POST['postes'])) 
  { 
   foreach ($_POST['postes'] as $choix_postes) 
   { 
    $postes .= $choix_postes.' / '; 
   } 
  } 
  else { $msg .= 'Choisir vos postes souhaités <br />'; } 
   
  if (empty($msg)) 
  { 
   echo 'Nom : '.$nom.'<br />'; 
   echo 'Prénom : '.$prenom.'<br />'; 
   echo 'Postes souhaités : '.$postes; 
  } 
  else 
   echo $msg; 
 } 
?> 


<form method="post" action=""> 
 <p>Nom * : <input name="nom" size="30" maxlength="30" <?php if(isset($nom)) echo 'value="'.$nom.'"'; ?> /></p> 
 <p>Prénom * : <input name="prenom" size="30" maxlength="30" <?php if(isset($prenom)) echo 'value="'.$prenom.'"'; ?> /></p> 
    <p>Poste(s) souhaité(s) * :  
  Chef <input name="postes[]" type="checkbox" value="Chef" />  
  Sous-chef <input name="postes[]" type="checkbox" value="Sous-chef" /> 
  Sbire <input name="postes[]" type="checkbox" value="Sbire" /></p> 
 <p><input type="submit" value="ok" name="ok"/></p> 
</form> 


Merci d'avance !

2 réponses

Bonjour

Pour initialiser une checkbox, il faut mettre checked="checked" et non pas value="qqchose"
3
katarina999 Messages postés 68 Date d'inscription dimanche 30 janvier 2011 Statut Membre Dernière intervention 28 avril 2015
Modifié par katarina999 le 18/08/2011 à 16:23
Oui oui, j'ai déjà essayé cela. Mais quand je rajoute une condition comme la suivante et que je coche qu'une seule case, je me retrouve avec toutes mes cases cochées :

<?php if(isset($postes)) echo 'checked="checked"'; ?>

Je pense que comme les valeurs des checkbox sont stockées dans la même variable et du coup je me retrouve avec cette erreur.

Y-t-il moyen de vérifier si la variable contient une valeur particulière ? (Par exemple si la variable contient la chaîne de caractère 'Chef' echo 'checked="checked"'; )

Merci de m'avoir répondu.

Kat. 999
0
<?php if(isset($postes)) echo 'checked="checked"'; ?>
évidemment, puisque cette condition ne dépend pas de la ligne. Il faut tester explicitement si cette case était cochée dans le formulaire :
<?php if(isset($_POST['postes'][0]) echo 'checked="checked"'; ?>
<?php if(isset($_POST['postes'][1]) echo 'checked="checked"'; ?>
<?php if(isset($_POST['postes'][2]) echo 'checked="checked"'; ?>
1
katarina999 Messages postés 68 Date d'inscription dimanche 30 janvier 2011 Statut Membre Dernière intervention 28 avril 2015
18 août 2011 à 17:26
Merci ! Ca fonctionne ! Il manquait une fermeture de parenthèse dans tes lignes sinon tout est parfait !

Encore merci le père !

Kat.999
0