In einem PHP SELECT bestimmte Inhalte filtern

FlorianR

Erfahrenes Mitglied
Hallo Zusammen,

ich habe eine Frage an euch. Ich habe eine kleine MySQL Tabelle mit ein paar Personendaten. Z.B. Name, Alter etc. Außerdem gibt es ein Status Feld in dieser Tabelle. Ein Benutzer kann mehrere Zuordnungen bekommen. Diese Zuordnungen werden dann in folgender Form gepspeichert:

Name | Status
Hans | 1
Fritz | 1,2
Peter | 3,4
Susi | 2,4
etc.

Für den Status selbst gibt es noch eine Tabelle mit der ID (die der Zuweisung in der Personentabelle entsprechen wird) und dem dazugehörigen Namen.

Mein größtes Problem ist, den Status (der durch ein Komma getrennt ist) zu filtern und nach dem Select auszugeben.

Beispiel:

Es soll eine Seite erstellt werden, wo nur Benutzer eines bestimmten Status angezeigt werden. Wie kann ich das mit meinen Tabellen realisieren? Oder ist mein Ansatz vollkommen verkehrt?

Ich bin gespannt auf eure Antworten und danke im Voraus.

Florian
 
Bei deiner Tabellenstrukur, musst du für jeden User sowas machen:
PHP:
$status = explode( ',', $row['status'] );
Dadurch hast du dann ein Array $status, mit allen Werten.

Ich würde aber eher eine extra Tabelle erstellen:
Code:
Userid | Status
1 | 1 // Hans
2 | 1 // Fritz
2 | 2 // Fritz
3 | 3 // Peter
3 | 4 // Peter
4 | 2 // Susi
4 | 4 // Susi
 
Das nennt sich dann "Normalisierung" und ist der trick bei relationalen Datenbanken ;-)

Das ist wirklich wichtig - vor allem wenn man größere Datnebanken mit vielen Daten hat. Da kommst Du sonst ganz schnell in Inkonsistenzen oder massive Redundanzen.
 
Zurück