Menu

Aide pour bridger des tables utilisateurs de 2 cms

tradezone.fr 19 Messages postés mardi 15 janvier 2008Date d'inscription 21 décembre 2017 Dernière intervention - 19 déc. 2017 à 18:30 - Dernière réponse : yg_be 5230 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 20 avril 2018 Dernière intervention
- 21 déc. 2017 à 11:01
Bonjour,
je cherche à relier les utilisateurs de deux scripts php différents
et je ne sais pas comment faire.
Il me semble qu'avec la requête sql join c'est possible de dire à la base de données de considérer les deux tables users en une mais le noms des colonnes ne correspondent pas :
Je voudrais que les utilisateurs soient inscrit depuis l'un ou l'autre script.
Dans la table de données je trouve les colonnes :

id user name email password created modified isAdmin status photoURL lastLogin recoverPass backgroundURL


dans la base de donnée ou se trouvent les utilisateurs à conserver j'ai trouvé des colonnes qui correspondent :
uid uname name email pass user_regtime user_lastvisit url

comment faire pour que :

id = uid

user = uname

name = uname

email à déjà le même nom

password = pass

et pour que les enregistrement ne s'écrasent pas.
Est-ce la bonne méthode ?
J'ai aussi pensé à un fichier php qui ferait le lien entre les deux bases mais je ne saurais pas comment faire non plus.

le serveur en question est sous mysql 5.6 php 5.6

Merci d'avance pour votre aide
Afficher la suite 

27 réponses

Répondre au sujet
yg_be 5230 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 20 avril 2018 Dernière intervention - 19 déc. 2017 à 19:28
0
Utile
bonsoir, voudrais-tu créer une nouvelle table qui reprendrait le contenu des deux autres?
ou bien voudrais-tu garder deux tables, mais les utiliser comme si tout était dans une seule?
Commenter la réponse de yg_be
jordane45 20565 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 20 avril 2018 Dernière intervention - 19 déc. 2017 à 20:52
0
Utile
Bonjour,

comment faire pour que :

id = uid

user = uname

name = uname

email à déjà le même nom

password = pass

Quand tu fais ta requête ... tu peux utiliser des ALIAS pour les champs...

par exemple
SELECT champ1 , champ2
FROM table1
UNION
SELECT toto3 as champ1,  truc4 as champ2
FROM table2


Il faut, bien entendu, que le USER utilisé pour accéder aux données (dans tes deux BDD) aient les droits pour accéder à ces deux bases / tables


Commenter la réponse de jordane45
tradezone.fr 19 Messages postés mardi 15 janvier 2008Date d'inscription 21 décembre 2017 Dernière intervention - 19 déc. 2017 à 23:53
0
Utile
11
Merci pour vos réponses :)

Oui yg_be , je voudrais garder les deux tables et qu'elles fonctionnent comme si elles étaient dans une seule ce qui je suppose m'éviterai d'avoir à modifier les scripts et si une autre solution est possible je veux bien essayer.

oui jordan sa à l'air d'être sa,
mais hélas cela ne fonctionne pas
Quand j'entre :

SELECT id , user , name , email , password
FROM table1_users
UNION
SELECT uid as id, user as uname, name as uname, password as pass
FROM table2_users


voici ce que me répond le serveur :


MySQL déclare:
Unknown column 'user' in 'field list'

Erreur de demande:
SELECT id , user , name , email , password FROM table1_users UNION SELECT uid as id, user as uname, name as uname, password as pass FROM table2_users LIMIT 0, 30;


Pourtant, la colonne user existe bien en deuxième position après id dans la table 1.

Je ne comprends donc pas pourquoi cela ne fonctionne pas
tradezone.fr 19 Messages postés mardi 15 janvier 2008Date d'inscription 21 décembre 2017 Dernière intervention - 20 déc. 2017 à 01:58
table1 / table2

id = uid

user = uname

name = uname

email = email

password = pass

j'essaye de faire une fichier sql vide pour le mettre en upload mais sais pas comment supprimer les enregistrement sans supprimer les colonnes
tradezone.fr 19 Messages postés mardi 15 janvier 2008Date d'inscription 21 décembre 2017 Dernière intervention - 20 déc. 2017 à 02:13
merci beaucoup pour votre aide :)
Voici le fichiers sql à télécharger il y a un enregistrement dans la table1 et la table2 est vide
http://www.tradezone.fr/media/files/test_bridge.sql
jordane45 20565 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 20 avril 2018 Dernière intervention - 20 déc. 2017 à 02:21
Oui et ?
tradezone.fr 19 Messages postés mardi 15 janvier 2008Date d'inscription 21 décembre 2017 Dernière intervention - 20 déc. 2017 à 02:43
Je n'arrive pas à écrire la bonne syntaxe. Avec ce fichier vous pouvez voir ce qui ne colle pas avec les colonnes.
tradezone.fr 19 Messages postés mardi 15 janvier 2008Date d'inscription 21 décembre 2017 Dernière intervention - 20 déc. 2017 à 02:50
Voila j'ai créé un autre fichier http://www.tradezone.fr/media/files/test_bridge2.sql
avec un utilisateur dans chaque table pour voir si la requête fonctionne. J'ai mis les fichier en téléchargements si vous désirez pouvoir les uploader dans une base vide pour tester les commandes sql. Pour l'instant je n'ai toujours pas réussi. J'ai les mêmes erreurs qu'auparavant : Unknown column 'user' in 'field list' ou Unknown column 'id' in 'field list'
Commenter la réponse de tradezone.fr
yg_be 5230 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 20 avril 2018 Dernière intervention - 20 déc. 2017 à 09:12
0
Utile
et ainsi?
SELECT id , user , name , email , password
FROM table1_users
UNION
SELECT uid, uname, uname, email, pass 
FROM table2_users 
Commenter la réponse de yg_be
tradezone.fr 19 Messages postés mardi 15 janvier 2008Date d'inscription 21 décembre 2017 Dernière intervention - 20 déc. 2017 à 17:55
0
Utile
11
Merci pour votre aide :)
J'ai bien essayé le code :

SELECT id , user , name , email , password
FROM table1_users
UNION
SELECT uid, uname, uname, email, pass
FROM table2_users

Tout à l'air d'avoir fonctionné donc je suis perdu.
La requête fonctionne bien, mysqldumper me fait même un rapport de réussite ci dessous.
Table `bdd`.`users UNION`
Enregistrements 1 - 2 d'un total de 2 << < > >>
View: compact L'intérrogation contient 5 colonnes
# id user name email password
supprimer 1. 2 letesteur letesteur letesteur@letesteur.org 26b637ed41273425be
supprimer 2. 6 svanja svanja svanja@tradezone.fr ccmtest


Par contre impossible de retrouver l'union ensuite.
Les données de l'autre n'apparaissent dans aucune des deux tables.

Je pensait qu'une nouvelle table avec un nom différent (`users UNION` comme mentionné au dessus) avait peut-être été créé mais non.
Je me suis dit que l'union utilise les deux tables sans les lier physiquement mais quand j'essaye de me connecter avec un des scripts il me dit que l'utilisateur n'existe pas.
tradezone.fr 19 Messages postés mardi 15 janvier 2008Date d'inscription 21 décembre 2017 Dernière intervention - 21 déc. 2017 à 02:05
non, je suis pas un expert.
mais il me semble que la requête

SELECT id , user , name , email , password
FROM table1_users
UNION
SELECT uid, uname, uname, email, pass
FROM table2_users


semble fonctionner sauf que le fichier de sortie n'est pas conservé comme une table qui existe réellement, ou n'influe sur l'une des deux tables. Il faudrait donc ajouter quelque chose pour ces données soit réellement écrite dans l'une des deux tables. Dans les fouilles que j'ai pu effectuer sur internet je pensait que la commande join pourrait faire l'affaire mais le résultat de cette commande correspond parfaitement. Et si je peut joindre les informations qui rentre dans la base de données je n'ai pas besoin de modifier les programmes.
tradezone.fr 19 Messages postés mardi 15 janvier 2008Date d'inscription 21 décembre 2017 Dernière intervention - 21 déc. 2017 à 02:22
Est-ce que vous pensez que les exemples sur cette page ressemble à ce que je veux faire
https://stackoverflow.com/questions/33835516/sql-in-statement-keep-duplicates-when-returning-results
à un moment il est mentionné de conserver les données de la requête dans une table
Je ne saurai pas convertir ses idées en code c'est pour c'est que j'ai besoin de votre aide.
Merci à vous jordane45 et yg_be pour tout ce que vous avez déjà fait.
yg_be 5230 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 20 avril 2018 Dernière intervention > tradezone.fr 19 Messages postés mardi 15 janvier 2008Date d'inscription 21 décembre 2017 Dernière intervention - 21 déc. 2017 à 10:52
non, cela ne ressemble pas à ce que tu veux faire
tradezone.fr 19 Messages postés mardi 15 janvier 2008Date d'inscription 21 décembre 2017 Dernière intervention - 21 déc. 2017 à 02:43
j'ai également trouvé ce lien qui pourrait peut-être aider

https://stackoverflow.com/questions/19818384/performing-an-update-with-union-in-sql
yg_be 5230 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 20 avril 2018 Dernière intervention > tradezone.fr 19 Messages postés mardi 15 janvier 2008Date d'inscription 21 décembre 2017 Dernière intervention - 21 déc. 2017 à 10:51
cet exemple ne montre pas comment faire des mises à jour dans la fusion de deux tables.
Commenter la réponse de tradezone.fr