Hallo,
ich hab ein Problem, und zwar hab ich mir vor einiger Zeit ein Archiv erstellt um meine MP3 zu archivieren. Zu der Zeit bestand das ganze aus einer einzigen Tabelle, nun hab ich die Datenbank optimiert und mehrere Tabellen gemacht um Inkonsistenzen zu vermeiden.
Wollte das nach Möglichkeit in einem Durchlauf über die Bühne bringen, doch da liegt das Problem.
Es geht hier um die Tabellen 'daten' und 'interpret'.
In der Tabellen sollen über die interpreten_id miteinander verknüpft werden.
Dazu muß ich alle Interpreten denen in der Tabelle 'daten' noch keine 'interpret_id' zugewiesen ist eine zuweisen bzw. erst in die Tabelle 'interpret' eintragen und dann entsprechend in der Tabelle 'daten' updaten.
Die Spalte 'interpret' in der Tabelle 'daten' ist dann überflüssig und kann dann ja gelöscht werden.
In die Tabelle 'interpret' wird auch der jeweils nächte Interpret mit 'interpret_id=0' geschrieben, jedoch dann kommt nix mehr.
Irgendwo hab ich einen Fehler oder hab mich verrennt.
zur sicherheit hab ich die erste Abfrge mit LIMI 1 gemacht....
SQL-Fehler werden keine ausgegeben.
Hier der entsprechende Code:
PHP-Code:
$result=mysql_query("SELECT DISTINCT interpret FROM daten WHERE interpret_id = 0 LIMIT 1 ", $db);
if (!$result) {echo mysql_error($db);}
while($update = mysql_fetch_assoc($result)) {
$interpret = $update['interpret'];
$i_update=mysql_query("INSERT INTO interpret SET interpret='{$update['interpret']}'", $db);
if (!$i_update) {echo mysql_error($db);}
$i_abfrage=mysql_query("SELECT interpret_id, interpret FROM interpret WHERE interpret='$interpret' ", $db);
if (!$i_abfrage) {echo mysql_error($db);}
if (mysql_num_rows($i_abfrage)>0) {
$i_result = mysql_fetch_array($i_abfrage);
$i_interpret = $i_result['interpret'];
$i_interpret_id = $i_result['interpret_id'];
}
else {
echo 'es wurde keine Interpreten in der Tabelle Interpret gefunden oder gesucht';
}
$d_update=mysql_query("UPDATE daten SET interpret_id=$i_interpret_id WHERE interpret='$i_interpret' ");
if (!$d_update) {echo mysql_error($db);}
$d_abfrage=mysql_query("SELECT DISTINCT interpret_id, interpret FROM daten WHERE interpret_id={$i_result['interpret_id']}", $db);
if (!$d_abfrage) {echo mysql_error($db);}
if (mysql_num_rows($d_abfrage)>0) {
$d_result = mysql_fetch_array($i_abfrage);
$d_interpret = $d_result['interpret'];
$d_interpret_id = $d_result['interpret_id'];
}
else {
echo 'es wurde keine Interpreten in der Tabelle Daten gefunden oder gesucht';
}
echo "<tr>";
echo "<td width=\"5%\">$i_interpret_id</td>";
echo "<td width=\"15%\">$i_interpret</td>";
echo "<td width=\"10%\">$d_interpret_id</td>";
echo "<td width=\"20%\">$d_interpret</td>";
echo "</tr>";
}
; break;
}
?>
Gruß
Alex