hi,
ich arbeite gerade an einem Uploadtool und irgendwie bekomme ich mein Löschenscript nicht hin!
Erstmal habe ich 2 datenbanktabellen.
Eine für die Ordner:
Eine für die Dateien:
Die ordner können verschachtelt werden. id_folder ist der Premiärkey und folder_id in welchem ordner sich dieser Ordner befindet
Bei den Dateien ist es so dass id_folder der Ordner ist wo sich die Datei befindet. Alle mit Betreff sind Kathegorien und die ohne sind die Dateien dazu! (siehe zuordnung)
Nun will ich mit einem Klick den Hauptordner löschen und alle Unterordner und deren Dateien sollen auch verschwinden! Also "F1" ist der Oberste Ordner mit der ID 1
die anderen sind Unterordner.
Nun zu meinem Script. Dazu will ich nicht mehr viel sagen denn die Bemerkungen sprechen für sich denke ich mal.
Nur eines noch: der $count soll später verschwinden den habe ich nur drin weil das script sonst unendlich laufen würde da es ja nicht funktioniert ^^
Resultat wenn ich es ausführe: Der Ordner F1 wird gelöscht der rest bleibt!
Wenn das script gestartet wird steht in $del eine 1 also der Ordner "F1"
Hier das script:
Ich bedanke mich schonmal! Komme echt nicht mehr weiter
ich arbeite gerade an einem Uploadtool und irgendwie bekomme ich mein Löschenscript nicht hin!
Erstmal habe ich 2 datenbanktabellen.
Eine für die Ordner:
Eine für die Dateien:
Die ordner können verschachtelt werden. id_folder ist der Premiärkey und folder_id in welchem ordner sich dieser Ordner befindet
Bei den Dateien ist es so dass id_folder der Ordner ist wo sich die Datei befindet. Alle mit Betreff sind Kathegorien und die ohne sind die Dateien dazu! (siehe zuordnung)
Nun will ich mit einem Klick den Hauptordner löschen und alle Unterordner und deren Dateien sollen auch verschwinden! Also "F1" ist der Oberste Ordner mit der ID 1
die anderen sind Unterordner.
Nun zu meinem Script. Dazu will ich nicht mehr viel sagen denn die Bemerkungen sprechen für sich denke ich mal.
Nur eines noch: der $count soll später verschwinden den habe ich nur drin weil das script sonst unendlich laufen würde da es ja nicht funktioniert ^^
Resultat wenn ich es ausführe: Der Ordner F1 wird gelöscht der rest bleibt!
Wenn das script gestartet wird steht in $del eine 1 also der Ordner "F1"
Hier das script:
PHP:
if(isset($del)){
$i=1;
$count=1;
//Arrays
$del_folder=array(); //Löschenarray der Ordner
$folder=array(); //Verlaufsarray
$del_file=array(); //Löschenarray der Dateien
$folder[]=$del; //Verlaufsarray füllen
while($i>0){
//Durchgang 1: Ersten Ordner in Löschenarray
//Durchgang 2: Ordner des Verlaufsarray in den Löschenarray
foreach($folder as $fol1){
$del_folder[]=$fol1;
}
//Durchgang 1: Kathegorien und deren Dateien, vom ersten Ordner in den Löschenarray
//Durchgang 2: Kathegorien und deren Dateien, aus dem Verlaufsarray in den Löschenarray
foreach($folder as $fol2){
$anfrage_fi1=mysql_query("SELECT * FROM $_db_files WHERE id_folder='$fol2'");
while($row_fi1=mysql_fetch_array($anfrage_fi1)){
$del_file[]=$row_fi1['id_file'];
$anfrage_fi2=mysql_query("SELECT * FROM $_db_files WHERE zuordnung='".$row_fi1['id_file']."'");
while($row_fi2=mysql_fetch_array($anfrage_fi2)){
$del_file[]=$row_fi2['id_file'];
}
}
}
//Durchgang 1: Verlaufsarray leeren und die Unterordner des ersten Ordners in den Verlaufarray
//Durchgang 2: Verlaufsarray leeren und weitere Unterordner in den Verlaufsarray legen
$folder2=$folder;
$folder=array();
foreach($folder2 as $fol1){
//$folder=array();
$anfrage_fo3=mysql_query("SELECT * FROM $_db_folder WHERE folder_id='$fol3'");
while($row_fo3=mysql_fetch_array($anfrage_fo3)){
$folder[]=$row_fo3['id_folder'];
}
}
$count++;
if(empty($folder) || $count==10){
$i=0;
}
}
foreach($del_folder as $dfo){
mysql_query("DELETE FROM $_db_folder WHERE id_folder='$dfo'");
}
foreach($del_files as $dfi){
$anfrage_fi3=mysql_query("SELECT * FROM $_db_files WHERE id_file='$dfi'");
while($row_fi3=mysql_fetch_array($anfrage_fi3)){
$anfrage_fi4=mysql_query("SELECT * FROM $_db_files WHERE zuordnung='".$row_fi3['id_file']."'");
while($row_fi4=mysql_fetch_array($anfrage_fi4)){
@unlink("../upload/".$row_fi4['id_file']."_".$row_fi4['filename']);
mysql_query("DELETE FROM $_db_files WHERE id_file='".$row_fi4['id_file']."'");
}
mysql_query("DELETE FROM $_db_files WHERE id_file='".$row_fi3['id_file']."'");
}
}
}
Ich bedanke mich schonmal! Komme echt nicht mehr weiter