Petits soucis avec la récuperation de pls valeurs checkbox

Résolu
fabi00 Messages postés 82 Statut Membre -  
fabi00 Messages postés 82 Statut Membre -
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.
$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.

5 réponses

  1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
     
    Mais non... Il faut le mettre a la place de la boucle que tu as déjà..
    1
  2. fabi00 Messages postés 82 Statut Membre
     
    Help please :')
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      bonjour,
      ne manque-t-il pas une partie de ton code php?
      0
  3. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
     
    Bonjour,

    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

    0
    1. fabi00 Messages postés 82 Statut Membre
       
      En fait les $fields c'est pour envoyer dans le mail toutes les infos du formulaire que l'utilisateur à sélectionner.
      0
  4. fabi00 Messages postés 82 Statut Membre
     
    Si, c'est vrai que j'ai envoyé seulement quelques parties.

    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']);
       }
    ?>
    0
    1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
       
      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 )
      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"; 
        } 
      }
      
      
      
      1
      1. fabi00 Messages postés 82 Statut Membre > jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention  
         
        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";
        0
      2. fabi00 Messages postés 82 Statut Membre > fabi00 Messages postés 82 Statut Membre
         
        Parce que quand je fais ça, j'ai toujours comme message "Array"...
        0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. fabi00 Messages postés 82 Statut Membre
     
    Ahh oui juste, merci beaucoup !
    0