Page 1 sur 1

réafficher liste checkbox cochées

Posté : 05 juil. 2015, 09:04
par Pandademios
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

Re: réafficher liste checkbox cochées

Posté : 06 juil. 2015, 20:21
par mathieu269
montre nous le code HTML généré du formulaire

Re: réafficher liste checkbox cochées

Posté : 07 juil. 2015, 08:48
par Pandademios
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

Re: réafficher liste checkbox cochées

Posté : 07 juil. 2015, 09:04
par mathieu269
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

Re: réafficher liste checkbox cochées

Posté : 07 juil. 2015, 11:52
par Pandademios
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

Re: réafficher liste checkbox cochées

Posté : 11 juil. 2015, 10:54
par Pandademios
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

Re: réafficher liste checkbox cochées

Posté : 11 juil. 2015, 11:09
par Rukien
Salut,

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

Re: réafficher liste checkbox cochées

Posté : 11 juil. 2015, 11:35
par Pandademios
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