Ich habe ein Problem mit meiner While Schleife. Nach meinem Verständnis müßte es so eigentlich funktionieren. Leider aber nicht.
O.K. ich habe 2 Tabellen. In der einen stehen Autoren mit ihren Daten und in der anderen eine Liste von Kategorien.
Ich möchte nun überprüfen welche Bilder in den Verzeichnissen liegen. Die Verzeichnisstruktur ist immer gleich. die *.bmp liegen in der Struktur /(Land)/(name des autors). Die Namen der Bilder sind in jedem Verzeichnis auch gleich. Ich überprüfe also jedes einzelne Bild ob es vorhanden ist, und wenn ja, dann schreibe ich in die Tabelle der Autoren für dieses Bild eine 1.
Ich hoffe das ist einigermaßen verständlich.
In meinem Beispiel habe ich 3 Autoren.
PHP-Code:
$model="_model_";
$x="_";
$e="e";
$sql = "SELECT * FROM icon";
$result_autor = mysql_query ($sql,$db) or mysql_die();
$sql = "SELECT * FROM einheiten";
$result_einheit = mysql_query ($sql,$db) or mysql_die();
while ($autor=mysql_fetch_object($result_autor))
{
Echo "Für $autor->name und Land $autor->land_deutsch<br>";
while($einheit=mysql_fetch_object($result_einheit))
{
$datei_name="icons/$autor->abk/$autor->verzeichnis/$autor->abk$model$einheit->kennung$x$einheit->einheit_nr.bmp";
if(file_exists($datei_name))
{
$aendern = "UPDATE icon SET $e$einheit->kennung$x$einheit->einheit_nr = 1 WHERE id = $autor->id";
echo $aendern;
$update = mysql_query($aendern);
$aendern = "UPDATE icon SET k$einheit->kennung = k$einheit->kennung+1 WHERE id = $autor->id";
echo $aendern;
$update = mysql_query($aendern);
}
}
}
Um zu kontrollieren was die Schleife denn macht habe ich Echo Ausgaben eingesetzt.
Die Ausgabe sieht folgendermaßen aus: (Abgekürzt)
Für cpack und Land Deutschland
...
2
2
3
3
11
11
11
UPDATE icon SET e12_0 = 1 WHERE id = 1
UPDATE icon SET e12_1 = 1 WHERE id = 1
UPDATE icon SET e21_2 = 1 WHERE id = 1
28
29
Für fatherdagon und Land Kanada
Für cpack44 und Land Kanada
Prinzipiell funktioniert das ja auch so. Das Problem ist, das die innere Schleife nur ein mal ausgeführt wird und nicht für jeden Durchlauf der äußeren. Das die äußere 3 mal durchläuft, ist an der Ausgabe zu sehen.
Nach meinem Verständnis müßte doch die äußere mit dem 1. Datensatz anfangen. Das macht sie ja auch. Die Befehle werden abgearbeitet. Kommt dann zur 2. Schleife und arbeitet diese ab. Das macht sie hier ja auch. Dann beginnt die äußere mit dem 2.Datensatz. O.K., das macht sie auch. Aber jetzt wird die innere nicht mehr ausgeführt.
Warum nicht ?
Wäre für hilfe seeeeehr dankbar...