Duplication de données php/mysq

niahoo Messages postés 247 Date d'inscription   Statut Membre Dernière intervention   -  
niahoo Messages postés 247 Date d'inscription   Statut Membre Dernière intervention   -
hello tout le monde,

j'ai une question assez simple:

mon application gère des listes d'items, les items sont communs à tout le monde et les listes répertoriant une partie de ces items appartiennent à des utilisateurs.

voici les tables

items (id, nom, commentaire, ..)
listes (list_id, item_id) // ou id et item_id sont des clés étrangères, chaque ligne associant un item à la liste correpondante
user (id, pseudo, mail, password, ...)
user_lists (list_id, user_id, nom_liste) // c'est ici que chaque liste n'apparaît qu'une fois, avec en clé étrangère l'user à qui elle appartient


Ma question :

Je voudrais qu'un utilisateur qui est satifsfait d'une liste puisse la partager. je ne parle pas de laisser un autre utilisateur consulter sa liste, mais bien de la dupliquer afin que les deux utilisateurs puissent ensuite la modifier à leur gré differrement.

algo de base en php:

l'user sélectionne une de ses listes et un autre user pour la lui donner.
récupération des deux id concernés.

je fais une requete pour récupérer les id des items de la liste, dans une variable $items
je crée une nouvelle liste pour l'utilisateur à qui on donne la liste.
Ensuite je crée une requete d'insertion à laquelle je rajoute un par un les items de $item, pour enfin envoyer tout ça à mysql.

et ça marche, mais je ne trouve pas ça super puissant...

J'aimerais donc savoir s'il n'y a pas moyen de procéder à ceci en créant une fonction dans mysql, ou un système de duplication déjà intégrer à mysql pour libérer mon ode php de cette tâche.

merci
A voir également:

3 réponses

giheller Messages postés 1882 Date d'inscription   Statut Membre Dernière intervention   142
 
bonjour,

une requ^te pour créer la duplication pourrait être :

insert into 2emetable (select * from 1eretable)
0
fiu
 
Salut

ta question rejoint le un topic en cours "insérer plusieurs lignes en une instruction"
dans ton cas, les instructions seraient
1. création de la nouvelle liste vide associée au bénéficiaire
1.1 $list_id_à_créer = select max(list_id) + 1 from user_lists
1.2 $user_id_bénéficiaire = select id from user where pseudo = pseudo du formulaire
1.3 $nom_liste = nom_liste du formulaire
1.4 création de la ligne: "insert into user_lists values($list_id_à_créer, '$user_id_bénéficiaire', '$nom_liste')"

2. maintenant que la liste est créée, il n'y a qu'à la remplir
insert into lists
select $list_id_à_créer
,      item_id    
from lists l
,    user_lists u
where l.list_id = u.list_id
and   nom_liste = $nom_liste

car avec $nom_liste, on obtient le list_id de la liste à donner ;
en parcourant lists où lits_id = list_id à donner on a tous les items à donner ;
en associant à chacun de ces items l'item de la nouvelle liste on a de quoi remplir la liste nouvellement créée.

tu nous tient au courant de comment ça marche ?
0
niahoo Messages postés 247 Date d'inscription   Statut Membre Dernière intervention   19
 
re

merci pour vos réponses,

mais justement, là tu me proposes plus ou moins l'algo que j'ai fait pour extraire de mysql mes données à dupliquer, puis de préparer une requete d'insertion et de la renvoyer.

mais ce que je cherche c'est que ce soit mysql qui fasse le boulot tout seul.. et c'est chaud
0