Garder en mémoire case à cocher checked PHP

Résolu
katarina999 Messages postés 68 Date d'inscription   Statut Membre Dernière intervention   -  
katarina999 Messages postés 68 Date d'inscription   Statut Membre Dernière intervention   -
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

le père
 
Bonjour

Pour initialiser une checkbox, il faut mettre checked="checked" et non pas value="qqchose"
3
katarina999 Messages postés 68 Date d'inscription   Statut Membre Dernière intervention  
 
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
le père
 
<?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   Statut Membre Dernière intervention  
 
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