Petits soucis avec la récuperation de pls valeurs checkbox
Résolu
fabi00
Messages postés
82
Date d'inscription
Statut
Membre
Dernière intervention
-
fabi00 Messages postés 82 Date d'inscription Statut Membre Dernière intervention -
fabi00 Messages postés 82 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
j'ai un petit souci avec la récupération des valeurs de mon checkbox. Il y a quelques propositions que j'ai trouvée sur d'anciennes questions et je m'en suis inspiré, mais plutôt que d'avoir les réponses je reçois un simple "Array".
Voila ce que j'ai fait...
Ceci pour collé chaque valeur du tableau avec des ";" entre chaque valeur.
Pour l'associer dans un tableau, j'ai fait ça.
Et voici mes checkbox.
Merci d'avance.
j'ai un petit souci avec la récupération des valeurs de mon checkbox. Il y a quelques propositions que j'ai trouvée sur d'anciennes questions et je m'en suis inspiré, mais plutôt que d'avoir les réponses je reçois un simple "Array".
Voila ce que j'ai fait...
Ceci pour collé chaque valeur du tableau avec des ";" entre chaque valeur.
$modele=implode(';', $_POST['modele']);
Pour l'associer dans un tableau, j'ai fait ça.
$fields = array(); $fields{"modele"} = "\nModèle";
Et voici mes checkbox.
<fieldset> <legend>Veuillez sélectionner vos modèles</legend> <div> <input type="checkbox" id="tshirt" name="modele[]" value="tshirt"> <label for="tshirt">T-shirt</label> </div> <div> <input type="checkbox" id="polo" name="modele[]" value="polo"> <label for="polo">Polo</label> </div> <div> <input type="checkbox" id="sweatshirt" name="modele[]" value="sweatshirt"> <label for="sweatshirt">Sweatshirt</label> </div> <div> <input type="checkbox" id="hoodie" name="modele[]" value="hoodie"> <label for="hoodie">Hoodie</label> </div> <div> <input type="checkbox" id="chemise" name="modele[]" value="chemise"> <label for="chemise">Chemise</label> </div> <div> <input type="checkbox" id="veste" name="modele[]" value="veste"> <label for="veste">Veste</label> </div> <div> <input type="checkbox" id="softshell" name="modele[]" value="softshell"> <label for="softshell">Softshell</label> </div> <div> <input type="checkbox" id="polaire" name="modele[]" value="polaire"> <label for="polaire">Polaire</label> </div> <div> <input type="checkbox" id="pantalon" name="modele[]" value="pantalon"> <label for="pantalon">Pantalon</label> </div> <div> <input type="checkbox" id="casquette" name="modele[]" value="casquette"> <label for="casquette">Casquette</label> </div> <div> <input type="checkbox" id="bonnet" name="modele[]" value="bonnet"> <label for="bonnet">Bonnet</label> </div> <div> <input type="checkbox" id="sac" name="modele[]" value="sac"> <label for="sac">Sac</label> </div> <div> <input type="checkbox" id="totebag" name="modele[]" value="totebag"> <label for="totebag">Totebag</label> </div> </fieldset>
Merci d'avance.
A voir également:
- Petits soucis avec la récuperation de pls valeurs checkbox
- Convertisseur récupération de texte - Guide
- Excel liste de valeurs - Guide
- Recuperation message whatsapp supprimé - Guide
- Adresse mail de recuperation c'est quoi - Guide
- Récupérer au terminal de fret combien de temps - Forum Consommation & Internet
5 réponses
Bonjour,
Question pas très claire...
Donc..
ceci:
OK !
Si tu fais un var_dump de cette variable, tu devrais voir une string qui contient chaque modèle selectionnés, séparés par un point virgule.
Par contre, tes deux autres lignes de codes... heu.. why ??
Que veux tu en faire ??
Qu'est-ce que cette variable $fields ?? A quoi doit elle te servir ?
Pourquoi veux tu transformer ton array de modeles en string ?
Si c'est pour stocker en bdd, il est préférable d'ajouter une table d'association plutôt que de tout vouloir stocker dans un champ de la table existante... ( ne serait-ce que pour faciliter les recherches)
Si c'est pour essayer de faire du JSON .. il n'y à pas besoin de faire du bricolage.. il existe des fonctions php pour transformer un array en json directement ..
Bref.. il faut détailler ton besoin de façon la plus claire possible
Question pas très claire...
Donc..
ceci:
$modele=implode(';', $_POST['modele']);
OK !
Si tu fais un var_dump de cette variable, tu devrais voir une string qui contient chaque modèle selectionnés, séparés par un point virgule.
Par contre, tes deux autres lignes de codes... heu.. why ??
Que veux tu en faire ??
Qu'est-ce que cette variable $fields ?? A quoi doit elle te servir ?
Pourquoi veux tu transformer ton array de modeles en string ?
Si c'est pour stocker en bdd, il est préférable d'ajouter une table d'association plutôt que de tout vouloir stocker dans un champ de la table existante... ( ne serait-ce que pour faciliter les recherches)
Si c'est pour essayer de faire du JSON .. il n'y à pas besoin de faire du bricolage.. il existe des fonctions php pour transformer un array en json directement ..
Bref.. il faut détailler ton besoin de façon la plus claire possible
Si, c'est vrai que j'ai envoyé seulement quelques parties.
Voici tout le code php
Voici tout le code php
<?php //Code php //On démarre une nouvelle session session_start(); //Si on appuie sur le bouton "Envoyer" if(isset($_POST['suivant'])){ //On récupère les données dans $_POST //foreach($_POST['modele'] as $modele); $modele=implode(';', $_POST['modele']); $marque=htmlspecialchars($_POST['marque'], ENT_QUOTES); $reference=htmlspecialchars($_POST['reference'], ENT_QUOTES); $couleur=$_POST['couleur']; $quantite=$_POST['quantite']; $qualite=$_POST['qualite']; $emplacement=$_POST['emplacement']; $impression=$_POST['impression']; $prenom=htmlspecialchars($_POST['prenom'], ENT_QUOTES); $nom=htmlspecialchars($_POST['nom'], ENT_QUOTES); $societe=htmlspecialchars($_POST['societe'], ENT_QUOTES); $tva=htmlspecialchars($_POST['tva'], ENT_QUOTES); $email=htmlspecialchars($_POST['email'], ENT_QUOTES); $telephone=htmlspecialchars($_POST['telephone'], ENT_QUOTES); $adresse=htmlspecialchars($_POST['adresse'], ENT_QUOTES); $precision=htmlspecialchars($_POST['precision'], ENT_QUOTES); //On définit des variables de session $_SESSION['modele'] = $modele; $_SESSION['marque'] = $marque; $_SESSION['reference'] = $reference; $_SESSION['couleur'] = $couleur; $_SESSION['quantite'] = $quantite; $_SESSION['qualite'] = $qualite; $_SESSION['emplacement'] = $emplacement; $_SESSION['impression'] = $impression; $_SESSION['prenom'] = $prenom; $_SESSION['nom'] = $nom; $_SESSION['societe'] = $societe; $_SESSION['tva'] = $tva; $_SESSION['email'] = $email; $_SESSION['telephone'] = $telephone; $_SESSION['adresse'] = $adresse; $_SESSION['precison'] = $precision; // associer un label à chaque donnée récupérée du formulaire dans un tableau $fields = array(); $fields{"modele"} = "\nModèle"; $fields{"marque"} = "\nMarque"; $fields{"reference"} = "\nRéférence"; $fields{"couleur"} = "\nCouleur"; $fields{"quantite"} = "\nQuantité"; $fields{"qualite"} = "\nQualité"; $fields{"emplacement"} = "\nEmplacement"; $fields{"impression"} = "\nTechnique d'impression"; $fields{"prenom"} = "\nPrenom"; $fields{"nom"} = "\nNom"; $fields{"societe"} = "\nNom de Société"; $fields{"tva"} = "\nTva"; $fields{"email"} = "\nEmail"; $fields{"telephone"} = "\nTéléphone"; $fields{"adresse"} = "\nAdresse"; $fields{"precision"} = "\nDescription du projet"; //Envoi du fichier /* variables à modifier */ $taillemax = 1000000; // taille max d'un fichier (multiple de 1024) $filetype = "/jpeg|pdf|png|gif/i"; // types de fichiers acceptés, séparés par | $nametype = "/\.jpeg|\.jpg|\.pdf|\png|\.gif/i"; // extensions correspondantes $rep = "uploads/"; // répertoire de destination $maxfichier = 10; // nombre maximal de fichiers /* fin des modifications */ // fichier courant (URI absolue) : formulaire récursif $PHP_SELF = basename($_SERVER['PHP_SELF']); if($_POST) { $msg = array(); // message $fichier = $_FILES['fichier']; // simplication du tableau $_FILES for($i=0; $i<count($fichier['name']); $i++) { // nom du fichier original = nom par défaut $nom = $fichier['name'][$i]; // test existence fichier if(!strlen($nom)) { $msg[] = "Aucun fichier !"; continue; } // si un nouveau nom est renseigné (avec extension correcte) if(preg_match($nametype, $_POST['lenom'][$i])) $nom = $_POST['lenom'][$i]; // répertoire de destination $destination = $rep.$nom; // test erreur (PHP 4.3) if($fichier['error'][$i]) { switch($fichier['error'][$i]) { // dépassement de upload_max_filesize dans php.ini case UPLOAD_ERR_INI_SIZE: $msg[] = "Fichier trop volumineux !"; break; // dépassement de MAX_FILE_SIZE dans le formulaire case UPLOAD_ERR_FORM_SIZE: $msg[] = "Fichier trop volumineux (supérieur à ".(INT)($taillemax/1024)." Mo)"; break; // autres erreurs default: $msg[] = "Impossible d'uploader le fichier !"; } } // test taille fichier elseif($fichier['size'][$i] > $taillemax) $msg[] = "Fichier $nom trop volumineux : ".$fichier['size'][$i]; // test type fichier elseif(!preg_match($filetype, $fichier['type'][$i])) $msg[] = "Fichier $nom de type incorrect : ".$fichier['type'][$i]; // test upload sur serveur (rep. temporaire) elseif(!@is_uploaded_file($fichier['tmp_name'][$i])) $msg[] = "Impossible d'uploader $nom"; // test transfert du serveur au répertoire elseif(!@move_uploaded_file($fichier['tmp_name'][$i], $destination)) $msg[] = "Problème de transfert avec $nom"; else $msg[] = "Fichier <b>$nom</b> téléchargé avec succès !"; } // affichage confirmation for($i=0; $i<=count($msg); $i++) echo "<p>$msg[$i]</p>"; } // To $to = 'monadress@monadress.com'; //From $from = $_SESSION['email']; // Subject $subject = 'Formulaire de devis - Test Mail'; $msg = $modele; // clé aléatoire de limite $boundary = md5(uniqid(microtime(), TRUE)); // Headers $headers = "Reply-to: \"test\" <monadress@monadresse.com>\n"; $headers .= "From: \"test\"<monadress@monadresse.com>\n"; //NOTE: l'adresse email indiquée dans le header From doit etre l'adresse absolue du serveur qui envoie les messages, //et peut etre differente de votre adresse de contact si vous etes par exemple sur un serveur dedié partagé. $headers .= 'Mime-Version: 1.0'. 'Date: '. date('r') . "\r\n"; $headers .= 'Content-Type: multipart/mixed;boundary='.$boundary."\r\n"; $headers .= "\r\n"; // Message $msg = 'This is a multipart/mixed message.'."\r\n\r\n"; // Texte $msg .= '--'.$boundary."\r\n"; $msg .= 'Content-type:text/plain;charset=utf-8'."\r\n"; $msg .= 'Content-transfer-encoding:8bit'."\r\n"; $msg .= 'Information de la commande:'."\r\n"; foreach($fields as $a => $b){ $msg .= sprintf("%20s: %s",$b,$_REQUEST[$a]) . "\r\n"; } //indice de boucle permettant d'ajouter tous les fichiers joints $i=0; //Boucle permettant l'ajout de toutes les pieces jointes while($i < sizeof($fichier)) { //=====Lecture et mise en forme de la pièce jointe $fichier1 = fopen($rep . $fichier['name'][$i], "rb" ); $attachement = fread($fichier1, filesize($rep . $fichier['name'][$i])); $attachement = chunk_split(base64_encode($attachement)); fclose($fichier1); $msg .= '--'.$boundary."\r\n"; $msg .= 'Content-type:'.$filetype.';name='.$fichier['name'][$i]."\r\n"; $msg .= 'Content-transfer-encoding:base64'."\r\n"; $msg .= $attachement."\r\n"; $i++; } // Fin $msg .= '--'.$boundary."\r\n"; function validateEmail($email) { if(preg_match("/^[_\.0-9a-zA-Z-]+@([0-9a-zA-Z][0-9a-zA-Z-]+\.)+[a-zA-Z]{2,6}$/i", $email)) return true; else return false; } //envoie du formulaire if(mail($to,$subject,$msg,$headers) && mail($from,$subject,$msg,$headers)){ //header('Location: #'); echo "<h6>Votre message a bien été envoyé !</h6>"; $_SESSION = array(); } else{ //non envoyer //header('Location: #'); echo "<h6>Votre message n'a pas pu être envoyé !<h6>"; $_SESSION = array(); } //supprimer les fichiers uploadés pour ne pas encombrer inutilement le serveur unlink ("uploads/".$_FILES['fichier']['name']); } ?>
Le problème ne vient pas du code que tu nous as montré .. mais du fait que tu n'utilises pas cette variable dans ta boucle !
Tu boucles directement sur les données envoyées par ton formulaire ( à travers la variable $_REQUEST ... ce qui n'est pas conseillé au passage )
A la limite ( je n'ai pas envie de passer 4h à te refaire un code propre... ) tu peux
Tu boucles directement sur les données envoyées par ton formulaire ( à travers la variable $_REQUEST ... ce qui n'est pas conseillé au passage )
foreach($fields as $a => $b){ $msg .= sprintf("%20s: %s",$b,$_REQUEST[$a]) . "\r\n"; }
A la limite ( je n'ai pas envie de passer 4h à te refaire un code propre... ) tu peux
foreach($fields as $a => $b){ // si la "clé" du field = modele alors .. if($a == 'modele'){ $msg .= $modele; // on affiche le contenu de ta variable $modele } else { // sinon on traite les autres données envoyées en $_POST via la variable $_REQUEST $msg .= sprintf("%20s: %s",$b,$_REQUEST[$a]) . "\r\n"; } }
Et est-ce que je dois placer ça avec les autres $fields ?
$fields = array(); $fields{"modele"} = "\nModèle"; foreach($fields as $a => $b){ // si la "clé" du field = modele alors .. if($a == 'modele'){ $msg .= $modele; // on affiche le contenu de ta variable $modele } else { // sinon on traite les autres données envoyées en $_POST via la variable $_REQUEST $msg .= sprintf("%20s: %s",$b,$_REQUEST[$a]) . "\r\n"; } } $fields{"marque"} = "\nMarque"; $fields{"reference"} = "\nRéférence"; $fields{"couleur"} = "\nCouleur"; $fields{"quantite"} = "\nQuantité"; $fields{"qualite"} = "\nQualité"; $fields{"emplacement"} = "\nEmplacement"; $fields{"impression"} = "\nTechnique d'impression"; $fields{"prenom"} = "\nPrenom"; $fields{"nom"} = "\nNom"; $fields{"societe"} = "\nNom de Société"; $fields{"tva"} = "\nTva"; $fields{"email"} = "\nEmail"; $fields{"telephone"} = "\nTéléphone"; $fields{"adresse"} = "\nAdresse"; $fields{"precision"} = "\nDescription du projet";
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question