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

PHP & Base de données Discussion :

Comment insérer plusieurs valeurs d'un select multiple ?


Sujet :

PHP & Base de données

  1. #1
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 388
    Par défaut Comment insérer plusieurs valeurs d'un select multiple ?
    Bonsoir,

    Le problème est que je ne récupère qu'une seule valeur dans ma BDD.
    Voici le code :
    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
     
    <form action="" method="post" >
          <select name="thematique[]" id="thematique" multiple >
                 <option value="1">Anniversaire</option>
                 <option value="2">Fête des mères</option>
                 <option value="3">Fête des pères</option>
                 <option value="4">Saint valentin</option>
                 <option value="5">Toute occasion</option>
         </select>
    </form>
    <?php
    $thematique=$_POST['thematique']) ;
     
     for ($i=0; $i<count($thematique); $i++) {
    	echo $thematique[$i]."<br />";
    }
    $bdd->exec("UPDATE categorisation SET id_thematique=$thematique");
     
    ?>
    J'ai une erreur de type :
    Notice : Array to string conversion in .............
    Arrray[0] => 42S22 => 1054[2] => Unknown column 'Array' in field list.

    Je ne sais pas comment convertir le string en array. J'ai essayé ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $thematique = $bdd -> real_escape_string ($thematique); 
    et 
    $thematique = $bdd -> quote ($thematique);
    ça ne m'a donné que des erreurs.


    Merci.

  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
    La requête va dans la bouche, on utilisera avantageusement une requête préparée et une boucle foreach.

    Par contre il manque un WHERE dans ta requête pour indiquer quel ligne tu mets à jour (a priori l'id de la categorie)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
    $bdd->prepare("UPDATE categorisation SET id_thematique=:id_thematique WHERE id_categorisation = :id_categorisation");
    foreach ($_POST['thematique'] as $id_thematique) {
        $bdd->execute(array(':id_thematique'=>$id_thematique, ':id_categorisation'=>$id_categorisation));
    }
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 388
    Par défaut
    Merci beaucoup.
    J'ai essayé votre code et j'obtiens une erreur sur la ligne execute() :
    Fatal error: Call to undefined method PDO::execute() in ......
    Normalement je peux utiliser les fonctions PDO, je ne comprends pas.

    Par contre il manque un WHERE dans ta requête pour indiquer quel ligne tu mets à jour (a priori l'id de la categorie)
    Effectivement, je n'avais pas écrit toute la requête ici.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par sabotage Voir le message
    La requête va dans la bouche, ...
    Je me demande si je ne devrais pas censurer...





    "La concierge est dans l'escalier;
    le concierge hait dans la censure..."

  5. #5
    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
    Tant que c'est pas dans le c...

    Pour l'erreur, tu as adapté le WHERE comme je t'ai indiqué ?
    Active également les exceptions PDO quand tu debugues.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 388
    Par défaut
    J'ai bien adapté le WHERE. J'ai toujours cette erreur :
    Fatal error: Call to undefined method PDO::execute() in C:\Program Files (x86)\Zend\Apache2\htdocs\RLF V25csv2\categorisation.php on line 155
    Par exceptions vous voulez dire les codes d'erreur ?

    L'erreur est à la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $bdd->execute(array(':id_thematique'=>$id_thematique, ':id_struct'=>$id_struct))or print_r ($bdd->errorInfo());

  7. #7
    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
    Ta récolte d'erreurs n'est pas bonne :
    http://php.net/manual/fr/pdostatement.errorinfo.php
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

Discussions similaires

  1. [FAQ] Les formulaires (partie 1) Comment récupérer les valeurs d'un select multiple ?
    Par Auteur dans le forum Contributions JavaScript / AJAX
    Réponses: 9
    Dernier message: 17/11/2013, 11h26
  2. [SQL] Comment prédéfinir la valeur d'un select multiple
    Par sagitarium dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 05/02/2008, 14h52
  3. [javascript] comment transmettre plusieurs valeurs à partir d'un select
    Par mussara dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 28/02/2007, 13h37
  4. Récupérer les valeurs d'un <select> multiple
    Par vg33 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 25/10/2005, 11h38
  5. selectionner automatiquement plusieurs valeurs ds un select
    Par shadowR dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 02/09/2005, 16h00

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