Garder en mémoire case à cocher checked PHP [Résolu/Fermé]

Signaler
Messages postés
68
Date d'inscription
dimanche 30 janvier 2011
Statut
Membre
Dernière intervention
28 avril 2015
-
Messages postés
68
Date d'inscription
dimanche 30 janvier 2011
Statut
Membre
Dernière intervention
28 avril 2015
-
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Messages postés
68
Date d'inscription
dimanche 30 janvier 2011
Statut
Membre
Dernière intervention
28 avril 2015

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
<?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"'; ?>
Messages postés
68
Date d'inscription
dimanche 30 janvier 2011
Statut
Membre
Dernière intervention
28 avril 2015

Merci ! Ca fonctionne ! Il manquait une fermeture de parenthèse dans tes lignes sinon tout est parfait !

Encore merci le père !

Kat.999