Michi: PHP+MYSQL; ausgabe sortieren nach 2 Feldern, Priorität

Schönen guten Morgen an alle...

Lese nun seit gestern und heute morgen seit 6 im Archiv und im Forum nach, wie mann eine Ausgabe über PHP aus einer MYSQL-DB sortieren kann. Irgendwie komme ich aber nicht zurecht damit bzw. finde keine richtigen anhaltspunkte.
Könnt Ihr mir weiterhelfen ???

So sieht mein Problem aus:

Datenbank wird ausgelesen und soll nach 2 Feldern sortiert werden;
z.B. 1. Kunde nach PLZ und 2. Kunde nach Ort

...  PLZ     Ort
     80001   München
     85701   Abendheim
     85702   Beerenheim  usw.

So habe ich bisher die Ausgabe in php geschrieben:

for($i=0; $i<mysql_num_fields($erg); $i++)
$feld = mysql_field_name($erg, $i);
echo "...
...
while($row = mysql_fetch_row($erg))
{
echo "<tr>\n";
echo "<td style="background-color:$bg_color" align="center" valign="top"><font size="2" face="Arial, Helvetica, sans-serif">$row[1]</td>\n";
...
Wie kann ich so eine Ausgabe sortieren lassen?

Wäre echt super klasse, wenn euch dazu noch was einfallen würde!

Schonmal vielen vielen dank vorab!

Michi

  1. Hi Michi

    Lese nun seit gestern und heute morgen seit 6 im Archiv und im Forum nach, wie mann eine Ausgabe über PHP aus einer MYSQL-DB sortieren kann. Irgendwie komme ich aber nicht zurecht damit bzw. finde keine richtigen anhaltspunkte.
    Könnt Ihr mir weiterhelfen ???

    Willst du zwingend mit PHP sortieren oder darf dies auch schon in der SQL-Query passieren?

    Datenbank wird ausgelesen und soll nach 2 Feldern sortiert werden;

    Wenn es auch in der Query sein darf, ist ORDER BY dein Freund:

    ORDER BY feld1 [ASC|DESC] ... , feldn [ASC|DESC]

    Du listest nach ORDER BY alle Felder nach denen du sortieren willst durch Kommas getrennt auf. Dazu gibst du noch an, in welche Richtung du sortieren willst, ASC für aufsteigend, DESC für absteigend, ASC kannst du auch weglassen da standardmässig aufsteigend sortiert wird.

    ORDER BY gehört ganz ans Ende deiner Query.

    Gruss Daniela

    --
    Nein, wir frieren unsere Hühner nicht auf Gletschern fest.
    Selfcode: sh:) fo:) ch:) rl:) br:> n4:| ie:{ mo:) va:) de:] zu:} fl:( ss:) ls:&
    1. Hallo Daniela,

      Wenn es auch in der Query sein darf, ist ORDER BY dein Freund:

      ORDER BY feld1 [ASC|DESC] ... , feldn [ASC|DESC]

      Kannst du mir das näher erklären? Damit habe ich noch nie gearbeitet...
      Meine SQL-Tabellen erstelle ich immer PHPMYADMIN222.. ein einfacher genarator... SQL ist eher mit mir auf Kriegsfuß ;-)

      Es gibt da ein Feld... da kann mann SQL-Befehle eintragen ... da steht jetzt  z.b. schon drinnen:

      SELECT * FROM abeko WHERE 1

      Danke schonmal ...
      Liebe grüße
      Michi

      1. Hi Michi

        Kannst du mir das näher erklären? Damit habe ich noch nie gearbeitet...
        Meine SQL-Tabellen erstelle ich immer PHPMYADMIN222.. ein einfacher genarator... SQL ist eher mit mir auf Kriegsfuß ;-)

        Es gibt da ein Feld... da kann mann SQL-Befehle eintragen ... da steht jetzt  z.b. schon drinnen:

        SELECT * FROM abeko WHERE 1

        A) da steht sicher nicht abeko sondern 'abeko' (ja, auf den Unterschied kommt es an)

        B) WHERE 1 ist überflüssig, das entsteht durch dynamisch generierte Queries die Bedingungen einfacher angehängt werden können

        C) SQL wirst du wenigstens auf Anfängerniveau lernen müssen, wir können dir hier nicht jede Query vorlösen.

        Grundaufbau einer Query:

        SELECT liste aller felder die du brauchst (* ist zu vermeiden)
          FROM Tabelle aus der die Felder sind
          WHERE Bedingungen die eine Zeile erfüllen muss
          ORDER BY Felder nach denen sortiert werden soll

        Als Beispiel:

        SELECT plz, ort
          FROM tabelle
          WHERE plz > 0
            AND ort LIKE '%abc'
          ORDER BY plz, ort

        oder auch:

        SELECT plz, ort
          FROM tabelle
          ORDER BY plz, ort

        Weiteres zu SQL findest du auf http://www.mysql.com/doc/en/index.html genauer unter http://www.mysql.com/doc/en/Reference.html

        Ein einfaches Tutorial auf: http://www.little-idiot.de/mysql/

        Gruss Daniela

        --
        Nein, wir frieren unsere Hühner nicht auf Gletschern fest.
        Selfcode: sh:) fo:) ch:) rl:) br:> n4:| ie:{ mo:) va:) de:] zu:} fl:( ss:) ls:&
        1. Hallöle nochmal...

          Ja kein kleines bisschen habe ich ja ahnung... Anfänger :-((

          Aber ich möchte mich echt super fest bedanken... wäre nie auf die idee gekommen...

          klappt einwandfrei!!!  Vielen vielen DANK !!

          Michi

        2. Hallo Daniela,

          Meine SQL-Tabellen erstelle ich immer PHPMYADMIN222.. ein einfacher genarator... SQL ist eher mit mir auf Kriegsfuß ;-)

          @Michi:
          mit phpmyadmin kannst du auch auf-/absteigend sortieren lassen (allerdings nur nach einem Feld) - dafür musst du auf "Teilw. anzeigen" gehen

          SELECT * FROM abeko WHERE 1
          A) da steht sicher nicht abeko sondern 'abeko' (ja, auf den Unterschied kommt es an)

          doch, phpmyadmin produziert immer solch Backticks.

          Grüße aus Nürnberg
          Tobias

          --
          Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|
    2. Hi Michi

      ...und weil Deine Kundendatei ja wahrscheinlich mehr als 20-30 Kunden bekommen wird, schau Dir gleich noch "LIMIT n,m" an. Damit kannst Du dann ab einem Aufsetzpunkt (Offset) eine bestimmte Anzahl Sätze anzeigen. Das schöne ist, dass wenn das durch "order by" als erstes angesprochene Feld indiziert ist, die LIMITierung auch optimiert abläuft.

      Grüße

      Chris ()