Mehrere Dateien mittels unlink() löschen

latinum_1982

Erfahrenes Mitglied
ich hab das was zusammen geschrieben
zu testen hab ich 2 fotos hochgeladen und es löscht mir nur einen
für das proglem hab ich keine lösung gefunden :(

PHP:
	$sql = 'SELECT photo FROM photos WHERE album_id = ?';
    $stmt = $db->prepare($sql);
	$stmt->bind_param('i', $_POST['id']);
	$stmt->execute();
	$stmt->bind_result($photo);
		while($stmt->fetch()) {
		
				$pfad = '../fotos/';
				if (!unlink($pfad.$photo))
						  {
							return false;
						  }
					else
						  {
							echo 'ALLE FOTO GELÖSCHT';
							
							return true;
							
					}
        }

angestreuert mit Jquery
 
Das Problem ist wo du die Variable $photo hernimmst.
Die setzt du wahrscheinlich nur einmal außerhalb der Schleife. Und wenn schon veränderst du sie auch nicht.

Und bitte achte auf Rechtschreibung ;)
 
Er arbeitet mit MySQLi und bind_result. Da wird bei jedem Schleifendurchlauf $photo neu gesetzt ;-)

Dein Problem ist viel einfacher zu finden: Du gehst auf jeden Fall direkt nach dem ersten Durchlauf aus der Funktion raus, jeder der Code-Blöcke in der if-else hat ein return-Statement. Versuch es mal so:

PHP:
    $sql = 'SELECT photo FROM photos WHERE album_id = ?';
    $stmt = $db->prepare($sql);
    $stmt->bind_param('i', $_POST['id']);
    $stmt->execute();
    $stmt->bind_result($photo);
        $pfad = '../fotos/';
        $alle_geloescht = true;
        while($stmt->fetch()) {
        
                if (!unlink($pfad.$photo))
                          {
                            $alle_geloescht = false;
                          }
        }
        // Ein guter Programmierer räumt auch seine Objekte auf...
        $stmt->close();
        return $alle_geloescht;
 
Zurück