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

JavaScript Discussion :

Fonction JavaScript qui fait un filtre


Sujet :

JavaScript

  1. #1
    Membre régulier Avatar de soumou
    Inscrit en
    Juin 2005
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 208
    Points : 102
    Points
    102
    Par défaut Fonction JavaScript qui fait un filtre
    Bonjour tout le monde,

    J'ai une fonction mysql qui retourne un ensemble de lignes d'une table d'une base de données, cette table contien une colonne "nom".

    Je dois récuperer l'ensemble des lignes de cette table dans un tableau (en php : déjà fait), et afficher le résultats de ma requete.
    L'affichage des résultats je dois le filtrer (à l'aide d'une fonction javascript) selon la première lettre de la colonne "nom" de ma table, donc je dois avoir une liste de lettres d'alphabet et lorsque je clique sur une lettre ça doit afficher les noms qui commencent avec cette lettre.

    Est ce quelqu'un pourrait m'aider (j'ai besoin de la fonction javascript).

    Merci d'avance.

  2. #2
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 893
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 893
    Points : 16 347
    Points
    16 347
    Par défaut
    Heu, fais un mixe de display:block/none, et substring().

  3. #3
    Membre régulier Avatar de soumou
    Inscrit en
    Juin 2005
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 208
    Points : 102
    Points
    102
    Par défaut
    Bisûnûrs a écrit :
    Heu, fais un mixe de display:block/none, et substring().
    Pourrais tu détailler un peu comment puis je le faire, je ne suis pas assez doué en javascript

  4. #4
    Membre régulier Avatar de soumou
    Inscrit en
    Juin 2005
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 208
    Points : 102
    Points
    102
    Par défaut
    Je dois avoir en quelque sorte un truc comme ça :
    A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

    et quand je clique sur la lettre B par exemple ça me donne une liste de nom qui commencent avec la lettre B:

    Ballack
    Bellick
    Bianca
    ...etc

  5. #5
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 893
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 893
    Points : 16 347
    Points
    16 347
    Par défaut
    Pourquoi tu ne fais pas ça en PHP ? Tu construis ta requête SQL en fonction de la lettre cliquée et passée en paramètre.

    Tu limiteras ainsi la charge serveur en sélectionnant tous les enregistrements de ta table.

  6. #6
    Membre régulier Avatar de soumou
    Inscrit en
    Juin 2005
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 208
    Points : 102
    Points
    102
    Par défaut
    Bisûnûrs a écrit :
    Pourquoi tu ne fais pas ça en PHP ? Tu construis ta requête SQL en fonction de la lettre cliquée et passée en paramètre.

    Tu limiteras ainsi la charge serveur en sélectionnant tous les enregistrements de ta table.

    j'aimerais bien le faire en PHP, mais je dois le faire en javascript (imposé).
    Si tu peux me détailler un peu li'dée que tu as évoqué un peu en dessus.

    Merci d'avance.

  7. #7
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 893
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 893
    Points : 16 347
    Points
    16 347
    Par défaut
    Ben je ne connais pas la structure de ton code, donc si c'est possible, tu peux faire comme ça :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <div id="lettrea">
       Alphonse
       Arthur
       ...
    </div>
    <div id="lettreb">
       Bernard
       Bianca
       ...
    </div>
    ...

    Ensuite, si tu cliques sur A, tu n'affiches que le div dont l'id est lettrea.

    Pour moi ça serait la solution la plus simple.

  8. #8
    Membre régulier Avatar de soumou
    Inscrit en
    Juin 2005
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 208
    Points : 102
    Points
    102
    Par défaut
    OK, Merci pour l'aide

  9. #9
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 642
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 642
    Points : 66 668
    Points
    66 668
    Billets dans le blog
    1
    Par défaut
    oui ou encore avec des ancres et les divs en height 100% ...

  10. #10
    Membre confirmé Avatar de goodpz
    Profil pro
    Inscrit en
    Février 2007
    Messages
    475
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 475
    Points : 514
    Points
    514
    Par défaut
    Extrait d'un truc que j'avais déjà fait:

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    <script>
    window.onload = initStuff;
    function initStuff() {
      var table = document.getElementById('table'),
          ul = document.getElementById('letters'),
          lis = ul.getElementsByTagName('li');
      for (var i = 0; i < lis.length; ++i)
        lis[i].firstChild.onclick = function() {
          return filterRows(table, 1, 0, this.firstChild.nodeValue);
        }
    }
    // tableElem : HTMLElement
    // rowIndex  : index du row pour commencer le filtrage (0 indexed)
    // tableElem : index du col à prendre en compte (0 indexed)
    // tableElem : lettre pour la comparaison
    function filterRows(tableElem, rowIndex, colIndex, letter) {
      for (var i = rowIndex, val; i < tableElem.rows.length; ++i) {
        val = tableElem.rows[i].cells[colIndex].firstChild.nodeValue;
        if (val.substr(0,1).toLowerCase() != letter.toLowerCase())
          tableElem.rows[i].style.display = 'none';
        else
          tableElem.rows[i].style.display = '';
      }  
      return false;
    }
    </script>
     
    <ul id="letters">
      <li><a href="">A</a></li>
      <li><a href="">B</a></li>
      <li><a href="">C</a></li>
    </ul>
     
    <table id="table">
      <tr><th>Col0</th><th>Col1</th></tr>
      <tr><td>aa</td><td>1</td></tr>
      <tr><td>bb</td><td>2</td></tr>
      <tr><td>aa</td><td>3</td></tr>
      <tr><td>aa</td><td>4</td></tr>
      <tr><td>cc</td><td>5</td></tr>
    </table>

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

Discussions similaires

  1. Fonction Javascript qui ne s'exécute pas
    Par bubuche007 dans le forum Général JavaScript
    Réponses: 15
    Dernier message: 25/01/2007, 11h17
  2. Fonction javascript qui marche qu'une fois sous Firefox
    Par ns_deux dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 30/08/2006, 10h38
  3. Réponses: 4
    Dernier message: 09/08/2006, 10h41
  4. fonction javascript qui convertit 1 page web(html) en pdf!!
    Par allaoua dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 19/02/2006, 23h59
  5. fonction javascript qui rassemble une date
    Par Dizystorm dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 16/12/2004, 10h03

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