Zum Inhalt springen

unlink - Ausgabe einer MySQL Abfrage löschen


Empfohlene Beiträge

Hallo zusammen,

ich möchte beim löschen eines Objektes in meiner Datenbank die dazugehörigen Bilder löschen.

Wenn ich die Abfrage auf die Datenbank mache bzgl. der Pfade im Filesystem, werden Sie mir korrekt angezeigt.

... aber mit dem unlink nicht gelöscht!

Wenn ich den Pfad von Hand eintrage (siehe auskommentierte Zeile), wird die Datei gelöscht.

Ich bitte um Hilfe... ich gehe kaputt

"

$sql_pic_search = mysql_query($sql) or die("Anfrage nicht erfolgreich sql 1532");

while($overview_search_pic = mysql_fetch_array($sql_pic_search)){

$temp = $overview_search_pic['path'];

//$temp = "./upload/pics/big/23721206_carmel.jpg";

$temp = ".".$temp;

//echo $temp;

unlink($temp);

};

"

Danke

Christopher

Link zu diesem Kommentar
Auf anderen Seiten teilen

wenn du die datei löschen willst, brauchst du logischerweise CHMOD 777...

zum überprüfen ob vielleicht pfadtechnisch etwas nicht stimmt würde ich dir ein include($temp); empfehlen, wodurch du dann 100% sehen kannst, ob der pfad zur datei richtig ist, und somit auch gegeben ist, dass das bild auch gelöscht werden kann...due funktion unlink müsste eigentlich gehen...also schätze ich, dass du entweder nen falschen pfad hast oder nicht ausreichen rechte in dem ordner...

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo

so löscht er ja (SQL Auswertung aus, Variable $temp fest eingetragen):

$sql_pic_search = mysql_query($sql) or die("Anfrage nicht erfolgreich sql 1532");

while($overview_search_pic = mysql_fetch_array($sql_pic_search)){

//$temp = $overview_search_pic['path'];

$temp = "./upload/pics/big/23721206_carmel.jpg";

$temp = ".".$temp;

//echo $temp;

unlink($temp);

};

.. und der Pfad war ein Ergebinis query, den ich von Hand in den Code kopiert habe...

Über das echo konnte ich die Ausgabe auch immer überprüfen... der Pfad aus der Datenbank entsprach immer dem Format in dem Beispiel.

Link zu diesem Kommentar
Auf anderen Seiten teilen

das Beispiel beschreibt doch die Ausgabe eines Pfades aus eienr Datenbank. Das Resultat aus der DB ist immer ein Pfad, wie z.B.

./upload/pics/big/23721206_carmel.jpg

-> Dieses Bild hat es definitiv gegeben;

An welche Stelle soll das include? Und noch viel wichtiger: Was bezweckt es?

Danke

Link zu diesem Kommentar
Auf anderen Seiten teilen

$sql_pic_search = mysql_query($sql) or die("Anfrage nicht erfolgreich sql 1532");

while($overview_search_pic = mysql_fetch_array($sql_pic_search)){

//$temp = $overview_search_pic['path'];

$temp = "./upload/pics/big/23721206_carmel.jpg";

$temp = ".".$temp;

//echo $temp;

echo "<img src=".$temp.">";

//unlink($temp);

};

1. es kann sein, dass das bild nicht angezeigt wird...

1.1 das bedeutet, dass der pfad trotz allem nicht korrekt ist

2. das bild wird ausgegeben...

2.1 pfad ist richtig und die berechtigung um zu löschen fehlt

Link zu diesem Kommentar
Auf anderen Seiten teilen

Habe es gerade so probiert, wie Du beschrieben hast... und das in Etappen, damit die Frustration nicht zu gross wird.

Erstaml so, wie Du beschrieben hast (+ das exit):

while($overview_search_pic = mysql_fetch_array($sql_pic_search)){

//$temp = $overview_search_pic['path'];

$temp = "./upload/pics/big/23721206_carmel.jpg";

$temp = ".".$temp;

//echo $temp;

echo "<img src=".$temp.">";

exit;

//unlink($temp);

};

Das Bild war zusehen.. alles andere hätte mcih auch stark gewundert.

Dann habe ich das betroffene Verzeichnis von 755 auf 777 gestellt und wieder alles scharf geschaltet:

while($overview_search_pic = mysql_fetch_array($sql_pic_search)){

//$temp = $overview_search_pic['path'];

$temp = "./upload/pics/big/23721206_carmel.jpg";

$temp = ".".$temp;

//echo $temp;

echo "<img src=".$temp.">";

unlink($temp);

};

ER LÖSCHT DIE DATEI NICHT... ich könnte heulen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Der Code wird durch das exit unterbrochen und die Datei wird nicht weiter verarbeitet... aber wie Du schon sagst... ist egal

Die Datei habe ich nachdem Bild Upload in einem anderen Formular auf 777 gesetzt... war 644.

Keine Besserung!

Auch das wäre sehr merkwürdig gewesen, da die explizite Angabe des Pfades bisher immer zu einer Löschung geführt hat.

Ich werde heute Abend jede Zeile nocheinmal (ohne abgucken) neu schreiben.

Bin schon froh wenn Du sagst, das ich keinen Denkfehler gemacht habe und es an sich funktionieren müsste. Wenn ich den Fehler gefunden habe, poste ich den ... wenn jemand noch eine Idee haben sollte bin ich für jeden weiteren Tipp dankbar.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Userkommentar von http://de.php.net/unlink

...On unixoide systems you only need write permission for the directory to delete a file. The permissions of the file are nonrelevant.

You need file permissions if you want to change the file data or to read the data.

Hast du auf das Verzeichnis Rechte?

Sagt die error_log irgendwas?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Bei meinem Provider mit dem & in der Mitte kann ich keine logs finden, die von Relevanz wären (wie z.B. die php_error.log beim Apache). Nur Aktueller Zugriff und Statistiken.

Die PHP Fehler kann ich wohl nicht einsehen. Oder liegen die nicht per default in ./logs ???

Auf das Verzeichnis Rechte? Klar 777... aber wie gesagt... wenn ich den Pfad angebe löscht er auch... die Berechtigungsschiene ist in meinen Augen nicht der richtige Ansatzpunkt... lasse mich aber gerne belehren!

Link zu diesem Kommentar
Auf anderen Seiten teilen

also haste net genau gemacht, was du solltest

while($overview_search_pic = mysql_fetch_array($sql_pic_search)){

$temp = $overview_search_pic['path'];

$temp = ".".$temp;

echo "<img src=".$temp.">";

exit;

unlink($temp);

};

mach das mal so und sag mir bitte, ob da ein bild angezeigt wird oder nicht

Link zu diesem Kommentar
Auf anderen Seiten teilen

habe ich genauso gemacht... Bild war da!

Guck mal in meinen ersten Post... da heb ich auch schon immer als Kommentar den Pfad drin gehabt. Das war zu Testzwecke, ob überhaubt gelöscht wird.

Dein Beispiel habe ich genau so übernommen, wie Du es gepostet hast.

Bild ist da... aber gelöscht wird nicht

Link zu diesem Kommentar
Auf anderen Seiten teilen

while($overview_search_pic = mysql_fetch_array($sql_pic_search)){

$temp = $overview_search_pic['path'];

$temp = "'.".$temp."'";

unlink($temp);

}

jetzt hab ich noch eine kleine formalität geändert..könntest du auch nochmal probieren und wenns dann nicht geht, bin ich leider hier auf der arbeit überfragt.

Mfg Sven

Link zu diesem Kommentar
Auf anderen Seiten teilen

Tausend Dank für Deine Hilfe....

habe es genauso in den Code hinzugefügt. Die Sau löscht nicht... habe es nochmal mit einem anderen FTP Client überprüft, ob die Datei vielleicht im Cache liegt und ein Darstellungsproblem vorliegt.... leider auch nicht.

Die Bilder bzw. das Bild wird nicht gelöscht.

Habe auch das Bild nochmal anzeigen lassen (echo "<img src=".$temp.">";)... das geht!

Berechtigungen nochmal auf 777 gesetzt.

Ich verstehe das nicht mehr.

Link zu diesem Kommentar
Auf anderen Seiten teilen

while($overview_search_pic = mysql_fetch_array($sql_pic_search)){

$temp = $overview_search_pic['path'];

echo "Temp: ".$temp."<br>";

$temp = "'.".$temp."'";

if(unlink($temp)) {

echo "Die Datei wurde erfolgreich gelöscht";

}else{

echo "Die Datei konnte nicht gelöscht werden";

}

}

wenn du das so noch machst, kannst du dir vom programm sagen lassen, ob die datei gelöscht wurde oder nicht...vielleicht löscht er sie ja nur du siehst es nicht...bin so verzweifelt, dass ich sogar sowas einbauen würde^^

und schreib mir mal bitte, was da steht bei Temp: ...

Link zu diesem Kommentar
Auf anderen Seiten teilen

muss jetzt leider weg

habe das auf die schnelle probiert (der ganze code steht vor dem ersten html...das heisst ein echo geht da nicht) und habe die ausgaben in einer variablen gespeichert... so wie ich das gesehen habe kommt gar nichts zurück... aber ich test das nochmal...

danke für den tipp... ich denke das ich so zur lösung komme.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Der Datensatz aus der Datenbank lautet:

./Verzeichnisname/bild.jpg

Ich hatte eigentlich immer gedacht das das bei einem ./ dann automatisch vom root aus gesucht wird... hat der Provider anscheinend anders eingestellt (oder ich habe falsch gedacht).

demnach ergibt dieses "temp" konstrukt:

../Verzeichnisname/bild.jpg

-> Und wie schon oben erwähnt... das bild wird angezeigt... an dem Pfad liegt es meiner Ansicht nach also nicht...

Bin noch nicht zum testen gekommen, was die boolsche Abfrage von ShadowmanZ an geht...

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...