- la table1 correspond aux infos fournies lors de l’inscription d'un utilisateur et comporte un ID(auto_inc), nom, mdp et mail.
- la table2 des informations complémentaires qui sont remplies après l'inscription comme l'adresse, le pays, et autre...
j'aimerais pouvoir lier les deux tables entre elles alors je créer un nouveau champs dans ma table 2 qui s'appelle user_ID et je voudrais que sa valeur soit équivalante à table1.ID est ce que c'est possible ?
Autre solution je recréer un champs nom dans table2 qui équivaut à mon $_SESSION['nom'], de cette manière je peux faire une jointure plus simplement, or je n'arrive pas trop à savoir comment faire pour vérifier que ma jointure à fonctionner (je n'ai pas de message d'erreur en tout cas...)
req = $bdd->prepare('SELECT * FROM account INNER JOIN profile WHERE table1.nom = table2.nom');
Je pense pas qu'il y ai d'erreur particulière ici n'est ce pas ?
Désolé si c'est un peu confus mais je m'y perds un peu dans ces jointures.
Même si parmis les noms il n'y a pas de doublons possible ?
Je pense que la jointure est utile dans la mesure où je veux permettre à un utilisateur de pouvoir accéder au profil d'un autre utilisateur et de pouvoir y consulter les différentes infos qui sont dans la table2.
Et je ne vois que la jointure comme possibilité.
Pour joindre sur l'ID de table1 je dois donc créé un table2.id qui prend la valeur de table1.id c'est juste ?
Comment attribuer à table2.id la valeur de table1.id ? Ah et comment afficher un résultat de cette jointure pour voir si ça a fonctionné ?
Merci
- Edité par TruffierAxel 7 novembre 2017 à 17:16:07
Pourquoi ne pas simplement utiliser une seule table, avec toutes les infos, c'est ce que je voulais dire.
Après, tout dépend comment l'enrichissement de la table se fait, mais en général, il faut bien choisir un utilisateur pour lui enregistrer une adresse.
Pourquoi ne pas simplement utiliser une seule table, avec toutes les infos
Dans le cadre de la normalisation, si les informations complémentaires ne sont pas systématiquement saisies, il est préférable de créer une deuxième table pour les contenir plutôt que d'avoir des colonnes NULL dans la première tant que ces données ne sont pas saisies ...
Si toutes les données ont vocations à être renseignées, alors en effet autant préférer une seule table ...
TruffierAxel a écrit:
je créer un nouveau champs dans ma table 2 qui s'appelle user_ID et je voudrais que sa valeur soit équivalante à table1.ID est ce que c'est possible ?
Le modèle de données "normal" serait :
utilisateur ( id_utilisateur [pk], nom, email, password, etc. )
complement ( id_utilisateur [pk][fk], info1, info2, etc. )
Dans la table utilisateur tu stockes toutes les données obligatoirement saisies lors de l'inscription.
Dans la table complement tu stockes toutes les données facultatives saisies plus tard, que tu relies à la table utilisateur par l'id (clé primaire) de cette table.
Hormis les informations d'inscriptions les autres champs ne sont pas obligatoires et j'imagine que tout le monde ne les rempliras pas tous c'est pour ça que je veut faire une deuxième table.
Benzouye j'ai compris le modèle et je viens de reussir à faire un table complement qui se créée ou s'update en fonction de si l'id.complement correspond à une ID dans utilisateur Petite question est ce que id.complement doit être primaire ou s'est indifférent ?
N'oubliez pas d'activer les erreurs PDO.
N'oubliez pas d'activer les erreurs PDO.