réafficher liste checkbox cochées

Eléphanteau du PHP | 11 Messages

05 juil. 2015, 09:04

Bonjour,

Débutant en programmation j'aurai besoin d'un ptit coup de main,

j'ai un formulaire avec le nom de famille et une liste de choix (6 checkbox) qui s'affiche par rapport a une BdD

comme ceci :

Code : Tout sélectionner

<tr> <td class="align_gauche"><label for="nom">- Nom :</label></td> <td class="align_gauche"><font color="red"> * </font><input title="Le nom de famille" type="text" name="nom" id="nom" maxlength="25" size="30" value="<?php if(isset($nom)) echo $nom; ?>"/> <span class="errormessage"><?php if(isset($errornom)) echo $errornom; ?></span></td> </tr> <?php echo'<form name="select_sortie" id="select_sortie">'; $requetelistesortie = 'SELECT * FROM liste_choix_sortie WHERE affichage="yes" '; $resultatlistesortie = $mysqli->query($requetelistesortie) or die ('Erreur '.$requetelistesortie.' '.$mysqli->error); while ($infolistesortie = $resultatlistesortie->fetch_assoc()) { echo'<tr><td class="align_gauche"><INPUT type="checkbox" name="'.$infolistesortie['code'].'" value="'.$infolistesortie['num_sortie'].'" >'.$infolistesortie['lieu'].'&nbsp;'.$infolistesortie['date_debut'].'&nbsp;'.$infolistesortie['date_fin'].'</td></tr>'; } echo'</form>'; ?> <tr><td class="align_gauche"><span class="errormessage"><?php if(isset($errorlistechoixsortie)) echo $errorlistechoixsortie; ?></span></td></tr>
Je teste mon formulaire et retourne une variable erreur si il y a un problème par exemple si le nom est vide

Code : Tout sélectionner

<?php if (isset($_POST['formulaire'])) { extract($_POST); $valid = true; if(empty($nom)){ $valid=false; $errornom="Le nom de famille est obligatoire !!!"; } if ($valid) { ICI insertion dans ma base de données } } ?>
Voila mon souci et je n'y arrive pas.....
1 - tester si il y a minimum 2 checkbox cochées si moins il y a une erreur
2 - ré-afficher et re-cocher les checkbox cochées

Merci de votre aide
et bon dimanche à tous
Sébastien

Eléphanteau du PHP | 23 Messages

06 juil. 2015, 20:21

montre nous le code HTML généré du formulaire

Eléphanteau du PHP | 11 Messages

07 juil. 2015, 08:48

Bonjour Mathieu269,

Voici le code généré de ma page

Code : Tout sélectionner

<!DOCTYPE html> <html lang="fr"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <link rel="stylesheet" href="css/design_general.css" /> <link rel="SHORTCUT ICON" href="pictures/logo_onglet/logo_ski_club.png" /> <title>Mon site</title> </head> <form name="formulaire" id="formulaire" enctype="multipart/form-data" action="zz_test_1.php" method="post" > <div class="zone_formulaire"> <table> <tr> <td class="align_gauche"><label for="nom">- Nom :</label></td> <td class="align_gauche"><font color="red"> * </font><input title="Le nom de famille" type="text" name="nom" id="nom" class="majuscule" maxlength="25" size="30" value=""/> <span class="errormessage">Le nom de famille est obligatoire !!!</span></td> </tr> <tr> <td class="align_gauche"><label for="prenom">- Prénom :</label></td> <td class="align_gauche"><font color="red"> * </font><input title="Le prénom usuel" type="text" name="prenom" id="prenom" class="majuscule" maxlength="25" size="30" value=""/> <span class="errormessage">Le prénom usuel est obligatoire !!!</span></td> </tr> <form name="select_sortie" id="select_sortie"><tr><td class="align_gauche" colspan="2"><INPUT type="checkbox" name="s1" value="w1" >Station de Peyragudes (Pyr&eacute;n&eacute;es)&nbsp;du 11/03/2016 &agrave; 18h00&nbsp;au 13/03/2016 &agrave; 21h30</td></tr><tr><td class="align_gauche" colspan="2"><INPUT type="checkbox" name="s2" value="w2" >Station de Peyragudes (Pyr&eacute;n&eacute;es)&nbsp;du 18/03/2016 &agrave; 18h00&nbsp;au 20/03/2016 &agrave; 21h30</td></tr><tr><td class="align_gauche" colspan="2"><INPUT type="checkbox" name="s3" value="w3" >Station de Peyragudes (Pyr&eacute;n&eacute;es)&nbsp;du 25/03/2016 &agrave; 18h00&nbsp;au 27/03/2016 &agrave; 21h30</td></tr></form> <tr><td class="align_gauche"><span class="errormessage"></span></td></tr> </table> </div> <input type="submit" name="formulaire" class="bouton" value="Valider ma demande" style="width: 200px; height: 35px" />
Je peux afficher entre 2 et 6 séjours le demandeur doit en cocher au minimum 2

Eléphanteau du PHP | 23 Messages

07 juil. 2015, 09:04

tu peux utiliser ce code pour tester le nombre de choix

Code : Tout sélectionner

$requetelistesortie = 'SELECT * FROM liste_choix_sortie WHERE affichage="yes" '; $resultatlistesortie = $mysqli->query($requetelistesortie) or die ('Erreur '.$requetelistesortie.' '.$mysqli->error); $listeChoix = array(); while ($infolistesortie = $resultatlistesortie->fetch_assoc()) { if (isset($_POST[$infolistesortie['code']])) { // la case est cochée $listeChoix[] = $infolistesortie['code']; } } if (count($listeChoix) >= 2) { // il y a au moins 2 cases cochées }
et ensuite tu utilises la liste $listeChoix pour enregistrer la sélection dans la base de données

et la dernière étape : tu liras la base de données pour pré-cocher les choix déjà faits

Eléphanteau du PHP | 11 Messages

07 juil. 2015, 11:52

Merci Mathieu269

Grace à tes explications j'ai réussi à faire le teste sur les checkbox cochées

comme ceci name="choix[]" dans la création de ma liste

Code : Tout sélectionner

echo'<form name="select_sortie" id="select_sortie">'; $requetelistesortie = 'SELECT * FROM liste_choix_sortie WHERE affichage="yes" and code_sortie="we" '; $resultatlistesortie = $mysqli->query($requetelistesortie) or die ('Erreur '.$requetelistesortie.' '.$mysqli->error); while ($infolistesortie = $resultatlistesortie->fetch_assoc()) { echo'<tr><td class="align_gauche" colspan="2"><INPUT type="checkbox" name="choix[]" value="'.$infolistesortie['num_sortie'].'" >'.$infolistesortie['lieu'].'&nbsp;'.$infolistesortie['date_debut'].'&nbsp;'.$infolistesortie['date_fin'].'</td></tr>'; } echo'</form>';
et je teste comme ceci si le post existe et inf a 2 alors erreur et si le post n'existe pas alors erreur aussi

Code : Tout sélectionner

if(isset($_POST['choix'])) { if (count($_POST['choix']) < 2) { $valid=false; $errorlistechoixsortie="Cocher au minimum deux séjours !!!"; } }else{ $valid=false; $errorlistechoixsortie="Cocher au minimum deux séjours !!!"; }
y a t'il une autre solution que d’écrire sur la bdd pour le ré affichage si il y a une erreur ailleurs que sur les checkbox ?

Encore merci de ton aide

Eléphanteau du PHP | 11 Messages

11 juil. 2015, 10:54

Bonjour à tous,

Personne à une petite idée pour ré-afficher les checkbox sans écrire sur la bdd la sélection du visiteur si il y a un rafraîchissement de la page

Merci de votre aide

Eléphanteau du PHP | 15 Messages

11 juil. 2015, 11:09

Salut,

Tu devrais jeter un oeil à l'API "Local Storage" d'HTML5 pour ça.

Eléphanteau du PHP | 11 Messages

11 juil. 2015, 11:35

Bonjour Rukien,

Les valeurs je les aient sous forme de variable puisque je teste le nombre de checkbox cochées, mais j'arrive pas à faire une boucle pour recocher les checkbox suite par exemple il y a une erreur sur le nom donc je ré-affiche le formulaire.

Merci