Bonjour,
Je développe un site contenant des sessions ou on peut par exemple ajouter des artistes et les rechercher en fonction d'un mot clé.
Je vous présente mes 3 tables:
Cette dernière grâce aux contraintes de clés étrangère, me sert à lié mon id_membre et mon id_artiste.
Comme vous pouvez le constater, le membre avec l'id 5 à 3 artiste alors que le membre avec l'id 7 à 2 artistes.
Pour afficher la liste des artistes à une session propre, cela fonctionne:
Le modèle:
La vue:
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
22
23
24
25
26
27
28 <?php try { $hostname = 'localhost'; $user = 'root'; $pass='root';// sous windows mettre ''; $dbh = new PDO("mysql:host=$hostname;dbname=mediadb", $user, $pass); $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $sql = 'select * FROM artistes,membres_artistes WHERE id_membres='.$_SESSION["id"].' AND id_artistes=artistes.id'; $stmt = $dbh->query($sql); $records = array(); while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { $records[] = $row; // Tableau 2 dimensions } } catch(PDOException $e) { echo "Error: " . $e->getMessage(); } ?>
Par contre J'ai beaucoup de mal en ce qui concerne la requête pour le modèle de recherche.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 <?php echo "<h3> Votre liste d'artistes: </h3>"; foreach($records as $record) { echo "<a href = '?section=list&id={$record["id"]}'>"; echo $record['prenom']; echo '-'.$record['nom'].'<br/>'; echo '</a>'; } ?>
J'avais ceci qui fonctionne très bien mais m'affiche tout les artistes de tout les membres lorsqu'on submit sans mot clé dans le formulaire de recherche;
(Ce qui est normal car je SELECT * FROM artistes.)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 if(isset($_POST["keyword"])) { $sql = "SELECT * FROM artistes WHERE nom LIKE'%".$_POST["keyword"]."%'OR prenom LIKE'%".$_POST["keyword"]."%'OR surnom LIKE'%".$_POST["keyword"]."%' "; $stmt = $dbh->query($sql); $records = array(); while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { $records[] = $row; // Tableau 2 dimensions }
Alors j'essais de relier ces deux requête en une :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $sql = "SELECT * FROM artistes WHERE nom LIKE'%".$_POST["keyword"]."%'OR prenom LIKE'%".$_POST["keyword"]."%'OR surnom LIKE'%".$_POST["keyword"]."%' ";Lorsque je fonde ces 2 requêtes en une, cela m'affiche 5 fois la liste des artistes de tout les membres...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $sql = "SELECT * FROM artistes,membres_artistes WHERE id_membres=".$_SESSION['id']." AND id_artistes=artistes.id";
Je pense avoir un problème de logique...
Est-ce que quelqu'un pourrait m'aider s'il vous plaît ?
Merci
Partager