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 : 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/>';
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
...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 : 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;
 
}
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
<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 : 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";
  }
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
/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 : Sélectionner tout - Visualiser dans une fenêtre à part
...filtres.php?id_editeur=16
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&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.