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

Langage PHP Discussion :

Filtre sur un select


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 113
    Points : 61
    Points
    61
    Par défaut Filtre sur un select
    Bonjour,

    Je voudrai faire un filtre sur un select mais je ne sais trop comment faire. Je voudrais que dès que l'on commence à taper une lettre ds mon champ filtre, mon select se mette à jour. Ainsi à chaque lettre tappé sur mon filtre, mon select s'actualise.

    type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <select name="Liste" 
                <?php 
                $req="SELECT toto FROM tata WHERE toto LIKE '%$Monfiltre%'"; 
                 $result = mysql_query($req);
                  while($row = mysql_fetch_array($result))
                 { echo '<option value="'.$row[0].'">'.$row[0].'</option>';}
                 ?>
    </select>
    <INPUT NAME="Monfiltre" ???>

    Merci pour votre aide

  2. #2
    Membre régulier Avatar de coach759
    Profil pro
    Webmaster
    Inscrit en
    Août 2009
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Août 2009
    Messages : 79
    Points : 92
    Points
    92
    Par défaut
    bonjour,

    Si tu veux que le champs select change en fonction de ce que tape l'utilisateur, il faut que soit tu recharge la page à chaque fois ou soit il te faut utiliser du javascript.

    La première solution est plus simple à réaliser, mais je te l'accordes, beaucoup moins joli...
    Si à la Saint Valentin elle te caresse la main, vivement la Sainte Marguerite

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 113
    Points : 61
    Points
    61
    Par défaut
    Aurais tu un exemple de code stp ?

  4. #4
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Ca va dépendre aussi de la taille de ta table de recherche parce que je vois mal exécuter une requête à chaque caractère saisi, d'autant plus avec un % pour commencer le filtre, niveau ressource ça va être violent... Si la table est pas trop grosse il faut voir si c'est possible de charger la table dans une variable et ensuite travailler en JS/Ajax sur cette liste au fur et à mesure.
    Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

    Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)

  5. #5
    Membre régulier Avatar de coach759
    Profil pro
    Webmaster
    Inscrit en
    Août 2009
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Août 2009
    Messages : 79
    Points : 92
    Points
    92
    Par défaut


    Je veux bien essayé de t'aider, mais je vais pas t'écrire le code "clé en main"


    Dans ton javascript,
    Dès que l'utilisateur ajoute une lettre dans ton input (tu peux utiliser l'événement onkeypress), tu fait une petite requete ajax, qui appel une page php, qui va chercher dans ta base de données et renvoyer les résultats.

    Ensuite ce que tu reçois en réponse tu l'affecte à ton select.

    J'espère que ça va t'éclairer, si tu as des questions n'hésite pas.
    Si à la Saint Valentin elle te caresse la main, vivement la Sainte Marguerite

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 113
    Points : 61
    Points
    61
    Par défaut
    non ma table n'est pas très grosse.

    Je ne veux pas le code clé en main mais juste les grandes lignes de celui-ci par exemple en fct de l'ébauche de code que j'ai mis ou sinon un exemple simplifié

    en effet, ce que je met ds mon filtre affecte directement mon select car celui-ci modifie ma requete .

    merci

  7. #7
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Citation Envoyé par uskiki85 Voir le message
    non ma table n'est pas très grosse.
    Dans ce cas charge la liste des mots à filtrer dès le chargement de ta page et travaille sur cette liste, ne va pas faire des requêtes en BDD à tout bout de champ...
    Charger la liste en PHP, créer une variable JS avec cette liste, et sur le onchange de ton champ appeler une fonction JS qui fait la recherche dans la liste. A retravailler c'est sans trop réfléchir ça et je maîtrise pas assez JS après
    Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

    Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 37
    Points : 21
    Points
    21
    Par défaut réponse à uskiki85
    Bonjour,
    Il me semble que cela peut être solutionné par un XMLHttpRequest
    Le tutoriel sur Ajax de developpez.net me paraît grandement utile.
    Quant à moi,
    j'ai pu le faire sur mon site après avoir acheté le livre Ajax et PHP de Ralph Stayer chez CampusPress (www.pearsoneducation.fr) :
    Voir ce que cela donne ici :
    http://www.ubaye-verdon.net/barcinonien/

    Bonne chance.

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 113
    Points : 61
    Points
    61
    Par défaut
    Simplement avec du php et js, ca doit qd meme etre possible !

    Voici mon code, pour l'instant :

    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
     
    <SCRIPT>
    function Refresh() 
    {
    	...
    }
    <SCRIPT>
     
    <select name="Liste" 
    <?php 
    $req="SELECT toto FROM tata WHERE toto LIKE '%$Monfiltre%'; 
    $result = mysql_query($req);
    while($row = mysql_fetch_array($result))
    { echo '<option value="'.$row[0].'">'.$row[0].'</option>';}
    ?>
    </select>
     
    <INPUT NAME="Monfiltre" onchange=Refresh()>
    Merci pour votre aide

  10. #10
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Tu n'as pas suivi mes remarques (charger TOUTE ta liste au chargement de la page et travailler ensuite sur la liste)... Là tu vas exploser ta charge sur la BDD en partant comme ça...
    Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

    Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 113
    Points : 61
    Points
    61
    Par défaut
    J'ai eu tellement de commentaires que je ne savais par ou commencer !

    Si je suis ton raisonnement :

    Citation Envoyé par Amara Voir le message
    Charger la liste en PHP,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <select name="Liste" 
    <?php 
    $req="SELECT toto FROM tata; 
    $result = mysql_query($req);
    while($row = mysql_fetch_array($result))
    { echo '<option value="'.$row[0].'">'.$row[0].'</option>';}
    ?>
    </select>
    Citation Envoyé par Amara Voir le message
    créer une variable JS avec cette liste,
    ??????

    Citation Envoyé par Amara Voir le message
    et sur le onchange de ton champ appeler une fonction JS qui fait la recherche dans la liste.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <SCRIPT>
    function Refresh() 
    {
    	...
    }
    <SCRIPT>
     
    <INPUT NAME="Monfiltre" onchange=Refresh()>

  12. #12
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Oui l'idée globale c'est bien ça. Pour la décla en JS je pensais à un echo style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "<script>" . [déclaration d'une variable en JS avec tous tes noms] . "</script>";
    comme ça dans ta page tu as bien une variable JS qui contient tous tes éléments

    par contre après je ne connais pas bien JS pour t'aider sur l'interaction entre la saisie de l'internaute et l'impact sur l'affichage (mais là on sors du cadre PHP qui sert uniquement à charger ta liste de mots dans une variable JS )
    Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

    Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Requête select filtrée sur un select
    Par jacko842 dans le forum SQL
    Réponses: 6
    Dernier message: 21/09/2011, 14h58
  2. copie d'une selection filtrée sur une autre feuille
    Par biboulou dans le forum Excel
    Réponses: 2
    Dernier message: 15/08/2011, 15h44
  3. filtre sur liste avec selection multiple
    Par petitours dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 01/08/2007, 09h42
  4. Filtre sur une base Paradox
    Par mika dans le forum Bases de données
    Réponses: 2
    Dernier message: 11/03/2004, 11h51
  5. [Sybase] filtre sur caractères spéciaux
    Par montelieri dans le forum Sybase
    Réponses: 4
    Dernier message: 07/04/2003, 16h49

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