Duplication de données php/mysq

Fermé
niahoo Messages postés 247 Date d'inscription lundi 24 décembre 2007 Statut Membre Dernière intervention 23 mai 2010 - 8 janv. 2010 à 14:15
niahoo Messages postés 247 Date d'inscription lundi 24 décembre 2007 Statut Membre Dernière intervention 23 mai 2010 - 11 janv. 2010 à 01:27
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 1875 Date d'inscription dimanche 14 juin 2009 Statut Membre Dernière intervention 3 février 2024 142
8 janv. 2010 à 14:48
bonjour,

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

insert into 2emetable (select * from 1eretable)
0
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 lundi 24 décembre 2007 Statut Membre Dernière intervention 23 mai 2010 19
11 janv. 2010 à 01:27
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