Moin Moin,
Wo kommen diese Werte her? Doch wohl vermutlich aus einer Datenbankabfrage, die früher im Skript durchgeführt wurde. Warum machst du an dieser Stelle keinen JOIN der Dienstleistungs-ID auf den Dienstleistungsnamen? Weil deine Dienstleistungs-ID als kommaseparierte Liste und entgegen sämtlicher vernünftigerweise angwandten Normalisierungsregeln nicht als separate Tabelle angelegt ist - und das verursacht dir schon bei so einer simplen Aufgabe wie dem nachträglichen Zuordnen von ID zu Name Probleme.
Jede Medaille hat 2 Seiten: Mein Lösungsansatz für das Projekt sind 3 Tabellen:
1. Dienstleistungen -> mit d_id, d_nummer, d_name, sowie d_date wann angelegt
2. kunden -> mit k_id, k_name, k_vorname ... usw usw
3. termine -> mit t_id, t_k_id, t_d_id, sowie date ..
Jeder Kunde kann mehrere Termine mit unterschiedlichen Dienstleistungen haben. Diese Tabelle vergrößert sich also ständig, wobei sich Kunden viel weniger und Dienstleistungen fast gar nicht vergrößert. Um nicht jedemenge ellenlange Strings in der Tabelle Termine zu haben, trage ich dort also für jeden Termin lediglich die Kunden-ID, sowie die Dienstleistungs-ID's als String und das Datum ein. Das spart erheblich Platz, weil viel weniger Daten gspeichert werden müssen.
Ich habe das jetzt wie folgt gelöst:
function xyz($k_id) {
$query = "SELECT * FROM termine WHERE t_kunde = $k_id ORDER BY t_date ASC";
$num = mysql_num_rows($sql);
for($i=0; $i<$num; $i++) {
$daten = mysql_fetch_row($sql);
$row = explode(",", $daten[2]);
unset($data_dienst);
foreach($row as $r) {
$q1 = mysql_query("SELECT d_name FROM dienstleistung WHERE d_id = $r");
$data_dienst[] = mysql_result($q1, 0, "d_name");
}
$data_termine[] = array("t_id" => $daten[0], "t_kunde" => $daten[1], "t_dienstl" => implode(" / ", $data_dienst), "t_date" => $daten[3]);
}
unset($k_id);
return $data_termine;
}
Damit klappt es ganz gut. Dass das nicht der Weiheit letzter Schluss ist, darüber bin ich mir auch im klaren. :)
Danke für die Tipps.
MfG
Chris