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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    402
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 402
    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 expérimenté
    Inscrit en
    Mai 2010
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 177
    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 éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    402
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 402
    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