Ankündigung

Einklappen
Keine Ankündigung bisher.

Einträge nach dem Anfangsbuchstaben sortieren

Einklappen

Neue Werbung 2019

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

  • Einträge nach dem Anfangsbuchstaben sortieren

    Grüßt Euch!

    War schon lange nicht mehr hier...

    Nun zu meinem Problem: Ich habe eine Tabelle in der meine DVD-Sammlung steht. Nun möchte ich diese bei der Ausgabe - zur besseren Übersicht - nach dem Anfangsbuchstabe sortieren. Ich habe diesen Artikel in der Suche gefunden, der mein Problem aber nicht behebt.
    Ich würde als erstes alle Einträge mittels while() oder for() auslesen, und dann bei jedem Eintrag mittels substr() den ersten Buchstaben bzw. die erste Zahl auslesen. Ab hier hab ich eine Blockade.

    Wie Ordne ich dies dann richtig ein?

    Ich würde mich über Eure Hilfe sehr freuen!

  • #2
    Wieso sortierst du nicht schon bei der SQL-Abfrage mit ORDER BY ?

    Kommentar


    • #3
      Wenn ich wüsste wie das geht, dann würde ich es auch so machen.

      EDIT: Ich glaube Du verstehst mich falsch. Ich möchte die einzelnen Rubriken von A-Z und # für die Zahlen einfügen, und dann unter die jeweilige Buchstabenrubrik die dazu passenden DVDs listen.

      Z.B.

      R
      Resodent Übel - Zahnpaste des Verderbens
      Rülpsparade
      etc.

      Kommentar


      • #4
        ORDER BY + SUBSTR() sollten die helfen...

        Kommentar


        • #5
          Und für die Überschriften einfach in der Schleife merken welcher Buchstabe im letzten Schleifendurchgang benutzt wurde und dann bei if($letzter != $aktueller) überschrift ausgeben

          Kommentar


          • #6
            Könntet Ihr mir vielleicht einen Scriptschnipsel schreiben? Wäre sehr nett von Euch.

            Kommentar


            • #7
              Zitat von Johnnii360
              Ich möchte die einzelnen Rubriken von A-Z und # für die Zahlen einfügen, und dann unter die jeweilige Buchstabenrubrik die dazu passenden DVDs listen.
              .
              und was macht bitte der Beispiel, auf der du selbst verlinkt hast?

              Kommentar


              • #8
                Zitat von Slava
                Zitat von Johnnii360
                Ich möchte die einzelnen Rubriken von A-Z und # für die Zahlen einfügen, und dann unter die jeweilige Buchstabenrubrik die dazu passenden DVDs listen.
                .
                und was macht bitte der Beispiel, auf der du selbst verlinkt hast?
                Siehe meinen Post von 15:48 Uhr.

                Kommentar


                • #9
                  PHP-Code:
                  <?
                  # SELECT title , LOWER(LEFT(title,1))) AS keychar ...
                  while ($aRead = mysql_fetch_array (...))
                    {
                    $sKey = is_numeric ($aRead['keychar']) ? '#' : $aRead['keychar'];
                    $aStructure[$sKey][] = $aRead;
                    }

                  print_r($aStructure);

                  Kommentar


                  • #10
                    Ist es nicht leichter lieber ein extra Feld in die Tabelle einzutragen, diesem den Namen "Buchstaben" o.ä. zu geben, und da den Anfangsbuchstaben eintragen zu lassen? Anschließend kann man ja dann zwei while-Schleifen machen. Die eine gruppiert die Anfangsbuchstaben (GROUP BY column), und die andere Listet dann die Einträge in der jeweiligen Rubrik (WHERE column='".$var['column']."').

                    Kommentar


                    • #11
                      Nein,

                      - es ist nicht sinnvoll extra ein Buchstabenfeld zu pflegen, wenn das automatisch beim Auslösen erzeugt werden kann
                      - SQL Statements in Schleifen abzusetzen ist nicht nur unnötig, sondern auch ressourcenintensiv
                      - für Deine Zwecke ist ORDER BY maßgeblich, GROUP BY hat einen anderen Anwendungsbereich.

                      Kommentar


                      • #12
                        Hilft das?
                        http://www.phpfriend.de/forum/ftopic61982.html

                        Kommentar


                        • #13
                          Ist doch einfach:
                          • Abfrage mit ORDER BY TITEL
                          • leere Varianle ($x) für alten Buchstaben definieren
                          • Schleife über alle Datensätze INNERHALB:
                          • Variable ($y) auf ersten Buchstaben, wenn nummerisch auf '#' setzen
                          • Wenn $x ungleich $y, $x ausgeben und $x auf $y setzen
                          • restliche Daten ausgeben

                          Kommentar


                          • #14
                            Nichts anderes als lazydog sagte ich dir bereits am anfang...

                            PHP-Code:
                            $sql "SELECT titel FROM dvds ORDER BY titel";
                            $qry mysql_query($qry) or die(mysql_error());

                            while(
                            $row mysql_fetch_object($qry))
                            {
                              
                            $now_bst strtoupper(substr($row->titel,0,1));
                              if(!isset(
                            $last_bst) || $last_bst != $now_bst)
                              {
                                
                            $last_bst $now_bst;
                                echo 
                            "[b]$now_bst[/b]
                            "
                            ;
                              } 
                              echo 
                            $row->titel."
                            "
                            ;

                            DENGLISCH 4 EVER

                            Kommentar


                            • #15
                              Zitat von Zergling
                              Bis auf die fehlende Ausgabe tut mein Code Posting so ziemlich dasselbe. (Die Umlaute hatte ich allerdings vergessen)...

                              Kommentar

                              Lädt...
                              X