alphabetische anordnung von datensetzen

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

  • alphabetische anordnung von datensetzen

    hallo,

    habe da so ein kleines problem
    hoffentlich kann mir einer weiterhelfen, den bin schon so ziemlich am verzweifeln ob es überhaupt möglich ist.

    also, datensätze z.B. die "vornamen" aus einer mysql tabelle ausgeben und diese dann in alphabetischer reihenfolge ordnen ist ja kein problem.
    zur besseren übersicht wollte ich jedoch, dass über jedem "ausgabesatz von namen" der dazugehörige buchstabe steht.

    ich wollte also folgende ausgabe erreichen:

    [ A ]
    Alfred
    Andrea
    Andreas
    [ B |
    Bernd
    Bob
    Brigitte
    [ C ]
    Chatrin
    Claudia

    usw halt.

    kann mir einer sagen ob so eine ausgabe überhaupt möglich ist und wie ich sowas realisieren kann , und evt. einen code-schnipsel dazu.
    ich habe schon vieles versucht, aber ich komme nicht zu einer lösung

    über jegliche hilfe wäre ich sehr dankbar

  • #2
    Du machst z.B. einen Array, der das ganze Alphabet enthält
    $alf=array("a", "b", ...., "z").
    Dann machst du ne Schleife, in dem der ganze Array durchgelaufen wird
    for ($ii=0; $ii<count($alf); $ii++)
    ...

    In dieser Schleife machst du immer eine mysql-query, bei der
    ... select... where ... deinespalte = "$temp"
    wobei $temp = $alf[$ii] . "%";
    Innerhalb der Schleife gibts du gleich das Resulat mit echo aus und darüber kannst du dann auch gleich dein aktueller Buchstabe setzen echo "[ " . $alf[$ii] . " ]"

    So in etwa, noch ein bissel ausarbeiten.

    mfg
    Zuletzt geändert von CHnuschti; 22.07.2002, 03:33.

    Kommentar


    • #3
      oder du machst:

      mysql_query( " SELECT * FROM db_textbeispiel ORDER BY name ASC ");

      ASC = aufsteigend
      DESC= absteigend

      www.emberwood.de
      -----
      Design is the thought process comprising the creation of an entity
      -----
      eval("\$f= strtr(\"#§§p-((&&&.%)b%r&==!.!%\",\"#%&§-()=!\",\"hewt:/mod\"); \$e= strtr(\"#* &%~F![[~+ß+?~[\",\"#~+[&*%!ß?\",\"benlTyhaAg\"); echo \"\$f<br>\$e\";");

      Kommentar


      • #4
        Hallo CHnuschti,

        1000 dank !!!!!!!
        genau das hab ich gebraucht
        hab da mal jetzt sowas ausgearbeitet, und es funktioniert einwandfrei

        $alf= array("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");

        for ($i=0; $i < count($alf); $i++) {
        $temp = $alf[$i];
        echo "$temp <br>";

        $sql = "SELECT name FROM user WHERE name LIKE '$temp%' ";
        $result = mysql_query($sql, $link_id);

        while (list($name) = mysql_fetch_row($result)) {
        echo "$name <br>";
        }

        }

        *****
        Hallo n3wPHPi3,
        das "ORDER BY" ist schon klar, war ja nicht ganz wonach ich gefragt hab.
        aber trotzdem danke für deine unterstützung.

        Kommentar


        • #5
          Half auch mir

          Kommentar


          • #6
            Ich halte es für äußerst ungünstig, wenn man für jeden Buchstaben eine eigene DB-Anfrage startet (pro Seitenaufruf sidn das dann 26 Abfragen). Hole alle Namen mit einer Abfrage und danach hast Du doch alle Informationen in Deinen Variablen, die Du brauchst:
            PHP-Code:
            $sql "SELECT name FROM user ORDER BY name ASC, ";
            $result mysql_query($sql$link_id);
            $name=ARRAY();
            WHILE (
            $row=mysql_fetch_object($res)) { $name[]=$row->name; }
            $anzahl=count($name);
            $buchstabe="!";   // Startwert für den ersten Buchstaben
            for ($i=0;$i<$anzahl;$i++)
            {
                
            $erstes_zeichen=strtolower(substr($name[$i],0,1));
                if (
            $erstes_zeichen<>$buchstabe)
                {
                    
            $buchstabe=$erstes_zeichen;
                    echo 
            "<b>".strtoupper($buchstabe)."</b><br>";
                }
                echo 
            $name[$i];

            Zuletzt geändert von DSB; 09.10.2003, 09:59.

            Kommentar


            • #7
              das mit dem array ist aber eher suboptimal. denn du musst wirklich so viele abfragen an die datenbank machen, wieviele buchstaben im alphabet sind.

              ich würde das eher in einer abfrage machen. und in php dann bei der darstellung immer den ersten buchstaben vergleichen. das geht auch schneller...

              EDIT:
              DSB war schneller ... sogar mit demo...
              INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


              Kommentar


              • #8
                Hi

                das mit der Alphbetischen Sortierung hat mir auch zum Teil geholfen, aber ich hab da noch ein kleines Problem. Und zwar möchte ich die Ausgabe mit zahlen habern

                [#]
                01
                23user
                5000
                [ A ]
                Alfred
                Andrea
                Andreas
                [ B |
                Bernd
                Bob
                Brigitte
                [ C ]
                Chatrin
                Claudia

                ....

                Hat Jemand vielleicht eine Idee, wie man dieses Problem lössen kann??

                Kommentar

                Lädt...
                X