Tri par formulaire suite à un filtre des données
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) :
Code:
echo '<a href="filtres.php?id_editeur='.$data['id_editeur'].'"><strong>'.$data ['editeur'].'</strong></a><br/>';
La variable GET['id_editeur'] est récupérée dans l'URL de la page filtres.php :
Code:
...filtres.php?id_editeur=16
Grâce à la requête de la page filtres.php, la liste de mes livres apparaît correctement filtrée par éditeur :
Code:
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;
} |
Je souhaite ensuite pouvoir trier par librairie d'achat ces enregistrements filtrés grâce au formulaire suivant :
Code:
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/> |
J'ai fait ensuite ce code (peut être pas très académique) :
Code:
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";
} |
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:
/filtres.php?tri=librairie
J'ai donc perdu la variable GET['id_editeur'] récupérée dans l'URL de la page filtre.php :
Code:
...filtres.php?id_editeur=16
Si je comprends bien, il faudrait que mon URL contienne :
Code:
...filtres.php?id_editeur=16&tri=librairie
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.