Comment insérer plusieurs valeurs d'un select multiple ?
geekat
Messages postés
242
Statut
Membre
-
geekat Messages postés 242 Statut Membre -
geekat Messages postés 242 Statut Membre -
Bonjour,
J'ai un formulaire qui contient une liste de sélection multiple. Je suis arrivée à récupérer les valeurs sélectionnées à l'aide d'une boucle, maintenant pour l'insertion je n'arrive à insérer qu'une seule valeur sélectionnée c'est la première de la liste.
J'aimerais récupérer toutes les valeurs, je ne sais pas comment! J'ai essayé quelques fonctions comme ceci :
Erreur pour la première, et rien de changé pour la 2ème. Donc je ne sais pas quoi utiliser pour insérer un tableau de valeurs et non une valeur ?
Merci.
J'ai un formulaire qui contient une liste de sélection multiple. Je suis arrivée à récupérer les valeurs sélectionnées à l'aide d'une boucle, maintenant pour l'insertion je n'arrive à insérer qu'une seule valeur sélectionnée c'est la première de la liste.
J'aimerais récupérer toutes les valeurs, je ne sais pas comment! J'ai essayé quelques fonctions comme ceci :
$thematique = $bdd -> real_escape_string ($thematique);
et
$thematique = $bdd -> quote ($thematique);
Erreur pour la première, et rien de changé pour la 2ème. Donc je ne sais pas quoi utiliser pour insérer un tableau de valeurs et non une valeur ?
Merci.
A voir également:
- Sql plusieurs valeurs dans un champ
- Logiciel sql - Télécharger - Bases de données
- Excel liste de valeurs - Guide
- Requête sql pix - Forum Python
- Faites afficher avec un fond coloré les cellules qui contiennent une valeur comprise entre 250 et 350. quel nombre est dessiné en surbrillance ? ✓ - Forum Excel
- Excel fonction cherche plusieurs valeurs ✓ - Forum Excel
2 réponses
Salut,
Une solution possible serait de sérialiser ton tableau pour le convertir en chaine de caractère.
A la récupération des données, tu pourras bien sûr dé-sérialiser cette chaine pour récupérer ton tableau.
http://php.net/manual/fr/function.serialize.php
https://www.php.net/manual/fr/function.unserialize.php
Bonne journée
Une solution possible serait de sérialiser ton tableau pour le convertir en chaine de caractère.
A la récupération des données, tu pourras bien sûr dé-sérialiser cette chaine pour récupérer ton tableau.
http://php.net/manual/fr/function.serialize.php
https://www.php.net/manual/fr/function.unserialize.php
Bonne journée
geekat
Messages postés
242
Statut
Membre
Merci Pitet. En fait j'ai des clés primaires, je ne sais pas si je peux les rassembler comme un tableau dans un seul champ
Pitet
Messages postés
2845
Statut
Membre
527
Je ne comprend pas ton problème, peux tu nous donner un peu plus de précision ? Un exemple de code ? Le résultat obtenu et le résultat attendu ?
Bonjour,
Voilà un exemple de code :
J'ai une table 'categorisation' qui contient :
- une clé primaire (id_categorisation),
- une clé étrangère (id_nationalite) qui est clé primaire d'une autre table 'nationalite'.
J'ai une table 'nationalite' qui contient :
- une clé primaire (id_nationalite),
- un champ simple (nationalite)
But :
Le but est d'insérer les nationalités ou plutôt les id_nationalite dans la table categorisation. Je peux avoir 1 ou plusieurs nationalités sélectionnées, j'aurais donc plusieurs entiers successif.
Désolée c'est un peu long. L'insertion dans ce cas doit avoir comme valeurs :
id _nationalite : 1 2 3 5 9....
Voilà un exemple de code :
Table categorisation :
id_categorisation INT PK
id_nationalite INT FK
Table nationalite:
id_nationalite INT PK
nationalite VARCHAR(50)
J'ai une table 'categorisation' qui contient :
- une clé primaire (id_categorisation),
- une clé étrangère (id_nationalite) qui est clé primaire d'une autre table 'nationalite'.
J'ai une table 'nationalite' qui contient :
- une clé primaire (id_nationalite),
- un champ simple (nationalite)
But :
Le but est d'insérer les nationalités ou plutôt les id_nationalite dans la table categorisation. Je peux avoir 1 ou plusieurs nationalités sélectionnées, j'aurais donc plusieurs entiers successif.
<form action="" method="post" ">
<select name="nationalite[] multiple">
<OPTION VALUE="">Nationalité</OPTION>
<?php
while ($donnees1 = $reponse1->fetch(PDO::FETCH_ASSOC))
{if ($donnees1["id_nationalite"]==$nationalite)
echo '<OPTION VALUE="'.$donnees1["id_nationalite"].'" selected="selected">'.$donnees1["nationalite"].'</OPTION>';
else
echo '<OPTION VALUE="'.$donnees1["id_nationalite"].'">'.$donnees1["nationalite"].'</OPTION>';
}'; ?>
</select>
<?php
$id_nationalite=($_POST['id_nationalite']));
$bdd->exec("INSERT INTO categorisation VALUES (null,$id_nationalite");
?>
Désolée c'est un peu long. L'insertion dans ce cas doit avoir comme valeurs :
id _nationalite : 1 2 3 5 9....
Ton champ id_nationalite dans la table categorisation est de type INT FK, tu ne pourras donc enregistrer qu'un seul identifiant de nationalité par ligne de la table categorisation.
Soit tu conserves ton champ id_nationalite en type INT FK : dans ce cas tu dois faire une boucle pour parcourir tous les identifiants sélectionnés et effectuer une requête INSERT pour chaque identifiant (un identifiant par ligne de la table categorisation).
Soit tu transforme ton champ id_nationalite en type VARCHAR : dans ce cas tu peux convertir ton tableau des identifiants sélectionnés en chaine de caractère via serialize() et l'enregistrer tel quel.
Soit tu conserves ton champ id_nationalite en type INT FK : dans ce cas tu dois faire une boucle pour parcourir tous les identifiants sélectionnés et effectuer une requête INSERT pour chaque identifiant (un identifiant par ligne de la table categorisation).
Soit tu transforme ton champ id_nationalite en type VARCHAR : dans ce cas tu peux convertir ton tableau des identifiants sélectionnés en chaine de caractère via serialize() et l'enregistrer tel quel.