Bonjour,
J'ai une base de données listant mes livres. J'ai 2 pages PHP :
- la 1ere (liste.php) liste la totalité de mes livres avec des liens sur chaque caractéristique (éditeur, genre...) pour me permettre de filtrer les résultats par éditeur, genre...
- les résultats filtrés sont affichés sur la 2nde page php (filtres.php)
Voici le lien filtrant par éditeur présent sur la page liste.php (appelant la page filtres.php) :
La variable GET['id_editeur'] est récupérée dans l'URL de la page filtres.php :
Code : Sélectionner tout - Visualiser dans une fenêtre à part echo '<a href="filtres.php?id_editeur='.$data['id_editeur'].'"><strong>'.$data ['editeur'].'</strong></a><br/>';
Grâce à la requête de la page filtres.php, la liste de mes livres apparaît correctement filtrée par éditeur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part ...filtres.php?id_editeur=16
Je souhaite ensuite pouvoir trier par librairie d'achat ces enregistrements filtrés grâce au formulaire suivant :
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 $select_livre= "SELECT L.TITRE AS titre, L.ID_LIVRE AS id_livre, YEAR(L.DATE_ACHAT)AS date_achat,YEAR(L.DATE_PUBLICATION)AS date_publication,YEAR(L.DATE_LECTURE)AS date_lecture, L.miniatures AS miniatures, ED.NOM_EDITEUR AS editeur,ED.ID_EDITEUR AS id_editeur,LIB.NOM_LIBRAIRIE AS librairie,LIB.ID_LIBRAIRIE AS id_librairie,FORM.NOM_FORMAT AS format,FORM.ID_FORMAT AS id_format, L.RESUME AS resume, L.STATUT_LECTURE AS statut_lecture 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 INNER JOIN FORMAT FORM ON FORM.ID_FORMAT = L.ID_FORMAT"; if ( $ID_EDITEUR != null) { // on ajoute le critère que s'il est demandé $select_livre .= " WHERE ED.ID_EDITEUR=".$ID_EDITEUR; }
J'ai fait ensuite ce code (peut être pas très académique) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 <form action ="filtres.php" method = "get"> <p> <SELECT name="tri"> <OPTION VALUE="librairie">librairie</OPTION> </SELECT> <INPUT type="submit" value="Envoyer"> <p/> <form/>
Mais le résultat n'est pas concluant car lorsque je clique sur le formulaire pour trier par librairie, la page filtrée n'est pas correctement triée : s'affichent les livres de ma base sans filtre ni tri. A noter que le contenu de l'URL de la page filtres.php est le suivant :
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 $choix_tri= (iSset($_GET['tri']) ? $_GET['tri'] : null); if( $choix_tri == "librairie") { // tri par librairie $select_livre = "SELECT L.TITRE AS titre, L.ID_LIVRE AS id_livre, LIB.NOM_LIBRAIRIE AS librairie,LIB.ID_LIBRAIRIE AS id_librairie [...] FROM LIVRE L INNER JOIN LIBRAIRIE LIB ON LIB.ID_LIBRAIRIE = L.ID_LIBRAIRIE [...] ORDER BY NOM_LIBRAIRIE ASC"; }
J'ai donc perdu la variable GET['id_editeur'] récupérée dans l'URL de la page filtre.php :
Code : Sélectionner tout - Visualiser dans une fenêtre à part /filtres.php?tri=librairie
Si je comprends bien, il faudrait que mon URL contienne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part ...filtres.php?id_editeur=16
Mais comment y parvenir ? Comment faire en sorte que ma page filtrée accepte d'être correctement triée ? Merci d'avance de vos lumières.
Code : Sélectionner tout - Visualiser dans une fenêtre à part ...filtres.php?id_editeur=16&tri=librairie
Partager