Petits soucis avec la récuperation de pls valeurs checkbox

Résolu/Fermé
fabi00 Messages postés 82 Date d'inscription vendredi 4 février 2022 Statut Membre Dernière intervention 18 mars 2022 - 17 mars 2022 à 12:31
fabi00 Messages postés 82 Date d'inscription vendredi 4 février 2022 Statut Membre Dernière intervention 18 mars 2022 - 18 mars 2022 à 15:03
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

jordane45 Messages postés 38346 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 décembre 2024 4 717
18 mars 2022 à 13:58
Mais non... Il faut le mettre a la place de la boucle que tu as déjà..
1
fabi00 Messages postés 82 Date d'inscription vendredi 4 février 2022 Statut Membre Dernière intervention 18 mars 2022
18 mars 2022 à 11:08
Help please :')
0
yg_be Messages postés 23399 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 17 décembre 2024 1 556
18 mars 2022 à 11:13
bonjour,
ne manque-t-il pas une partie de ton code php?
0
jordane45 Messages postés 38346 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 décembre 2024 4 717
18 mars 2022 à 11:18
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
fabi00 Messages postés 82 Date d'inscription vendredi 4 février 2022 Statut Membre Dernière intervention 18 mars 2022
18 mars 2022 à 11:25
En fait les $fields c'est pour envoyer dans le mail toutes les infos du formulaire que l'utilisateur à sélectionner.
0
fabi00 Messages postés 82 Date d'inscription vendredi 4 février 2022 Statut Membre Dernière intervention 18 mars 2022
18 mars 2022 à 11:19
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
jordane45 Messages postés 38346 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 décembre 2024 4 717
18 mars 2022 à 11:26
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
fabi00 Messages postés 82 Date d'inscription vendredi 4 février 2022 Statut Membre Dernière intervention 18 mars 2022 > jordane45 Messages postés 38346 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 décembre 2024
18 mars 2022 à 11:42
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
fabi00 Messages postés 82 Date d'inscription vendredi 4 février 2022 Statut Membre Dernière intervention 18 mars 2022 > fabi00 Messages postés 82 Date d'inscription vendredi 4 février 2022 Statut Membre Dernière intervention 18 mars 2022
18 mars 2022 à 13:33
Parce que quand je fais ça, j'ai toujours comme message "Array"...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
fabi00 Messages postés 82 Date d'inscription vendredi 4 février 2022 Statut Membre Dernière intervention 18 mars 2022
18 mars 2022 à 15:03
Ahh oui juste, merci beaucoup !
0