Récupération des valeurs liste multiple

Résolu/Fermé
roussos Messages postés 221 Date d'inscription mercredi 16 février 2005 Statut Membre Dernière intervention 17 décembre 2014 - 27 mai 2011 à 14:32
roussos Messages postés 221 Date d'inscription mercredi 16 février 2005 Statut Membre Dernière intervention 17 décembre 2014 - 27 mai 2011 à 19:10
Bonjour,
je voudrais récupérer les valeurs d'une liste multiple après insertion dans les tables.
en fait voila l'explication :

j'ai deux tables

1- user (id, nom)

2- works (id, nom, iduser)

et j'ai un formulaire d'insertion pour la table "works" avec une liste multiple pour les personnes de la table "user".

code du formulaire
<select name="listeusers[]" type="text" size="" multiple id="listeusers">
      <?php
mysql_connect("localhost","admin","mdp");
mysql_select_db("mybd");
$res = mysql_query("SELECT * FROM user ORDER BY nom");
while($row = mysql_fetch_assoc($res)){
echo "<option value='".$row['iduser']."'>".$row['nom']."</option>";
}
?>    
</select>



et lors de l'insert dans la table "works" je fais :
INSERT INTO works (id, nom,iduser) VALUES('', '$nom', ' ". join(",",$_POST['listeusers']) . "');



et pas de problème au niveau de l'insertion.
les valeurs du champ iduser dans la table work s'affiche de la maniere suivante : 5, 8, 10, 11.

Mon problème est de récupérer ces valeurs séparément ou bien de les récupérer pour les associer à leur nom dans la table user et d'en faire des liens cliquables.

Merci d'avance.


1 réponse

Utilisateur anonyme
27 mai 2011 à 15:14
Bonjour,

Déjà l'usage en SQL serait pour la table works de faire ceci :

une table user (id, nom)
une table work (id, nom)
une table user_work (id_user, id_work)
ceci pour éviter la redondance d'informations

donc dans user_work on aurait
n,5
n,8
n,10
n,11 où n est le numéro du work

Pour l'insertion, boucle sur le tableau $_POST['listeusers']

Pour récupérer les informations, requête avec jointure genre :

select
user.nom, work.nom
from user_work, user, work
where user_work.id_user = user.id and user_work.id_work=work.id
0
roussos Messages postés 221 Date d'inscription mercredi 16 février 2005 Statut Membre Dernière intervention 17 décembre 2014 8
27 mai 2011 à 15:23
Merci pour le retour,
en effet je veux pas utiliser une autre table pour éviter les insertions multiples ou bien ecrire des déclencheurs.
0
Utilisateur anonyme
27 mai 2011 à 15:26
Ce que vous allez gagnez à l'insertion, vous allez sans doute le perdre lors de l'exploitation de vos données ensuite, je ne suis pas certain que cela soit un bon calcul.
Vous allez probablement plus souvent consulter que insérer des données non ?
0
roussos Messages postés 221 Date d'inscription mercredi 16 février 2005 Statut Membre Dernière intervention 17 décembre 2014 8
27 mai 2011 à 15:39
Je veux éviter les insertions parce que les triggers sont désactivés chez les hébergeurs et les tables indiquées sont constamment disponibles en écriture et modification.
0
Utilisateur anonyme
27 mai 2011 à 15:52
de quels triggers parlez-vous ? je ne saisis pas trop le problème, pb de performances ?
0
roussos Messages postés 221 Date d'inscription mercredi 16 février 2005 Statut Membre Dernière intervention 17 décembre 2014 8
27 mai 2011 à 16:18
Non je ne parle pas de performances, mais plutôt d'éviter des multiples requêtes. je voudrais savoir si cela est possible de récupérer les valeurs qui sont dans le champ iduser individuellement et faire une boucle et afficher le nom correspondant à l'identifiant dans la table user sans pour autant créer une table (du milieu).
0