Case à cocher à choix multiple php/mysql

Fermé
Angel - Modifié par Angel le 31/05/2011 à 00:38
 Angel - 31 mai 2011 à 14:49
Bonsoir, j'ai une petite question concernant les cases à cocher.
En faite j'ai une page phph contenant des cases à cocher
le champ contient 3 cases à coché , quand par exemple je les coches les 3 dans ma base de données je n'ai qu'une seule d'enregistrer.
Si quelqu'un peut m'indiquer m'aider sur ce que je dois faire dans ma page cible svp MERCI

<tr>
<td>Pièce jointe (rar/zip)<span class="rouge">*</span> :</td>
<td>CV:<input name="pj[]" type="checkbox" value="CV" /> <br />
Attestation:<input name="pj[]" type="checkbox" value="attestation" />
Diplôme:<input name="pj[]" type="checkbox" value="diplome" />
</td>
</tr>
A voir également:

7 réponses

mpmp93 Messages postés 6648 Date d'inscription mercredi 13 avril 2011 Statut Membre Dernière intervention 28 septembre 2015 1 339
31 mai 2011 à 14:08
Bonjour,

Queqlues réflexes simples. Pour commencer dans le script chargé de traiter les données POSTées:

print_r($_POST);

vous verrez que $_POST['pj'] est un array

$pj = $_POST['pj'];
print_r($pj); // affiche array et les valeurs cochées

Pour stocker le contenu de ce array de $pj, il y a une soluce simple: serialize


Au moment d'enregistrer les données,
pj = serialize($pj); // prévoir un champ assez grand

Pour récupérer les données, faire l'inverse: unserialize

$pj = unserialize($monChamp); // $monchamp pointe sur le contenu du champ sérialisé

A+
1
Peut être devrait tu essayer avec des "name" différents ? (je suis presque sûr que c'est le problème)
0
Bonjour mahmoud, non ca ne marche pas car le champ de ma table se nomme pj et quand je je met pj y a qu'une seule case a coche qui passe, je lu quelques sujet qu'il faut faire un tableau c'est pour ca j'ai mi pj[] mais j'ai pas su comment le parcourir avec array dans ma page cible.
quelqu'un peut m'aider svp et merci
0
Colbi97 Messages postés 564 Date d'inscription mardi 3 mars 2009 Statut Membre Dernière intervention 25 novembre 2015 12
31 mai 2011 à 12:20
Bonjour,
Il va falloir expliquer un peu plus le fonctionnement de ton site si tu veux une aide complète.
En tout cas, c'est effectivement un problème de "name" qui doit être différend pour chaque checkbox sinon le navigateur ne retourne qu'un seul enregistrement, et il n'est pas possible de faire un array en (x)html, par contre tu peux donner des name uniques et ensuite dans le code de ta page cible les regrouper dans un array.
0

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

Posez votre question
Bonjour Colbi97, en faite j'ai un formulaire avec des cases à cocher , l'utilisateur a la possibilité de cocher plusieurs case, et j'ai une page cible qui contient le traitement php.
J'ai essayer de mettre le tout avec un meme name pj mais dans ce cas là quand l'utilisateur coche par exemple 3 options dans la base de données je n'ai que la dernière case enregistré et pas le reste.
J'ai lu qu'avec un array on peut le faire mais je n'ai pas su comment ?
si vous pouvez m'aider svp
voilà une partie du traitement de ma page cible si vous pouvez m'aider à traiter la variable de case à cocher pj et merci:
<?php
include('connex.inc.php');
if( !empty($_POST['nom'])&& !empty($_POST['prenom'])&& !empty($_POST['cin'])&& !empty($_POST['etablissement'])&& !empty($_POST['email'])  && !empty($_POST['telephone'])&& !empty($_POST['adresse'])&& !empty($_POST['type']) && !empty($_POST['referenceoffre']) && !empty($_POST['delai']) && isset($_FILES['avatar']) && isset($_FILES['CV']) )
{
//récupération des données saisies dont des variables
 
  $nom=mysql_escape_string($_POST['nom']);
  $prenom=mysql_escape_string($_POST['prenom']);
  $cin=mysql_escape_string($_POST['cin']); 
  $etablissement=mysql_escape_string($_POST['etablissement']); 
  $email=mysql_escape_string($_POST['email']);
  $telephone=mysql_escape_string($_POST['telephone']);
  $adresse=mysql_escape_string($_POST['adresse']);
  $type=mysql_escape_string($_POST['type']);
  $referenceoffre=mysql_escape_string($_POST['referenceoffre']);
  $descriptionsujet=mysql_escape_string($_POST['descriptionsujet']);
  $delai=mysql_escape_string($_POST['delai']);
  $avatar=$dossier.$fichier;
  $CV=$dossier1.$fichier1;

 
  //Requête SQL
  $requete="INSERT INTO formulaire (nom, prenom, cin,etablissement, email,telephone, adresse,type,referenceoffre, descriptionsujet,delai,avatar,CV) 
  VALUES ('$nom' ,'$prenom','$cin','$etablissement', '$email','$telephone','$adresse','$type','$referenceoffre','$descriptionsujet', '$delai', '$avatar', '$CV')";

0
Colbi97 Messages postés 564 Date d'inscription mardi 3 mars 2009 Statut Membre Dernière intervention 25 novembre 2015 12
31 mai 2011 à 14:15
Comme expliqué dans mon message précédent, les "checkbox" ne peuvent pas avoir le même nom et il n'est pas possible de passer directement par un array (le html ne le permet pas...), il va donc falloir passer par des noms différends et les récupérer ensuite.
Par contre, dans le code que tu as posté, je ne vois pas la référence à tes checkbox, quel traitement veux tu faire ? Sous quelle forme rentre tu leurs valeurs dans ta base ?
0
wolves'sbrother Messages postés 218 Date d'inscription samedi 7 février 2009 Statut Membre Dernière intervention 13 juillet 2011 34
Modifié par wolves'sbrother le 31/05/2011 à 14:02
salut,
SI tu veux récupérer les cases cochés avec un tableau, prenons ton exemple :
<td>Pièce jointe (rar/zip)<span class="rouge">*</span> :</td>  
<td>CV:<input name="pj[]" type="checkbox" value="CV" /> <br />  
Attestation:<input name="pj[]" type="checkbox" value="attestation" />  
Diplôme:<input name="pj[]" type="checkbox" value="diplome" /> 


Dans la page qui reçoit les infos, tu met :
$tab =$_POST['pj'];  
   
print_r($tab); // Pour voir toutes les valeurs du tableau  

et ça devrait marché
0
Bonjour wolves tout d'abord merci pour votre,avec votre méthode j'ai pu récupéré les valeurs grace à print_r($tab) mais dans la base de données le champ reste vide
voilà ce que j'ai fais (c'est une partie de mon code et les ... sont des codes
encore Merci
$tab =$_POST['pj'];   
if( !empty($_POST['nom'])&& !empty($_POST['prenom'])&& !empty($_POST['cin'])&& !empty($_POST['etablissement'])&& !empty($_POST['email'])  && !empty($_POST['telephone'])&& !empty($_POST['adresse'])&& !empty($_POST['type']) && !empty($_POST['referenceoffre']) && !empty($_POST['delai']) && !empty($_POST['pj']) && isset($_FILES['avatar']) && isset($_FILES['CV']) ) 
{ 
//récupération des données saisies dont des variables 
  
  $nom=mysql_escape_string($_POST['nom']); 
  $prenom=mysql_escape_string($_POST['prenom']); 
  $cin=mysql_escape_string($_POST['cin']);  
  $etablissement=mysql_escape_string($_POST['etablissement']);  
  $email=mysql_escape_string($_POST['email']); 
  $telephone=mysql_escape_string($_POST['telephone']); 
  $adresse=mysql_escape_string($_POST['adresse']); 
  $type=mysql_escape_string($_POST['type']); 
  $referenceoffre=mysql_escape_string($_POST['referenceoffre']); 
  $descriptionsujet=mysql_escape_string($_POST['descriptionsujet']); 
  $delai=mysql_escape_string($_POST['delai']); 
  $avatar=$dossier.$fichier; 
  $pj=mysql_escape_string($_POST['pj']); 
  $CV=$dossier1.$fichier1; 
 $requete="INSERT INTO formulaire (nom, prenom, cin,etablissement, email,telephone, adresse,type,referenceoffre, descriptionsujet,delai,avatar,pj,CV)  
  VALUES ('$nom' ,'$prenom','$cin','$etablissement', '$email','$telephone','$adresse','$type','$referenceoffre','$descriptionsujet', '$delai', '$avatar','$pj', '$CV')"; 

. 
. 
. 
echo "<br><br>"; 
 echo "Référence de la demande :" .$referenceformulaire. "<br><br>"; 
 echo "Nom :" .$nom. "<br><br>"; 
 echo "Prénom :" .$prenom. "<br><br>" ; 
 echo "CIN (Mot de passe) :" .$cin ."<br><br>"; 
 echo "Etablissement :" .$etablissement ."<br><br>"; 
 echo "E-mail (Identifiant) :" .$email. "<br><br>" ; 
 echo "Téléphone :" .$telephone. "<br><br>" ; 
 echo "Adresse :" .$adresse. "<br><br>" ; 
 echo "Type :" .$type. "<br><br>" ; 
 echo "Référence offre :" .$referenceoffre. "<br><br>" ; 
 echo "Délai de la réponse :" .$delai. "<br><br>" ; 
 print_r($tab); 

0