Partage
  • Partager sur Facebook
  • Partager sur Twitter

Récuperer les valeurs de checkbox

Sujet résolu
    28 octobre 2009 à 19:02:01

    Bonsoir j'ai un petit problème voici mes checkbox

    <input type="checkbox" name="options[]" value="Machine à bulles" /> Machine à bulles
    <input type="checkbox" name="options[]" value="Projection photos vidéos en live sur vidéoprojecteur" /> Projection photos vidéos en live sur vidéoprojecteur
    <input type="checkbox" name="options[]" value="Machine à confettis ou T-shirt" /> Machine à confettis ou T-shirt
    <input type="checkbox" name="options[]" value="Sonorisation pour vin d'honneur" /> Sonorisation pour vin d'honneur
    <input type="checkbox" name="options[]" value="Pack de 10 octolights" /> Pack de 10 octolights
    <input type="checkbox" name="options[]" value="magicien" /> Magicien
    


    Et je veut récupérer les valeurs des checkbox coché donc je fait ceci

    <?php
    foreach($_POST["options"] as $checkoptions){
    $check = $checkoptions;
    }
    echo $check;
    ?>
    


    Mais sa me récupère que Machine à bulles qui aurait une idée :( merci
    • Partager sur Facebook
    • Partager sur Twitter
      28 octobre 2009 à 19:14:43

      Bonsoir,

      Une relation avec le fait que toutes tes cases à cocher est le même nom peut-être?
      A mon avis, tu t'emmêles entre html et php, sans quoi, tu ne serais pas venu poster dans le forum php un problème de html ;)
      • Partager sur Facebook
      • Partager sur Twitter
        28 octobre 2009 à 19:22:04

        Je pense pas que c'est le html je vous passe ma page entière

        <?php 
        
        // -- on inclu la configuration
        include ('includes/conf.php');
        
        // -- Protection des variables
        function postInput($string) {
        $string = trim($string);
        $string = htmlspecialchars($string);
        $string = strip_tags($string);
        $string = stripslashes($string);
        return $string;
        }
        
        // --  Teste la validité d'une adresse e-mail 
        function EmailOK($email) 
        { 
        return eregi("^([&_a-z0-9-]+(\.[&_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)+)$",$email); 
        } 
        
        // -- Traitement du formulaire
        if (isset($_POST["action"]) && $_POST["action"] == "send")
        {
        
        $date = date("d/m/Y");
        $heure = date("H:i:s");
        
        $ip = $_SERVER["REMOTE_ADDR"];
        $choix_status = postInput($_POST["choix_status"]);
        $nom = postInput($_POST["nom"]);
        $prenom = postInput($_POST["prenom"]);
        $adresse = postInput($_POST["adresse"]);
        $ville = postInput($_POST["ville"]);
        $code_postal = postInput($_POST["code_postal"]);
        $telephone = postInput($_POST["telephone"]);
        $email = postInput($_POST["email"]);
        $choixevenements = postInput($_POST["choixevenements"]);
        $lieux = postInput($_POST["lieux"]);
        $date = postInput($_POST["date"]);
        $nbr_personnes = postInput($_POST["nbr_personnes"]);
        $options_magie = postInput($_POST["options_magie"]);
        $deroulement = postInput($_POST["deroulement"]);
        $connaissance = postInput($_POST["connaissance"]);
        	
        	/* Envoi du mail à l'administrateur */
        
        	foreach($_POST["options"] as $checkoptions){
        
        	$subject = "Demande de devis de $nom $prenom";
        	$headers = "content-type:text/html\n";
        	$headers.= "from:".(ETP_NAME)." <".(ETP_EMAIL).">\n";
        	$code    = '
        	<p>Récapitulatif du devis de '.$nom.' '.$prenom.' pour une prestation</p>
        	<p>Devis envoyé le '.$date.' à '.$heure.'<br />
        	Ip de la personne : '.$ip.'</p>
        	<p>
        	<strong>Status</strong> : '.$choix_status.'<br />
        	<strong>Nom</strong> : '.$nom.'<br />
        	<strong>Prénom</strong> : '.$prenom.'<br />
        	<strong>Adresse</strong> : '.$adresse.'<br />
        	<strong>Ville</strong> : '.$ville.'<br />
        	<strong>Code postal</strong> : '.$code_postal.'<br />
        	<strong>Téléphone</strong> : '.$telephone.'<br />
        	<strong>E-mail</strong> : '.$email.'<br />
        	<strong>Type d\'événement</strong> : '.$choixevenements.'<br />
        	<strong>Lieux de la prestation</strong> : '.$lieux.'<br />
        	<strong>Date de la prestation</strong> : '.$date.'<br />
        	<strong>Nombres de personnes</strong> : '.$nbr_personnes.'<br />
        	<strong>Option suplémentaire souhaitée</strong> : '.$checkoptions.' |<br />
        	<strong>Option suplémentaire Magicien</strong> : '.$options_magie.'<br />
        	<strong>Déroulement contraintes</strong> : '.$deroulement.'<br />
        	<strong>Le client nous à connus par</strong> : '.$connaissance.'<br />
        	</p>
        	';
        	
        	}
        	
        	mail('staff@domaine.com',$subject,$code,$headers);
        	
        	header("location: devis.php?msg=".urlencode("Merci $prenom $nom. options : $value Votre devis nous à bien été transmis,<br />nous allons y donner suite dans les plus bref délai."));
        	exit();
        	
        	}
        }
        else
        {
        $choix_status = "";
        $nom = "En majuscule SVP";
        $prenom = "";
        $adresse = "";
        $ville = "";
        $code_postal = "";
        $telephone = "Ex : 08.92.23.03.22";
        $email = "L'adresse e-mail et vérifier";
        $choixevenements = "";
        $lieux = "Pour calculer les frais de route";
        $date = "Ex : 01/01/2010";
        $nbr_personnes = "Seulement les adultes";
        $options = "";
        $options_magie = "";
        $deroulement = "";
        $connaissance = "";
        }
        
        // -- On inclus le header
        include('includes/header.php');
        
        // -- On inclus les plaquettes 
        include('includes/plaquette.php');
        
        ?>
        
        <!-- début du formulaire -->
        
        <!-- Debut Colonne Gauche -->
            <div id="gauche">
        		<?php
        		
        		//-- Message OK
        		if (!empty($_GET["msg"])) {
        			$msg = urldecode($_GET["msg"]);
        			$msg = stripslashes($msg);
        
        			echo("<div style=\"margin: 5px;\" class=\"box_vert\"><strong>$msg</strong></div>");
        		}
        		
        		//-- Message Erreur
        		if (!empty($_GET["msgr"])) {
        			$msgr = urldecode($_GET["msgr"]);
        			$msgr = stripslashes($msgr);
        
        			echo("<div style=\"margin: 5px;\" class=\"box_rouge\"><strong>$msgr</strong></div>");
        		}
        		
        		?>
        		<form action="" method="post">
        		<input type="hidden" name="action" value="send">			
        		<table border="0" width="100%">
        				<tr>
        						<br /><h2><span class="souligne">DEMANDE DE DEVIS</span></h2><br />
        						<a href="suite.php">Comment cela se passe t-il aprés l'envoie de mon devis ?</a><br />
        						<br /><font color="#FF0000">Les champs marqué d'une * sont à remplir obligatoirement</font><br />
        
        					<td>Status :</td>
        					<td>
        						<select name="choix_status">
        							<option selected="selected" value="Particulier">Particulier</option>
        							<option value="Entreprise">Entreprise</option>
        							<option value="Collectivite">Colléctivité</option>
        							<option value="Association">Association</option>
        							<option value="Autre">Autre</option>
        						</select>
        					</td>
        				</tr>
        				<input type="hidden" id="ip" name="ip" size="20" value="<?php echo($_SERVER["REMOTE_ADDR"]); ?>" />
        				<tr>
        					<td>* Nom :</td>
        					<td><input type="text" id="nom" name="nom" size="20" value="<?php echo($nom); ?>" /></td>
        				</tr>
        				<tr>
        					<td>* Prénom :</td>
        					<td><input type="text" id="prenom" name="prenom" size="20" value="<?php echo($prenom); ?>" /></td>
        				</tr>
        				<tr>
        					<td>* Adresse :</td>
        					<td><input type="text" id="adresse" name="adresse" size="20" value="<?php echo($adresse); ?>" /></td>
        				</tr>
        				<tr>
        					<td>* Ville :</td>
        					<td><input type="text" id="ville" name="ville" size="20" value="<?php echo($ville); ?>" /></td>
        				</tr>
        				<tr>
        					<td>* Code Postal :</td>
        					<td><input type="text" id="code_postal" name="code_postal" size="20" value="<?php echo($code_postal); ?>" /></td>
        				</tr>
        				<tr>
        					<td>* Téléphone :</td>
        					<td><input type="text" id="telephone" name="telephone" size="20" value="<?php echo($telephone); ?>" /></td>
        				</tr>
        				<tr>
        					<td>* E-mail :</td>
        					<td><input type="text" id="email" name="email" size="30" value="<?php echo($email); ?>" /></td>
        				</tr>
        				<tr>
        					<td>* Type de prestation :</td>
        					<td>
        						<select name="choixevenements">
        							<option selected="selected" value="0">Sélectionnez</option>
        							<option value="emeraude">Forfait Emeraude</option>
        							<option value="rubis">Forfait Rubis</option>
        							<option value="vip"> Forfait Fiesta V.I.P</option>
        							<option value="excellence">Forfait Fiesta Excellence </option>
        							<option value="religieux">Forfait Religieux</option>
        							<option value="nouvel_an">Forfait Nouvel An</option>
        							<option value="karaoke">Forfait Kara'Ambiance</option>
        							<option value="kermesse">Forfait Journée Kermesse</option>
        							<option value="Magicien">Forfait Magicien</option>
        						</select>
        					</td>
        				</tr>
        				<tr>
        					<td>* Lieux de la prestation :</td>
        					<td><textarea id="lieux" name="lieux" cols="20" rows="1" value="<?php echo($lieux); ?>" /></textarea></td>
        				</tr>
        				<tr>
        					<td>* Date de l'événement :</td>
        					<td><input type="text" id="date" name="date" size="20" value="<?php echo($date); ?>" /></td>
        				</tr>
        				<tr>
        					<td>Nombre de personnes :</td>
        					<td><input type="text" id="nbr_personnes" name="nbr_personnes" size="20" value="<?php echo($nbr_personnes); ?>" /></td>
        				</tr>
        				<tr>
        					<td>Options suplémentaire souhaitée :</td>
        					<td>
        						<input type="checkbox" name="options[]" value="Machine à bulles" /> Machine à bulles <br />
        						<input type="checkbox" name="options[]" value="Projection photos vidéos en live sur vidéoprojecteur" /> Projection photos vidéos en live sur vidéoprojecteur <br />
        						<input type="checkbox" name="options[]" value="Machine à confettis ou T-shirt" /> Machine à confettis ou T-shirt <br />
        						<input type="checkbox" name="options[]" value="Sonorisation pour vin d'honneur" /> Sonorisation pour vin d'honneur <br />
        						<input type="checkbox" name="options[]" value="Pack de 10 octolights" /> Pack de 10 octolights <br />
        						<input type="checkbox" name="options[]" value="magicien" /> Magicien 
        
        					</td>
        				</tr>
        				<tr>
        					<td>Options suplémentaire du magicien :</td><br />
        					<td>
        						<input type="checkbox" name="options_magie[]" value="Zippo le clown" <?php if ($options == "zippo_clown") echo("checked=\"checked\""); ?> /> Zippo le clown <br />
        						<input type="checkbox" name="options_magie[]" value="Sculpture sur ballons" <?php if ($options == "sculpture_ballons") echo("checked=\"checked\""); ?> /> Sculpture sur ballons
        					</td>
        				</tr>
        				<tr>
        					<td>Déroulement Contraintes :</td>
        					<td><textarea id="deroulement" name="deroulement" cols="40" rows="8" value="<?php echo($deroulement); ?>" /></textarea></td>
        				</tr>
        				<tr>
        					<td>* Comment vous nous avez connus ? :</td>
        					<td><input type="text" id="connaissance" name="connaissance" size="53" value="<?php echo($connaissance); ?>" /></td>
        				</tr>
        			
        			</table>
        			<br /><input type="submit" value="Envoyer le devis" /><br />
        		</form>
            </div>
        	
        <!-- Fin Colonne Gauche -->
        
        <?php 
        
        // -- On inclus le menu droit
        include('includes/menu.php');
        
        // -- On inclus le footer
        include('includes/footer.php'); 
        
        ?>
        
        • Partager sur Facebook
        • Partager sur Twitter
          28 octobre 2009 à 19:28:49

          Tu ne penses pas que ce soit un problème de html ? Alors pose toi la question de savoir comment fait PHP pour différencier les différentes Checkbox ^^
          • Partager sur Facebook
          • Partager sur Twitter
            28 octobre 2009 à 19:38:06

            Citation : Noxalus

            Tu ne penses pas que ce soit un problème de html ? Alors pose toi la question de savoir comment fait PHP pour différencier les différentes Checkbox ^^



            Quelles est le rapport avec ma question ?

            Je demandais comment récupérer la liste des cases cochés j'ai regarder a un peu partout sur le forum j'ai vu qu'on pouvait avoir le même nom sur un checkbox donc j'ai essayer de créer mon code et me voila confronter a un problème j'arrive qu'a récupérer que la première case coché.
            • Partager sur Facebook
            • Partager sur Twitter
              28 octobre 2009 à 19:49:51

              Tu écrase la valeur de l'option cochée à chaque fois que tu passe dans le foreach,
              Il faut concaténer avec le reste par exemple ;) :

              <?php
              $check = "-";
              foreach($_POST["options"] as $checkoptions){
              $check .= $checkoptions."-";
              }
              echo $check;
              ?>
              

              • Partager sur Facebook
              • Partager sur Twitter
              - Activer les erreurs : PHP - PDO - MYSQLI - ¯\_ツ_/¯ - Documentations : PHP - MySQL -
                28 octobre 2009 à 19:57:49

                Merci Sombrelune je viens de mettre ton petit bout de code par contre la se me récupère la dernière case cocher
                • Partager sur Facebook
                • Partager sur Twitter
                  28 octobre 2009 à 20:10:37

                  Y'a la réponse ici aussi si tu veux ;)
                  • Partager sur Facebook
                  • Partager sur Twitter
                  - Activer les erreurs : PHP - PDO - MYSQLI - ¯\_ツ_/¯ - Documentations : PHP - MySQL -
                    28 octobre 2009 à 20:24:03

                    Si c'est pour mettre les valeurs cochées dans la même chaine:
                    <?php $check = implode(' - ', $_POST['options']);
                    • Partager sur Facebook
                    • Partager sur Twitter
                    Erreur PDO - Installation Wamp - Docs PHP et MYSQL.
                      28 octobre 2009 à 21:52:01

                      Le code que je t'ai passé devrait marcher staff, t'es sûr que t'as bien ton script de la forme :

                      <?php
                      foreach($_POST["options"] as $check)
                      {
                          if( !isset($checkoptions) ){ $checkoptions = $check; }
                          else{ $checkoptions .= ", ".$check; }
                      }
                      
                      $subject = "Demande de devis de $nom $prenom";
                      $headers = "content-type:text/html\n";
                      $headers.= "from:".(ETP_NAME)." <".(ETP_EMAIL).">\n";
                      $code    = '
                      <p>Récapitulatif du devis de '.$nom.' '.$prenom.' pour une prestation</p>
                      <p>Devis envoyé le '.$date.' à '.$heure.'<br />
                      Ip de la personne : '.$ip.'</p>
                      <p>
                      <strong>Status</strong> : '.$choix_status.'<br />
                      <strong>Nom</strong> : '.$nom.'<br />
                      <strong>Prénom</strong> : '.$prenom.'<br />
                      <strong>Adresse</strong> : '.$adresse.'<br />
                      <strong>Ville</strong> : '.$ville.'<br />
                      <strong>Code postal</strong> : '.$code_postal.'<br />
                      <strong>Téléphone</strong> : '.$telephone.'<br />
                      <strong>E-mail</strong> : '.$email.'<br />
                      <strong>Type d\'événement</strong> : '.$choixevenements.'<br />
                      <strong>Lieux de la prestation</strong> : '.$lieux.'<br />
                      <strong>Date de la prestation</strong> : '.$date.'<br />
                      <strong>Nombres de personnes</strong> : '.$nbr_personnes.'<br />
                      <strong>Option suplémentaire souhaitée</strong> : '.$checkoptions.' |<br />
                      <strong>Option suplémentaire Magicien</strong> : '.$options_magie.'<br />
                      <strong>Déroulement contraintes</strong> : '.$deroulement.'<br />
                      <strong>Le client nous à connus par</strong> : '.$connaissance.'<br />
                      </p>';
                      
                      mail('staff@domaine.com', $subject, $code, $headers);
                      ?>
                      


                      Le contenu du mail ne doit pas être dans le foreach() c'est seulement les valeurs concernées qui doivent se concaténer à l'intérieur. ;)
                      • Partager sur Facebook
                      • Partager sur Twitter
                      - Activer les erreurs : PHP - PDO - MYSQLI - ¯\_ツ_/¯ - Documentations : PHP - MySQL -
                        28 octobre 2009 à 22:12:39

                        Pourtant j'ai bien fait comme tu a décrit et je reçoit toujours le dernier coché et pas toute la liste coché. Par contre j'ai essayer ton code il y'a un problème dans le foreach

                        <?php
                        foreach($_POST["options"] as $checkoptions)
                        {
                        if( !isset($checkoptions) ){ $checkoptions = $check; }
                        else{ $checkoptions .= ",".$check; }
                        }
                        ?>
                        


                        Il manquait les ; derrière les $check sinon erreur :(
                        • Partager sur Facebook
                        • Partager sur Twitter
                          28 octobre 2009 à 22:27:03

                          Oui, j'ai écris un peu vite ...

                          Hummm, je sais pas c'est bizarre, il y avais une accolade fermante en trop ligne 83 mais t'as surement dû la corriger, sinon bah c'est soit que tu écrase la valeur de $_POST["options"] avant avec une fonction ou autre soit que y'a un problème de transition entre tes pages. Fais des test avec des print_r($_POST["options"]) pour savoir si tu reçois bien ce qu'il faut.
                          • Partager sur Facebook
                          • Partager sur Twitter
                          - Activer les erreurs : PHP - PDO - MYSQLI - ¯\_ツ_/¯ - Documentations : PHP - MySQL -
                            28 octobre 2009 à 22:32:17

                            Quand je fait un print je récupère bien tout se que j'ai coché
                            • Partager sur Facebook
                            • Partager sur Twitter
                              28 octobre 2009 à 22:38:30

                              Si tu met le print_r() juste avant le foreach() il te met tout ce que tu as coché ? o_O
                              • Partager sur Facebook
                              • Partager sur Twitter
                              - Activer les erreurs : PHP - PDO - MYSQLI - ¯\_ツ_/¯ - Documentations : PHP - MySQL -
                                28 octobre 2009 à 22:40:54

                                Oui je reçoit tout parce que j'ai tout coché

                                <?php
                                Array ( [0] => Machine à bulles [1] => Projection photos vidéos en live sur vidéoprojecteur [2] => Machine à confettis ou T-shirt [3] => Sonorisation pour vin d\'honneur [4] => Pack de 10 octolights [5] => magicien ) 
                                ?>
                                
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  28 octobre 2009 à 22:48:20

                                  ok, et si tu fait un "echo $checkoptions;" juste après le foreach() ?

                                  Edit : Omg la boulette ( va falloir que jme couche la c'est grave ... )

                                  <?php
                                  foreach($_POST["options"] as $check)
                                  {
                                  if( !isset($checkoptions) ){ $checkoptions = $check; }
                                  else{ $checkoptions .= ",".$check; }
                                  }
                                  ?>
                                  


                                  j'avais mis le $checkoptions dans le foreach au lieu du check, l'erreur venait de ton premier code en fait j'y ai même pas fait gaffe.
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                  - Activer les erreurs : PHP - PDO - MYSQLI - ¯\_ツ_/¯ - Documentations : PHP - MySQL -
                                    28 octobre 2009 à 22:50:23

                                    la je reçoit que le dernier coché.

                                    Edit: parfait sa fonctionne je te remercie beaucoup de ton aide et de ta patience ;)
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      14 mars 2014 à 20:47:28

                                      si vous pouvez rendre jolie le code avec des commentaires sa serais parfait

                                      y a bien des débutants là hoow :p

                                      • Partager sur Facebook
                                      • Partager sur Twitter

                                      Récuperer les valeurs de checkbox

                                      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                      • Editeur
                                      • Markdown