Relation entre deux tables en SQL/PHP

Résolu/Fermé
persepolis7 Messages postés 58 Date d'inscription mercredi 10 janvier 2018 Statut Membre Dernière intervention 16 janvier 2019 - Modifié le 12 sept. 2018 à 16:04
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 - 12 sept. 2018 à 16:11
Bonjour,

je voudrais qu'un utilisateur puisse créer un produit et que ce produit lui soit lier dans la table des produits

soit une table avec les informations de l'utilisateur et une table produit

les informations suivante dans la table utilisateur :

Id, nom, prenom, mdp..

les informations suivante dans la table produit :

Id, IdUtilisateur, nomDuProduit, imageProduit, prix..


Je suis sur ma page d'ajout de produit auquelle, l'utilisateur n'a accès que lorsqu'il est connecté, que dois faire pour que lors d'un listing par category par exemple le nom du vendeur du produit puisse s'afficher à côter du produit ?

J'espere avoir été clair..

merci
A voir également:

3 réponses

jee pee Messages postés 39585 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 19 avril 2024 9 225
Modifié le 12 sept. 2018 à 15:53
Bonjour,

Non ce n'est pas totalement clair ;-)

Quand tu fais l'insert dans la table produit, il faut mettre l'id de l'utilisateur connecté dans le champ idutilisateur.

Et pour afficher la liste avec le nom tu feras un :
select produit.id, nomduproduit, nom, prénom
from produit, utilisateur
where utilisateur.id = produit.idutilisateur

(je suis de la vieille école, je ne pratiquais pas le JOIN ;-)

Pour être plus clair je n'utiliserais pas dans les tables produit et utilisateur la clé nommée id, mais un nom distinct à chaque fois idproduit, idutilisateur

Cdlt

1
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
12 sept. 2018 à 15:55

(je suis de la vieille école, je ne pratiquais pas le JOIN ;-)

Argghhhh.... vade retro satanas... :-)
mais tu pourrais au moins utiliser les alias de table. :-)

et bonjour quand même ^^
0
persepolis7 Messages postés 58 Date d'inscription mercredi 10 janvier 2018 Statut Membre Dernière intervention 16 janvier 2019 1
12 sept. 2018 à 16:06
Oui je viens de comprendre merci ! :)
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
12 sept. 2018 à 16:11

Pour être plus clair je n'utiliserais pas dans les tables produit et utilisateur la clé nommée id, mais un nom distinct à chaque fois idproduit, idutilisateur

Quelle drôle d'idée....(et quelle bêtise).
Pourquoi vouloir donner un nom distinct aux champs... sachant qu'on est dans la table..
Un exemple
Table utilisateur ( id, nom, prenom)
Pourquoi vouloir mettre
Table utilisateur ( idUtilisateur, nom, prenom) ??
Dans ce cas.. autant pousser au maximum
Table utilisateur ( idUtilisateur, nomUtilisateur, prenomUtilisateur) ....

Sachant que quand tu fais ta requête... soit tu nommes les tables soit (et c'est plus lisible...) tu utilises des alias...
SELECT 
       p.*
      ,U.id as ID_UTILISATEUR
      ,U.nom
      ,U.prenom
FROM produit P
LEFT JOIN utilisateur U ON U.id = P.idUtilisateur

De cette façon.. lorsque tu dois faire des jointures entre les tables.. tu n'as pas à te demander si tu as bien orthographié le nom du champ ... id_utilisateur ? IDUtilisateur ? idUtilisateur, id_Utilisateur ..... tu sais que c'est id ... et c'est tout.
NB: Il est également préférable de TOUJOURS nommer ses champs en MINULSCULE et sans caractères accentués ou spéciaux.

Voila...
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
12 sept. 2018 à 15:52
Bonjour
SELECT *
FROM  produit P
LEFT JOIN utilisateur U  ON U.id = P.IdUtilisateur

0
persepolis7 Messages postés 58 Date d'inscription mercredi 10 janvier 2018 Statut Membre Dernière intervention 16 janvier 2019 1
12 sept. 2018 à 15:59
Merci mais pour l'ajout comment procède t-on ? j'ai essayé de le faire juste en bas
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649 > persepolis7 Messages postés 58 Date d'inscription mercredi 10 janvier 2018 Statut Membre Dernière intervention 16 janvier 2019
Modifié le 12 sept. 2018 à 16:02
0
persepolis7 Messages postés 58 Date d'inscription mercredi 10 janvier 2018 Statut Membre Dernière intervention 16 janvier 2019 1
12 sept. 2018 à 16:04
Je viens de voir..
0
persepolis7 Messages postés 58 Date d'inscription mercredi 10 janvier 2018 Statut Membre Dernière intervention 16 janvier 2019 1
Modifié le 12 sept. 2018 à 16:00
J'aurais besoin d'aide notamment sur les champs "Id, IdUtilisateur"

à quoi faire correspondre l'IdUtilisateur ? à l'Id de la table Utilisateur ?



prepare( "INSERT INTO produit( nomDuProduit, prix ) VALUES(?, ?) WHERE IdUtilisateur = ?" );

execute( array( $nomProduit, $prix, $_SESSION['Id'] ) );



L'Id de la table produit reste donc en autoincremente puisque c'est l'Id du produit est-ce correcte ?
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
12 sept. 2018 à 15:57
INSERT INTO produit( nomDuProduit, prix ,IdUtilisateur ) VALUES(?, ?, ?) 

Et oui.. IdUtilisateur .. ben c'est l'id de ton utilisateur. (du vendeur vu que c'est ce que tu veux)...
0
persepolis7 Messages postés 58 Date d'inscription mercredi 10 janvier 2018 Statut Membre Dernière intervention 16 janvier 2019 1
12 sept. 2018 à 16:03
J'étais pas sûr :) merci
0