Ankündigung

Einklappen
Keine Ankündigung bisher.

PHP/MySQL: Datensätze gruppiert nach Anfangsbuchstabe

Einklappen

Neue Werbung 2019

Einklappen
Dieses Thema ist geschlossen.
X
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • PHP/MySQL: Datensätze gruppiert nach Anfangsbuchstabe

    PHP-Code:
    <?php
    mysql_connect
    ('localhost''***''***');
    mysql_select_db('***');

    // array_combine existiert erst seit PHP 5
    if (!function_exists('array_combine')) {
        function 
    array_combine($keys$values)
        {
            
    // nicht ganz die selbe Funktionalität
            
    $combined = array();
            for (
    $i 0$x min(count($keys), count($values)); $i $x; ++$i) {
                
    $combined[$keys[$i]] = $values[$i];
            }
            
    // aber ausreichend
            
    return $combined;
        }
    }

    // Funktion die uns den Anfangsbuchstaben eines Strings liefert
    // mit der Besonderheit Umlaute auf das 26-Buchstaben-Alphabet umzulegen (leider manuell)
    function getInitial($string)
    {
        
    $initial $string{0};
        if (
    preg_match('/^[a-z]$/i'$initial)) {
            return 
    strtoupper($initial);
        }
        switch (
    $initial) {
            case 
    'ä': case 'Ä':
                return 
    'A';
            case 
    'ö': case 'Ö':
                return 
    'O';
            case 
    'ü': case 'Ü':
                return 
    'U';
            default:
                
    // Anfangsbuchstabe ein anderes Zeichen? Dann Raute als Default
                
    return '#';
        }
    }

    // Query zur Abfrage
    $sql "SELECT `interpret`, `album`, `trackanzahl` FROM `alben` ORDER BY `interpret` ASC";
    $res mysql_query($sql) or die(mysql_error());
    // Schlüssel zwischen A-Z erstellen
    $keys range('A''Z');
    $keys[] = '#'// Raute für unbekannte Zeichen
    // Die Werte sollen leere Arrays sein
    $values array_fill(027, array());
    // Das ganz kombinieren und wir erhalten unsere leere $data-Maske, deren Schlüssel das Alphabet
    // und die Raute und deren Werte leere Arrays sind
    $data array_combine($keys$values);
    while (
    $line mysql_fetch_assoc($res)) {
        
    // Anfangsbuchstaben ermitteln
        
    $initial getInitial($line['interpret']);
        
    // und den $data Array dahingehend füllen
        
    $data[$initial][] = $line;
    }
    // Den Array durchlaufen
    foreach ($data as $initial => $group) {
        
    // Den Anfangsbuchstaben ausgeben
        
    printf('<hr />%s
    '
    $initial);
        for (
    $i 0$x count($group); $i $x; ++$i) {
            
    // Und natürlich noch die aus der Datenbank zugeordneten Gruppen
            
    printf('%u: %s
    '
    $i 1implode(', '$group[$i]));
        }
    }
    // Fertig
    ?>
    Ausgabe:

    Code:
    A
    B
    C
    D
    E
    F
    1: fünfzig cent, get rich or die tryin', 12
    G
    H
    I
    J
    K
    L
    M
    N
    O
    1: öde band, öde lieder, 5
    P
    Q
    R
    S
    1: scooter, hyper hyper, 1
    2: scooter, how much is the fish, 1
    T
    U
    V
    W
    X
    Y
    Z
    #
    1: 50 cent, get rich or die tryin', 12

  • #2
    [offtopic]
    Was mich da an deinem Beitrag besonders interessiert ist die Ausgabe der Titel.

    2 mal Scooter, find ich cool...
    [B]Mfg Tomtaz[/B]
    [I]"Es soll jetzt diese Erfindung geben.... Kugel oder so heißt die. Ist so eine Art Suchmaschine..." [/I]:!::shock:

    Kommentar


    • #3
      Ich hab noch ganz andere Maxi-CDs von meinem 16. Geburtstag daheim rumliegen ..

      Kommentar


      • #4
        Auch alles in Richtung Scooter? Und vor allem, wie lange ist es her dein 16. Jähriger Geburtstag?
        [B]Mfg Tomtaz[/B]
        [I]"Es soll jetzt diese Erfindung geben.... Kugel oder so heißt die. Ist so eine Art Suchmaschine..." [/I]:!::shock:

        Kommentar


        • #5
          "get rich or die tryin" sag ich da nur. Bei switch heißt der aber Fuffzich Cent und kommt als angemalter Hoëcker daher...
          [COLOR="#F5F5FF"]--[/COLOR]
          [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
          „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
          [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
          [COLOR="#F5F5FF"]
          --[/COLOR]

          Kommentar


          • #6
            Das ist schon 10 Jahre her Kennt jemand noch "kleine Maus" von "das Modul"? LOL

            Fuffzich Cent ist genial bei switch, vor allem aber auch der, der den Volksmusikfutzi spielt.

            Kommentar


            • #7
              Zitat von Zergling
              Das ist schon 10 Jahre her Kennt jemand noch "kleine Maus" von "das Modul"? LOL
              Ja das kenne ich zur genüge, hab alle scheiben hier...

              Blümchen und co...
              [B]Mfg Tomtaz[/B]
              [I]"Es soll jetzt diese Erfindung geben.... Kugel oder so heißt die. Ist so eine Art Suchmaschine..." [/I]:!::shock:

              Kommentar


              • #8
                ... auf der Da-ten-autobahn...

                Wenn das mal keine Inspiration für H. Schneiders Welthit "Ich drück die Maus" war!
                Kostprobe?
                Zitat von Helge Schneider
                [...]
                Ich drück die Maus, ich sitz zuhaus! Ich sitz zuhaus, ich drück die Maus! Ich drück zuhaus, ich sitz zu Maus! Ich fick die Maus, ich fick die Maus! Ich schlitz die Maus auf! Der Computer ist aus! Ich drück die Maus, da ist er an! Ich drück die Maus, ich sitz zuhaus! Ich drück zuhaus! Ich drück zuhaus! Hey got the got the oh! Ne oh! Come on!
                [...]
                Das meine Herren ist ganz großes Tennis!
                .
                [COLOR="#F5F5FF"]--[/COLOR]
                [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                [COLOR="#F5F5FF"]
                --[/COLOR]

                Kommentar


                • #9
                  Zitat von nikosch77
                  ... auf der Da-ten-autobahn...

                  Wenn das mal keine Inspiration für H. Schneiders Welthit "Ich drück die Maus" war!
                  Kostprobe?
                  Zitat von Helge Schneider
                  [...]
                  Ich drück die Maus, ich sitz zuhaus! Ich sitz zuhaus, ich drück die Maus! Ich drück zuhaus, ich sitz zu Maus! Ich §$%! die Maus, ich §$%! die Maus! Ich schlitz die Maus auf! Der Computer ist aus! Ich drück die Maus, da ist er an! Ich drück die Maus, ich sitz zuhaus! Ich drück zuhaus! Ich drück zuhaus! Hey got the got the oh! Ne oh! Come on!
                  [...]
                  Das meine Herren ist ganz großes Tennis!
                  .

                  Looool, da haste recht, ganz großes Kino
                  [B]Mfg Tomtaz[/B]
                  [I]"Es soll jetzt diese Erfindung geben.... Kugel oder so heißt die. Ist so eine Art Suchmaschine..." [/I]:!::shock:

                  Kommentar


                  • #10
                    Um mal wieder zum Thema zurück zu kehren:

                    Das ist ein super Script, danke dafür.
                    Ich habe dieses Script soweit zum Laufen gebracht.

                    Aber ich würde gerne eine Erweiterung vornehmen, weiß aber nicht wie das umzusetzen wäre:

                    Im jetzigen Tutorial werden interpret, album und trackzahl zusammen ausgegeben.
                    Ich lese bei mir auch mehrere Spalten aus der DB aus und würde gerne am Ende die einzelnen Spalten getrennt auflisten können, sodass die Werte der Spalten einzeln nutzbar sind.

                    Kann mir da jemand von euch einen Tipp geben, wie das möglich ist?

                    Kommentar


                    • #11
                      sorry, doppelpost :/

                      Kommentar


                      • #12
                        Was heisst denn "einzeln nutzbar"?

                        Kommentar


                        • #13
                          Ich würde gerne z.B. nur 'interpret' ausgeben lassen und nicht `interpret`, `album`, `trackanzahl` in einem string.

                          Also ich habe schon herausgefunden, dass die einzelnen Werte in einem Array in $group gespeichert sind.

                          Aber z.B.
                          PHP-Code:
                          printf('%u: %s'$i 1implode(', '$group[0][$i])); 
                          funktioniert so nicht.

                          Kommentar


                          • #14
                            Aber so gehts:
                            PHP-Code:
                            printf('%u: %s'$i 1implode(', '$group[$i][interpret])); 
                            Gibt z.B. nur die Spalte 'interpret' aus.

                            Problem gelöst, danke

                            Kommentar


                            • #15
                              Zitat von Shen Beitrag anzeigen
                              Aber so gehts:
                              PHP-Code:
                              printf('%u: %s'$i 1implode(', '$group[$i][interpret])); 
                              Gibt z.B. nur die Spalte 'interpret' aus.

                              Problem gelöst, danke
                              müsste das nicht

                              PHP-Code:
                              printf('%u: %s'$i 1implode(', '$group[$i]['interpret'])); 
                              heißen ?

                              Kommentar

                              Lädt...
                              X