Bonjour,
Au 1er affichage, le code suivant me permet de lister tous mes livres provenant d'une base de données Mysql. Sur cette liste globale, je peux dans un 2nd temps cliquer soit :
- sur un lien "GENRE" qui me permet de filtrer les données en n'affichant que les livres de tel GENRE
- sur un lien "ID_AUTEUR" qui me permet de filtrer les données en n'affichant que les livres de tel auteur
Ces 2 possibilités fonctionnent :
En revanche, ce qui ne fonctionne pas c'est l'association de ces 2 possibilités. A savoir, après avoir cliqué sur un lien "ID_AUTEUR" qui m'affiche la liste des livres de tel auteur, je voudrais pouvoir filtrer cette liste en n'affichant que les livres de cet auteur ayant tel thème (ce qui revient à faire 2 filtres en 2 temps). Mais j'ai l'erreur suivante :
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61 <?php // Connexion à la base de donnée require_once("connexionMysql.inc.php"); // Le nom de la table $tablename = 'liste'; $ID_AUTEUR = (iSset($_GET['ID_AUTEUR']) ? $_GET['ID_AUTEUR'] : null); $GENRE = (iSset($_GET['GENRE']) ? $_GET['GENRE'] : null); // La requête $requete = "SELECT * FROM ".$tablename; if ( $ID_AUTEUR != null) { // on ajoute le critère que s'il est demandé $requete .= " WHERE ID_AUTEUR=".$ID_AUTEUR; } if ( $GENRE != null) { // on ajoute le critère que s'il est demandé $requete .= " WHERE GENRE='".$GENRE."'"; } $resultat = mysql_query($requete) or die('Erreur SQL !'.$requete.'<br>'.mysql_error()); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Document sans nom</title> <link rel="stylesheet" type="text/css" href="styles/biblio.css" media="all" /> </head> <body> <div id="global"> <div> <?php while($donnees=mysql_fetch_array($resultat)) { ?> <ul> <li class="auteur"><a href="liste_livres.php?ID_AUTEUR=<?php echo $donnees['ID_AUTEUR']; ?>"><?php echo $donnees['AUTEUR']; ?></a></li> <li class="genre"><a href="liste_livres.php?GENRE=<?php echo $donnees['GENRE']; ?>&ID_AUTEUR=<?php echo $ID_AUTEUR; ?>"class="lien2"><?php echo $donnees['GENRE']; ?></a></li> </ul> </div> <?php } ?> </div> <!-- #global --> </body> </html>
Je vois bien que WHERE apparaît 2 fois ce qui ne me semble pas normal...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 SELECT * FROM liste WHERE ID_AUTEUR=31 WHERE GENRE='thriller' Erreur SQL !SELECT * FROM liste WHERE ID_AUTEUR=31 WHERE GENRE='thriller' You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE GENRE='thriller' at line 2
Pouvez-vous m'aider à parvenir au résultat escompté ? Merci.
Partager