Hallo
danke erstmal für die tipps. habs verscuht umzusetzen.
jetzt wird das skript zumindest wieder bis auf das löschen der datei durchgeführt.
hier der aktuelle code:
mysql_query("DELETE FROM funtstuecke WHERE id=".$_GET['id']);
$abfrage = 'SELECT img FROM funtstuecke WHERE ID=".mysql_real_escape_string($_GET["id"])." LIMIT 1';
$ergebnis = mysql_query($abfrage);{
unlink("img/url_img/".$row->img);
}
Warum erwartest du, den Namen des Bildes auslesen zu können, wenn du \*vorher\* den Datensatz, in dem der Name des Bildes steht, gelöscht hast? Nochmal (es wurde ja schon mehrfach gesagt): Lese den Dateinamen des Bildes \*als erstes\* aus der Tabelle.
Wenn's nach mir ginge würde der weitere Ablauf so aussehen: Du hast den Bildnamen in einer Variable, nun löschst du den Datensatz aus der DB, prüfst, ob das geklappt hat und löschst nun als letztes das zum Datensatz gehörige Bild (Name in der Variable).
Übrigens, kannst du, um den Heckmeck mit den Verzeichnistiefen zu umgehen, mit den absoluten Pfaden im Dateisystem des Servers arbeiten. $\_SERVER["DOCUMENT\_ROOT"] liefert dir den Pfad zum Wurzelverzeichnis deiner Domain. Steht in der Datenbank der vollständige Pfad \*innerhalb\* der Domain, kannst du beide Angaben kombinieren und landest von überall in der Domain bei der richtigen Datei.
Beispiel:
~~~php
// absoluter Pfad zum Wurzelverzeichnis der Domain
$_SERVER["DOCUMENT_ROOT"] = "/var/www/html/domainname";
// Pfad zu einer Datei, wie er in der DB eingetragen wird
$bild = "/grafik/fotos/foto34.jpg";
// Diese Notation ist auch bei der Angabe als Source im <img> von Vorteil,
// da auch im HTTP-Bereich somit das Anpassen der verzeichnistiefen wegfällt.
$ganzer_pfad = $_SERVER["DOCUMENT_ROOT"].$bild;
// ergibt: /var/www/html/domainname/grafik/fotos/foto34.jpg
?>
<?php
header("location:admin/intern.php");?>
Das Schließen und wieder Öffnen der PHP-Blöcke dürfte die Headeranweisung entschärfen (Meldung: "[... Headers already sent ...](http://www.google.de/search?hl=de&q=Headers+already+sent)"). Irgendein Zeichen, das an den Browser gesendet wird, bedingt, dass die Sendemöglichkeit für Header abgeschlossen ist. Zudem muss ein Locationheader eine \*vollständige URI\* enthalten. Das heißt, der Header müsste so notiert werden: "location:http://example.com/admin/intern.php".
> wie kann ich das GET denn entschärfen?
Prüfe vor der Benutzung, ob $\_GET['id'] eine Integerzahl ist ([is_int](http://de3.php.net/is_int)).
Tschö, Auge
--
Verschiedene Glocken läuteten in der Stadt, und jede von ihnen vertrat eine ganz persönliche Meinung darüber, wann es Mitternacht war.
Terry Pratchett, "Wachen! Wachen!"
[Veranstaltungsdatenbank Vdb 0.3](http://termindbase.auge8472.de/)