# Daten aus MySQL sortieren und ausgeben



## Willi2828 (14. Mai 2007)

Ich möchte Daten basierend auf einer MySQL-Datei sortieren und auf den Bildschirm ausgeben. Sinnvollerweise also erstmal alle Daten in ein Array einlesen um diese hier auszuwerten.
Vermutlich (ich bin noch PHP-Beginner) alles nicht sooo problematisch. Aber ich ich möchte nicht "nur" nach einem Merkmal oder zweien sortieren sondern möglichst variabel bleiben.

*Beispiel:* Eine Datei umfasst viele Menschen - von jenen weiß ich Geschlecht (m/w) - Alter (0-100) - Wohnort (PLZ) - eine Qualität (z.B.Beliebtheit / 1-10), Haarfarbe (schwarz, blond...), Augenfarbe (...), und einige andere Atribute.

Mein Problem --> die Menschen auf meiner HP möchten z.B. als Ausgabe:

alle männlichen, zwischen 5 und 35 Jahren, in Berlin wohnend, Haarfarbe egal, Augenfarbe grün.

Das nächste Mal sollen Sie z.B aber auch anklicken können alle mit den Atributen:

Geschlecht egal, Alter nur 45 Jahre und 81 Jahre, Wohnort Hamburg, Haarfarbe egal, Augenfarbe alles außer braun usw.

Das heißt ich habe eine Auswahlmaske auf meiner HP die wiederum die Sortieroptionen und damit selbstredend auch die Ausgabe bestimmen soll.

Eine Routine zu schreiben um den Datensatz nach einem oder auch zwei vorgegebenen Kriterien sortiert stellt kein Problem dar - aber ich kann ja schlecht für jeden einzelnen Fall eine Routine schreiben.

Wenn mir jemand vielleicht ein Beispiel-Script zugänglich machen würde, welches ich dann anpassen könnte wäre ich überaus dankbar - ich werde ja wohl hoffnungsweise nicht der erste sein, der ein derartiges Problem hat.


----------



## lmarkus31 (14. Mai 2007)

Hallo,

ich gehe mal davon aus, dass du mit MySQL-Datei eine Datenbank-Tabelle meinst.

Durch die Kombination von php und MySQL hast du viele Möglichkeiten, deine Anforderung umzusetzen. Im Normalfall solltest du das Selektieren und Sortieren so weit es geht der Datenbank überlassen.

Selektion erreichst du mit geeigneten WHERE-Klauseln bspw.


```
SELECT * 
  FROM menschen
 WHERE geschlecht='M'
   AND age BETWEEN 5 AND 35
   AND ort = 'Berlin'
   AND augenfarbe='gruen'
 ORDER BY ....
```

Dies entspricht deinem 1.Fall.

Da du ja nicht alle Kriterien in deiner Abfrage vorher kennst, muss du prüfen, welche Kriterien der Benutzer ausgewählt hat und daraus beispielsweise eine dynamische WHERE-Klausel zusammenbauen.


```
if ($geschlecht ....) 
   $where_bedingung = $where_bedingung . " AND geschlecht = " . $geschlecht;

if ($alter_von && $alter_bis ....)
   $where_bedingung = $where_bedingung . " AND age BETWEEN " .$alter_von . " AND " . $alter_bis;


// nun alle passenden Menschen suchen:
$result = mysql_query("select * from menschen WHERE ' . $where_bedingung .' ORDER BY age DESC");
```

nicht getestet, ist aber auch nur um dir zu zeigen, wie du das ganze dynamisch prüfen kannst. Wie zu den Variablen kommst, hängt von deiner PHP-Konfiguration ab. Die genaue Syntax hab ich grad nicht im Kopf - üblich sind POST-Variablen über das POST-Array.

Markus


----------

