Partage
  • Partager sur Facebook
  • Partager sur Twitter

Liste deroulante qui recupere les 1er lettres des noms dans une table

Comment eviter les doublons?

Sujet résolu
    8 mars 2006 à 12:33:49

    Bonjour,

    En fait j'aurai encore une question.

    J'ai fait une liste deroulante qui recupere le nom de personnes dans une table.
    Donc on a un truc du genre:
    -Dupont
    -Durant
    -Massard
    -Venden
    ect...

    Le probleme c'est que la liste est longue....
    Je souhaite donc recuperer seulement la 1er lettre des noms, enlever les doublons et afficher ca dans une autre liste juste a coté pour faciliter la recherche de noms.
    Quand on selectionnera dans cette liste la lettre D on aura que les noms commencant par D qui s'afficheront dans la seconde liste


    Pour ca j'utilise un:
    echo $donnees['utilisateur_nom']{0}
    a l'interieur d'une balise <option></option>

    ce qui donne:
    <option><?php echo $donnees['utilisateur_nom']{0};?></option>


    Evidement avant je fais ma requete et tout ce qu'il faut pour retourner les resultats voulu.

    Pouvez vous m'aider s'il vous plait pour la suppression des doublons?


    Merci a vous!
    • Partager sur Facebook
    • Partager sur Twitter
      8 mars 2006 à 12:48:48

      Pour decouper une chaine, la fonction c'est:
      substr ==> http://fr3.php.net/substr
      Avec cette fonction, tu a deja la premiere lettre. Apres je pensse qu'il te faut faire une expression reguliiere pour trouver la premiere lettre des prenom a affiché.

      • Partager sur Facebook
      • Partager sur Twitter
        8 mars 2006 à 13:08:59

        essaye :

        SELECT DISTINCT SUBSTRING(ton_champs‚ 11) AS lettre FROM ta_table


        Ca te retournera les premières lettres dans 'lettre'. Après, tu fais un mysql_fetch_assoc() dans un while.
        • Partager sur Facebook
        • Partager sur Twitter
          8 mars 2006 à 14:59:41

          Yes!

          Merci ca marche... en tout cas la premiere partie... le doublon sont tous virés!

          Voici le script que j'ai:

          $sql="SELECT DISTINCT SUBSTRING(utilisateur_nom‚1‚ 1) AS lettre FROM bureautique_utilisateur ORDER BY utilisateur_nom";
                                          $result=mysql_query($sql) or die('ERROR:'.mysql_error());
                                 
                                          if(mysql_num_rows($result))//si il existe un resultat a cette requete
                                          {
                                                  while ($donnees = mysql_fetch_assoc($result) )
                                                  {
                                                 
                                                  ?><option><?php echo $donnees['lettre'];?></option>
                          <?php      }

          //le code continue mais ct la la partie interessante
          // merci a vous!


          Maintenant faut que j'arrive a gerer la requete en fonction de la lettre choisi...
          • Partager sur Facebook
          • Partager sur Twitter
            8 mars 2006 à 15:06:23

            avec les expression reguliere, tu recherle la premiere lettre des prenoms, et tu les affiche.
            • Partager sur Facebook
            • Partager sur Twitter
              8 mars 2006 à 15:30:37

              Citation : Sannazzarotiti

              avec les expression reguliere, tu recherle la premiere lettre des prenoms, et tu les affiche.



              Non, pas de régex. Un SUBSTRING suffira également ici.

              SELECT * FROM ta_table WHERE SUBSTRING(ton_champs‚ 11) = $_POST['champs']
              • Partager sur Facebook
              • Partager sur Twitter
                8 mars 2006 à 15:34:57

                Je ne connais pas assez bien les expressions regulieres mais j'ai reussi a contourner le probleme avec des if(condition)...

                Le seul obstacle restant c'est dans une requete SQL du type:

                $sql="SELECT utilisateur_nom FROM bureautique_utilisateur WHERE utilisateur_nom=(je ne sais pas quoi mettre) ORDER BY utilisateur_nom";


                Pour faire une requete, selectionne les nom utilisateurs dans la table bureautique utilisateur ou les nom commence par $Variable_renvoyé_qui_correspond_a_une_lettre et classé par ordre alphabetique.

                Ce qui me manque c'est juste le utilisateur_nom=quoi?

                Avez vous une idée?
                • Partager sur Facebook
                • Partager sur Twitter
                  8 mars 2006 à 15:37:58

                  je viens de te dire ;)

                  Sinon, il y a :

                  SELECT * FROM ta_table WHERE ton_champs LIKE '$ta_lettre%' ORDER BY ton_champs


                  Mais entre celle-ci et la solution plus haut, je ne sais laquelle est la plus rapide.
                  • Partager sur Facebook
                  • Partager sur Twitter
                    8 mars 2006 à 15:48:13

                    Bingo!

                    Impeccable!

                    Dans mon cas la requete fallait l'ecrire:

                    $sql="SELECT utilisateur_nom FROM bureautique_utilisateur WHERE utilisateur_nom LIKE '".$_POST['debutnomliste']."%' ORDER BY utilisateur_nom";


                    Merci a vous tous!
                    • Partager sur Facebook
                    • Partager sur Twitter

                    Liste deroulante qui recupere les 1er lettres des noms dans une table

                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                    • Editeur
                    • Markdown