Ankündigung

Einklappen
Keine Ankündigung bisher.

Dropdown mit Trennlinien

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Dropdown mit Trennlinien

    Hallo,

    ich fülle mein Dropdown mit Daten aus einer DB und lasse es dann Alphabetisch Sortieren.
    Jetzt würde ich es gerne etwas aufräumen und zwar hätte ich gerne zwischen den Buchstaben einen Trennstrich, also zb so

    Anke
    Andreas
    Anton
    Alicia
    Abby
    -------------------
    Beata
    Bernd
    Bruno
    Brigitte
    -------------------
    Claudia
    Christian
    Carolin
    Celine
    -------------------


    Hat da jemand einen Tipp?

  • #2
    Ein Gruppenbruch:

    https://php-de.github.io/jumpto/gruppenbruch/

    Kommentar


    • #3
      @Jonas3344: Nicht so schnell, ich habe mir die Lösung noch nicht zu Ende gedacht . Aber laut deiner Quelle, hatte ich zumindest schon richtig angefangen

      Kommentar


      • #4
        https://developer.mozilla.org/de/doc...ement/optgroup
        [I]You know, my wife sometimes looks at me strangely. „Duncan“, she says, „there's more to life than Solaris“. Frankly, it's like she speaks another language. I mean, the words make sense individually, but put them together and it's complete nonsense.[/I]

        Kommentar


        • #5
          Zitat von jonas3344 Beitrag anzeigen
          Perfekt, danke.

          Kommentar


          • #6
            Habs eingebaut, funktioniert aber leider nicht 100% bei mir.
            So sieht es nun aus.

            Anke
            Andreas
            Anton
            Alicia
            AbbyBuchstabe: B
            Beata
            Bernd
            Bruno
            BrigitteBuchstabe: C
            Claudia
            Christian
            Carolin
            CelineBuchstabe: D

            Also 1. fehlt der Zeilenumbruch und 2. fehlt der Eintrag "Buchstabe: A", da es einen Eintrag mit A gibt.
            Hier der Code


            PHP-Code:
                    //Leerzeile                        
                    
            echo '<option selected="selected" value="leer"></option>';

                    
            $letzter_eintrag null;        

                    while(
            $row $result->fetch_row()){

                        
            $user_id    htmlspecialchars($row[0]);
                        
            $vorname    htmlspecialchars($row[1]);
                        
            $nachname     htmlspecialchars($row[2]);

                        
            $anfangs_buchstabe $row[1][0];

                        if(
            $anfangs_buchstabe != $letzter_eintrag){
                            echo 
            'Buchstabe: ' $anfangs_buchstabe '<br>';

                        }    

                        
            //Ausgabe
                        
            echo '<option value="'.$user_id.'|'.$vorname.'|'.$nachname.'">'.$vorname'&nbsp'.$nachname ;

                        
            //Neuen Vergleichswert setzen
                        
            $letzter_eintrag $anfangs_buchstabe;

                    } 
            Mit den tag <br> komme ich nicht weiter .....

            Kommentar


            • #7
              Es gibt in einer Optionsliste keinen Zeilenumbruch.

              Kommentar


              • #8
                Ne, <br> nützt dir natürlich nichts, weil du ja innerhalb eines <select> bist.
                Entweder du erstellst für den Buchstaben einen eigenen <option>-Eintrag oder du verwendest optgroup, so wie im link von chorn zu sehen. Und für den ersten Buchstaben musst du dir vor der while-Schlaufe den ersten Buchstaben des ersten Eintrages holen und verarbeiten.

                Kommentar


                • #9
                  jonas3344, ich hab es jetzt mit "optgroup" gemacht, funktioniert super, ich musste auch nicht den ersten Buchstaben extra holen, wird jetzt auch angezeigt.
                  So muss der Code aussehen.

                  PHP-Code:
                          //Leerzeile                        
                          
                  echo '<option selected="selected" value="leer"></option>';

                          
                  $letzter_eintrag null;        

                          while(
                  $row $result->fetch_row()){

                              
                  $user_id    htmlspecialchars($row[0]);
                              
                  $vorname    htmlspecialchars($row[1]);
                              
                  $nachname     htmlspecialchars($row[2]);

                              
                  $anfangs_buchstabe $vorname[0];

                              if(
                  $anfangs_buchstabe != $letzter_eintrag){
                                  echo 
                  ' <optgroup label="'.$anfangs_buchstabe.' " </optgroup>';

                              }    

                              
                  //Ausgabe
                              
                  echo '<option value="'.$user_id.'|'.$vorname.'|'.$nachname.'">'.$vorname'&nbsp'.$nachname;

                              
                  //Neuen Vergleichswert setzen
                              
                  $letzter_eintrag $anfangs_buchstabe;



                          } 
                  Danke für deine Hilfe!


                  Zitat von protestix Beitrag anzeigen
                  Es gibt in einer Optionsliste keinen Zeilenumbruch.
                  Nicht hilfreich, somit unnötiger Kommentar.
                  ​​​​​​​Wenn du nicht helfen willst, oder kannst, denke an Dieter Nuhr.

                  Kommentar


                  • #10
                    Wer ist Dieter Nuhr?

                    Kommentar


                    • #11
                      Lmgtfy : D
                      [I]You know, my wife sometimes looks at me strangely. „Duncan“, she says, „there's more to life than Solaris“. Frankly, it's like she speaks another language. I mean, the words make sense individually, but put them together and it's complete nonsense.[/I]

                      Kommentar


                      • #12
                        PHP-Code:
                          $user_id    htmlspecialchars($row[0]);
                                    
                        $vorname    htmlspecialchars($row[1]);
                                    
                        $nachname     htmlspecialchars($row[2]); 
                        Warum nicht assoc statt den nichts sagenden Zahlen nutzen?
                        The string "()()" is not palindrom but the String "())(" is.

                        Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                        PHP.de Wissenssammlung | Kein Support per PN

                        Kommentar

                        Lädt...
                        X