Ajout d'une variable à une requête
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 :
Code:
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/>';} |
Page filtres.php :
Code:
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.