Zu einer ID den passenden Datensatz in einer Schleife wiedergeben

Zero2000

Erfahrenes Mitglied
Hallo und sorry für den Titel,

ich habe zwei tabellen, einmal mitarbeiter und einmal abteilungen. Bei den Mitarbeitern wird zu der Abteilung nur die id gespeichert.
Wenn ich mir nun die Mitarbeiter in einer Liste ausgeben lassen möchte erhalte ich ja statt der lesbaren Abteilung z.B. Abteilung A nur die ID der Abteilung. Wie kann ich es erreichen das ich ohne das if else spielchen dennoch pro Mitarbeiter die richtige Abteilung angezeigt bekomme?

Ich habe schonmal die abteilungen in einem array $arrabid[] = $row1['abteilung']; und diese dann in der Liste der Mitarbeiter mit $arrabid[$abteilungen_id] angezeigt, aber, da das array ja mit 0 beginnt verschiebt es mir ja die Abteilungen um eins.
Ich kann das array zwar bei 1 beginnen lassen, aber sollte mal eine Abteilung gelöscht werden existiert ja die ID nicht mehr.

Wie kann ich das denn nun elegant lösen? Welchen Code benötigt Ihr von mir?
Wie gesagt die Abteilungen habe ich schon in einem array.

LG
Maik
 
Ich würde es vor dem PHP direkt in der Datenbankselektion mittels eines LEFT JOINS (nimm alle Zeilen aus Tabelle A und ergänze wo möglich aus Tabelle b) zusammensetzen.

SQL:
SELECT
    mit.*,
    -- Mitarbeitername übersetzen damit nachher bei der Auswahl klar ist um welchen Namen es sich handelt
    mit.name AS mitarbeitername,
    -- Feld mit dem Abteilungsnamen
    abt.name AS abteilungsname
FROM
    -- Mitarbeitertabelle
    tbl_mitarbeiter AS mit
    -- Abteilungstabelle
    LEFT JOIN tbl_abteilungen AS abt
        -- Hier die Verknüpfung der beiden Tabellen
        ON mit.abteilungen_id = abt.id

Und schon hast du den Namen der Abteilung in deinem mysql_fetch_assoc()-Rückgabearray mit drin.

Nach PHP umgesetzt
PHP:
$sql = "
SELECT
    mit.*,
    -- Mitarbeitername übersetzen damit nachher bei der Auswahl klar ist um welchen Namen es sich handelt
    mit.name AS mitarbeitername,
    -- Feld mit dem Abteilungsnamen
    abt.name AS abteilungsname
FROM
    -- Mitarbeitertabelle
    tbl_mitarbeiter AS mit
    -- Abteilungstabelle
    LEFT JOIN tbl_abteilungen AS abt
        -- Hier die Verknüpfung der beiden Tabellen
        ON mit.abteilungen_id = abt.id";

$result = mysql_query($sql);
while($row = mysql_fetch_assoc($result){
    echo "<p>Mitarbeiter: {$row['mitarbeitername']}";
    echo "<br />Mitarbeiter: {$row['abteilungsname']}</p>";
}

Das ganze natürlich noch auf deine Benamsungen anpassen
 
Zuletzt bearbeitet von einem Moderator:
vielen Dank, das hat geklappt.
Ich hatte vorher auch schon mit Left Join getestet aber wohl den falschen Ansatz gehabt.
 
Zurück