Bonjour,
Les codes suivants doivent me permettre de filtrer les résultats d'une requête (liste de livres) soit par éditeur, soit par librairie, soit par année de publication :
page liste.php :
Page filtres.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 $select_livre = 'SELECT L.TITRE AS titre, L.ID_LIVRE AS id_livre, DATE_FORMAT(L.DATE_ACHAT,"%Y")AS date_achat,DATE_FORMAT(L.DATE_PUBLICATION,"%Y")AS date_publication,DATE_FORMAT(L.DATE_LECTURE,"%Y")AS date_lecture, ED.NOM_EDITEUR AS editeur,ED.ID_EDITEUR AS id_editeur,LIB.NOM_LIBRAIRIE AS librairie,LIB.ID_LIBRAIRIE AS id_librairie FROM LIVRE L INNER JOIN EDITEUR ED ON ED.ID_EDITEUR = L.ID_EDITEUR INNER JOIN LIBRAIRIE LIB ON LIB.ID_LIBRAIRIE = L.ID_LIBRAIRIE ORDER BY L.DATE_ACHAT DESC LIMIT 0,100 '; $resultat_livre = mysql_query($select_livre); while ($data = mysql_fetch_assoc($resultat_livre)) { echo '<a href="filtres.php?id_editeur='.$data['id_editeur'].'"><strong>'.$data ['editeur'].'</strong></a><br/>'; echo '<a href="filtres.php?id_librairie='.$data['id_librairie'].'">Librairie : '.$data ['librairie'].'</a><br/>'; echo '<a href="filtres.php?annee_publication='.$data['date_publication'].'">Date publication : '.$data ['date_publication'].'</a><br/>';}
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 <?php $ID_EDITEUR= (iSset($_GET['id_editeur']) ? $_GET['id_editeur'] : null); $ID_LIBRAIRIE= (iSset($_GET['id_librairie']) ? $_GET['id_librairie'] : null); $DATE_PUBLICATION= (iSset($_GET['date_publication']) ? $_GET['date_publication'] : null); $select_livre = "SELECT L.TITRE AS titre, L.ID_LIVRE AS id_livre, DATE_FORMAT(L.DATE_ACHAT,'%Y')AS date_achat,DATE_FORMAT(L.DATE_PUBLICATION,'%Y')AS date_publication,DATE_FORMAT(L.DATE_LECTURE,'%Y')AS date_lecture, ED.NOM_EDITEUR AS editeur,ED.ID_EDITEUR AS id_editeur,LIB.NOM_LIBRAIRIE AS librairie,LIB.ID_LIBRAIRIE AS id_librairie FROM LIVRE L INNER JOIN EDITEUR ED ON ED.ID_EDITEUR = L.ID_EDITEUR INNER JOIN LIBRAIRIE LIB ON LIB.ID_LIBRAIRIE = L.ID_LIBRAIRIE"; if ( $ID_EDITEUR != null) { // on ajoute le critère que s'il est demandé $select_livre .= " WHERE ED.ID_EDITEUR=".$ID_EDITEUR; } if ( $ID_LIBRAIRIE != null) { // on ajoute le critère que s'il est demandé $select_livre .= " WHERE LIB.ID_LIBRAIRIE=".$ID_LIBRAIRIE; } if ( $DATE_PUBLICATION != null) { // on ajoute le critère que s'il est demandé $select_livre .= " WHERE DATE_FORMAT(L.DATE_PUBLICATION,'%Y')LIKE %".$DATE_PUBLICATION."%"; $resultat_livre = mysql_query($select_livre)or die('Erreur SQL !'.$select_livre.'<br>'.mysql_error());
Les 2 premiers liens fonctionnent : les résultats sont filtrés par éditeur ou par librairie. En revanche le 3eme lien devant filtrer par année de publication ne marche pas. Lorsque je clique, je n'ai pas d'erreur sql mais j'obtiens la totalité des enregistrements de ma base et non pas les résultats filtrés adéquats.
Avez-vous une idée de la façon de résoudre ce dysfonctionnement ? Merci d'avance.
Partager