Bonjour,
Je veux cr�er un annuaire d'entreprises ("fournisseurs") �tant intervenues sur nos diff�rents chantiers, avec un syst�me de notation et de commentaire associ�.
L�utilisateur s�identifie sur le site et lorsqu�il va sur sa page apparait la liste des entreprises qui ont particip� � ses chantiers qu�il lui reste � noter. C�est l� mon probl�me : ne faire apparaitre dans la liste que les entreprises qu�il n�a pas encore not�es.
Ma base de donn�es a donc une table � fournisseurs �, � chantiers �, � contact � et � note �.
Un utilisateur peut avoir plusieurs chantiers. Un chantier peut avoir plusieurs fournisseurs. Un fournisseur peut avoir particip� � plusieurs chantiers. Un chantier peut avoir plusieurs charg�s d�affaires (utilisateurs).
Il y a donc des tables de liaison.
Chaque table a une clef primaire auto-incr�ment�e, mais la table note a une clef primaire compos�e de 3 colonnes qui correspondent aux clefs primaires des 3 autres tables. Pourquoi ? parce qu�une seule note ne peut �tre attribu�e au triptyque utilisateur/chantier/fournisseur (un utilisateur note un fournisseur d�un chantier).
Je n�ai trouv� que cette solution pour �tre s�r de n�avoir qu�une seule note mais cela me pose probl�me ! (vous vous en doutez bien)
Je n�arrive pas � lister les fournisseurs des diff�rents chantiers d�un utilisateur que l�utilisateur n�a pas encore not� (donc qui n'ont pas encore de ligne dans la table "note").
Une �me charitable ? Une solution ? Merci !
Ci-dessous l�extrait de ma base et mon script PHP.
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 <?php session_start(); $pdo = pdo_connect_mysql(); // Vérifie si utilisateur connecté, sinon redirige vers page de connexion if(!isset($_SESSION['username'])){ header("Location: ../login.php"); } // liste des chantiers du $_session en tant que chargé d'affaire $stm0 = $pdo->prepare('SELECT Chantier_Id, Chantier_Nom, Fourn_Id, Fourn_Nom, Fourn_Ville, Contact_Id FROM fournisseur JOIN chantfourn ON Fourn_Id = Chantfourn_FournId JOIN chantier ON Chantier_Id = Chantfourn_ChantId JOIN chantcontact ON Chantier_Id = Chantcontact_ChantierId JOIN contact ON Chantcontact_ContactId = Contact_Id WHERE Contact_Username = ? ; $stm0->execute([$_SESSION['username']]); $chantfourncharg = $stm0->fetchALL(PDO::FETCH_ASSOC); ?>
Partager