IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Tri par formulaire suite à un filtre des données


Sujet :

PHP & Base de données

  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 365
    Points : 192
    Points
    192
    Par défaut 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 : 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.

  2. #2
    Membre actif
    Inscrit en
    Mai 2010
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 177
    Points : 210
    Points
    210
    Par défaut
    Dans ton deuxième formulaire, celui qui est censé trier par librairie d'achat, tu pourrais rajouter un contrôle caché mémorisant l'id de l'éditeur de la façon suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <form action ="filtres.php" method = "get">
     <input type="hidden" name="id_editeur" value=<?php echo "\"" . $ID_EDITEUR . "\""; ?> >
    <p>
    <SELECT name="tri">
     
    		<OPTION VALUE="librairie">librairie</OPTION>
     
    </SELECT>
     
     
    	<INPUT type="submit" value="Envoyer">
    <p/>
    <form/>
    C'est ce qui va te permettre de garder l'id de l'éditeur de la page filtre.php à la page filtres.php

    J'espère avoir réussi à éclairer ta lanterne adéquatement, bonne chance .

  3. #3
    Membre habitué
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 365
    Points : 192
    Points
    192
    Par défaut
    Merci pour ta réponse. C'est une solution à laquelle je n'avais pas pensé

Discussions similaires

  1. Remplacer le filtre des données Eccel par un UserForm
    Par djhib dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 17/12/2014, 14h24
  2. Réponses: 3
    Dernier message: 25/09/2013, 13h48
  3. [XI] [Vista] Viewer bloqué par la prévention d'execution des données
    Par hardballer dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 04/02/2008, 14h40
  4. Réponses: 3
    Dernier message: 07/09/2007, 15h29
  5. Réponses: 22
    Dernier message: 07/12/2005, 13h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo