IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Case à cocher à choix multiple php/mysql


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Inscrit en
    Février 2009
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 75
    Par défaut Case à cocher à choix multiple php/mysql
    Bonjour tout le monde,
    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.
    Mon problème se pose au niveau de 'lajout des champs dans la base de données.
    J'ai pu réccupérer la liste des champs et les affichés mais pas les ajoutés dans ma base de données
    erreur:
    Warning: mysql_escape_string() expects parameter 1 to be string, array given in C:\wamp\www\Site\site\cibleAjoutFormStage.php on line 141

    la ligne 141
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $pj=mysql_escape_string($tab);
    si vous pouvez m'aider svp
    formulaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <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>

    voilà une partie du traitement de ma page cible si vous pouvez m'aider à traiter la variable de case à cocher pj et merci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    $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($tab) && 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($tab);
      $CV=$dossier1.$fichier1;
     
     
      //Requête SQL
      $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 "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);

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    D'ou vient ce $tab.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre confirmé
    Inscrit en
    Février 2009
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 75
    Par défaut
    Pardon j'ai oublier cette ligne, je viens d'édité mon ancien post
    Merci pour votre aide Mr

  4. #4
    Membre expérimenté
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2009
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2009
    Messages : 126
    Par défaut
    Citation Envoyé par tatutatu2009 Voir le message
    Bonjour tout le monde,
    Warning: mysql_escape_string() expects parameter 1 to be string, array given in C:\wamp\www\Site\site\cibleAjoutFormStage.php on line 141
    Tu passes un tableau en paramètre, passe une chaine de caractère ca devrait fonctionner

  5. #5
    Membre confirmé
    Inscrit en
    Février 2009
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 75
    Par défaut
    je ne vous est pas compris svp sivous pouvez m'expliquer un peu plus merci

  6. #6
    Membre expérimenté
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2009
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2009
    Messages : 126
    Par défaut
    Utilises de préférence mysql_real_escape_string (mysql_escape_string obsolète depuis PHP 5.3.0.)

    dans la doc php :
    string mysql_real_escape_string ( string $unescaped_string )
    l'argument demandé est une string
    ton $tab =$_POST['pj']; est un array fais un var_dump($_POST) pour t'en apercevoir.
    En revanche $_POST['pj'][0] constitue une chaine de caractère.

    Une solution serait de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    array_walk($tab, create_function('&$val', '$val = mysql_real_escape_string($val);'));
    qui va appliquer mysql_real_escape_string sur chaque élément du tableau
    voici la doc array_walk

  7. #7
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    Citation Envoyé par matlow Voir le message
    Une solution serait de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    array_walk($tab, create_function('&$val', '$val = mysql_real_escape_string($val);'));
    qui va appliquer mysql_real_escape_string sur chaque élément du tableau
    voici la doc array_walk
    bien joué t'as recrée array_map ...

  8. #8
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 420
    Par défaut
    Oui donc si tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $pj = array_map("mysql_real_escape_string",$tab);
    tu aura traité correctement les éléments de ton tableau avec la fonction "mysql_real_escape_string" mais il n'en reste pas moins que tu as toujours un tableau que tu ne pourras pas insérer directement dans un champ de ta bdd.

    Si tu veux insérer dans ton champ "pj" les éléments cochés séparés par une virgule, tu peux utiliser implode.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $pj = implode ( ', ' , $tab);// le résultat est maintenant une chaine de caractères
    $pj = mysql_real_escape_string($pj);//on peut donc appliquer mysql_real_escape_string sur cette chaine de caractère
    Alternativement si tu veux garder la structure de ton tableau pour pouvoir le reconstruire plus tard tu peux utiliser serialize

  9. #9
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    si il veux insérer un tableau il faut faire un autre table SQL qui va avec, sinon ça va être galère après au niveau des requêtes (par exemple afficher tout ce qu'on l'option CV)

  10. #10
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 420
    Par défaut
    Oui s'il veut pouvoir faire du tri sur ces critères, il y a tout intérêt à faire une table liée 'pieces_jointes'

  11. #11
    Membre confirmé
    Inscrit en
    Février 2009
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 75
    Par défaut
    Tout d'abord merci à vous tous pour votre aide,
    ABCIWEB merci j'ai testé et ça marche parfaitement
    Vous êtes tous génial

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Update multiple PHP/MySQL
    Par lebanner82 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 20/01/2012, 22h06
  2. [XL-2010] Faire une case a choix multiple
    Par Yvan77 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 16/09/2011, 14h01
  3. Identifiant d'une case à cocher avec variable PHP
    Par Nicolas74100 dans le forum Langage
    Réponses: 3
    Dernier message: 11/06/2010, 21h15
  4. Cases à cocher à sélection multiple?
    Par athos7776 dans le forum IHM
    Réponses: 4
    Dernier message: 15/06/2007, 22h46
  5. [forms 9i] case à cocher : suppression multiple
    Par ramaro dans le forum Forms
    Réponses: 3
    Dernier message: 05/04/2006, 10h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo