riesiges listenfeld übersichtlich gestalten

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

  • riesiges listenfeld übersichtlich gestalten

    hi...

    ich habe in einem listenfeld an die 1000 einträge drin (namen). ich möchte jetzt wenn ein neuer buchstabe beginnt, das da zuerst der neue buchstabe mit einer farbe hinterlegt ist und dann die nächsten einträge kommen.

    oder gibts vielleicht noch ne bessere lösung als die ganzen 1000 namen in einem listenfeld anzuzeigen?

  • #2
    hm spricht irgendwas gegen ne suchfunktion ?

    ansonsten musste dir halt en regulären ausdruck basteln der überprüft ob der erste Buchstabe des Namens "a", "b", ... ist, wenn ja farbig hinterlegen und kontrollvariable auf 1 setzen, bei jedem durchlauf des gleichen buchstabens muss natürlich dann überprüft werden ob die kontrollvariable noch auf 0 steht oder schon auf 1, bei 1 natürlich dann nichts mehr machen ...

    mfG
    CMS-X Medien- und Modelagentur

    Kommentar


    • #3
      hi...

      suchen geht leider nicht.

      ich brauche die namen für protokolle von wettkämpfen. man kann nun diese protokolle eingeben und dazu aus der liste den jeweiligen namen wählen. somit muss man icht immer den namen neu eingeben, ausserdem gibts ja zu jedem läufer noch andere infos, an die ich dann über die id komme.

      Kommentar


      • #4
        vielleicht solltest du zuerst eine vorauswahl nach anfangsbuchstaben machen und dann erst die passenden namen aus der db holen ... LEFT ist dein freund oder substr() wenn du einen "gruppenwechsel" vornehmen willst.
        Kissolino.com

        Kommentar


        • #5
          Das mit der Vorauswahl ist zwar besser, trotzdem gibts fuer deine Variante auch ne Lösung:

          einmal mit einem regulaere Ausdruck - angenommen $eintrag sei einer der 1000 Listenfeldelemente

          PHP-Code:
          if(eregi("^a.*"$eintrag)) 
          { ... } 
          oder wie schon erwaehnt mit substr();

          PHP-Code:
          if(substr($eintrag,0,1) == "a" || substr($eintrag,0,1) == "A")
          { ... } 
          In beiden Faellen wird nach A bzw. a am Anfang gesucht. Gut waere auch noch, wenn du zwei Arrays aufbaust, das eine von A-Z und das andere synchron dazu mit den Farben fuer A-Z.

          Kommentar


          • #6
            Hmmm, wie wäre es einfach mal folgenden Code zu benutzen:

            PHP-Code:
            <select name="name">
              <
            optgroup label="A">
                <
            option>Anton</option>
                <
            option>Antje</option>
              </
            optgroup>
              <
            optgroup label="B">
                <
            option>Berta</option>
                <
            option>Budah</option>
              </
            optgroup>
            </
            select
            Das gestaltet das Listenfeld sehr schön und ist direkt übersichtlicher
            Alternativ kannst du ja erstmal nur die ersten Buchstaben anzeigen (A-Z) lassen und durch auswahl das Listenfeld neu laden lassen mit nur den erstbuchstaben, den du ausgewählt hast

            Das bekommst du, SQL ist zum Glück leistungsfähig in dieser hinsicht in verbindung mit php, so raus

            PHP-Code:
            while($row mysql_fetch_assoc($result)) {
                 
            $firstLetter          strtolower(substr($row['feld'], 01));
                 
            $rows[$firstLetter][] = $row;
            }

            print_r($rows); 

            Kommentar


            • #7
              hi @all...

              danke für die antwortern.

              mit der vorauswahl, das hab ich mir auch überlegt, aber es soll jawie gesagt ein protokoll eingegeben werden. waagerecht habe ich 3 felder (name, zeit,platz) und senkrecht so viele felder wie teilnehmer vorhanden sind.
              und für die namen wollte ich wie gesagt dieses listenfeld verwenden. da werde ich wohl nicht drumrum kommen und mir alles einträge anzeigen lassen müssen oder?

              Kommentar

              Lädt...
              X