PHP+MYSQL; ausgabe sortieren nach 2 Feldern, Priorität
Michi
- php
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
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
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
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
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
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 nichtabeko
sondern 'abeko' (ja, auf den Unterschied kommt es an)
doch, phpmyadmin produziert immer solch Backticks.
Grüße aus Nürnberg
Tobias
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 ()