Löschfunktion

Hallo, ich komme bei meinem Problem einfach nicht mehr weiter und brauche mal hilfe. In meinem selbst erstelltem CMS Adminmenü bekomme ich bei dem Menü, wo ich die Bilder sehen kann die Upgeloadet wurden, keine Löschfunktion hin. Ich habe schon sämtliche Varriationen ausprobiert.

<?php
$Pfad="ordner/upload";
$verz=opendir($Pfad);
if($verz){
while($datei=readdir($verz)){
if($datei!="." && $datei!=".."){echo"
<a href=\"ordner/upload/$datei\" target=\"_blank\"><img src=\"ordner/upload/$datei\" id=\"bife\" /></a>
<a href=\"loeschen($datei)\" style=\"color:red;\">x</a>";}}
function loeschen($datei){
if(unlink('$datei')) 
echo "Datei gelöscht!";
else echo"fehlgeschlagen";}}
?>

Ich hoffe, ihr könnt mir helfen. :hail:

Gebe folgende Zeichen weg die Rot markiert sind und probiere es. Falls noch immer ein Fehler auftritt würde viell. die Fehlermeldung helfen

[quote]

<?php $Pfad="ordner/upload"; $verz=opendir($Pfad); if($verz){ while($datei=readdir($verz)){ if($datei!="." && $datei!=".."){echo" x";}} function loeschen($datei){ if(unlink([color=#FF0000]'[/color]$datei[color=#FF0000]'[/color])) echo "Datei gelöscht!"; else echo"fehlgeschlagen";}} ?>[/quote]

Du kannst keine PHP-Funktion als Wert im href-Attribut verwenden.
Verweise auf eine Scriptdatei (oder auf die selbe) und übergebe
per GET/POST den Dateinamen.

Übrigens wird die id “bife” bei mehreren Bildern öfter vergeben -> invalides HTML

Den Dateinamen zu übergeben, ist riskant, sofern das Skript
allgemein zugänglich ist - auch sonst kann da leicht was
schiefgehen. Das verarbeitende Skript sollte da dann schon
irgendwie prüfen, daß es sich um eine Datei handelt, die auch
gelöscht werden darf.

Ich vermute auch mal, daß das Konzept noch nicht so ganz
klar ist. Man braucht eine Datei/Skript, wo die zu löschenden
Dateien aufgeführt sind, etwa ein Formular, wo man das
auswählen kann und das Formular losschicken - an ein weiteres
Skript, welches dann die Löschaktion durchführt. Das kann man
auch wieder in einem Skript vereinen, muß dann aber natürlich
irgendwie abfragen, ob das Formular gesendet wurde oder nur
die Liste erstellt werden soll.

Ich würde das in etwa so lösen:

<?php

//TODO: alle Dateien in array $files einlesen


//Wenn Anfrage gesendet:
if(isset($_POST['file']))
{
   if(isset($files[$_POST['file']))
      unlink($files[$_POST['file']):

  header("Location: ".$_SERVER['PHP_SELF']); //Datei neu laden
  exit;
}
else
{ ?>

<!-- HTML und so -->

<?php
   for($i=0; $i < count($files); $i++)
     ; //Dateien einlesen, value="$i" name jedoch der Dateiname
} ?>

<!-- Rest-HTML -->

Nur so als Grundbeispiel…der Sinn ist, dass nur Dateien gelöscht werden können, die im Array $files sind :wink:

Danke erst mal an alle für die Vorschläge. Da habe ich einiges zu probieren.
Nur noch zur Info, das Script ist eine einzelne Datei. die in die Index bei bedarf includet wird.
Und eine Fehlermeldung wird auch nicht ausgegeben. Nur 404 Seite.

Ein Beispielfoto ist hier:
[attachment=0]test.JPG[/attachment]

Das rote X stellt die Klickfunktion des Löschvorganges dar.

Ich habe alles probiert. Nichts klappt. :motz:
Es geht ja nicht mal die einfache Weise:

$Pfad="ordner/upload"; $verz=opendir($Pfad); if($verz){ while($datei=readdir($verz)){ if($datei!="." && $datei!=".."){echo" <a href=\"ordner/upload/$datei\" target=\"_blank\"><img src=\"ordner/upload/$datei\" /></a> <a href=\"?menue=upload&loeschen\" style=\"color:red;\">x</a>";}}; $loeschen=$_GET['loeschen']; $loeschen=unlink($datei);

Ich brauche dringend weitere Hilfe

Die wird wohl erst dann moeglich, wenn du dein Problem mal vernuenftig beschreibst - und nicht immer wieder nur mit “funzt nich”.

Sollte da nicht auch mindestens sowas stehen wie
href="?menue=upload&loeschen=$datei"
?
Ansonsten steht in dem GET-Parameter ja nichts drin, was
das Skript löschen könnte.

Also gut, dann werde ich es mal ausführlich erklären. Au dem obigen Bild werden alle von Usern hochgeladenen Dateien in einem kleinen Fenster aneinander gereiht. Neben jedem Bild befindet sich ein kleines x, welches zum klicken des löschvorganges sein soll. Aber genau dieses funktioniert leider nicht.
Das Script der angezeigten Bilder:

$Pfad="ordner/upload"; $verz=opendir($Pfad); if($verz){ while($datei=readdir($verz)){ if($datei!="." && $datei!=".."){echo" <a href=\"ordner/upload/$datei\" target=\"_blank\"><img src=\"ordner/upload/$datei\" /></a> <a href=\"?menue=upload&loeschen\" style=\"color:red;\">x</a>";}};

Wie baut man dort nun eine Löschfunktion ein, die auch nur dieses Bild löscht, welches kleine x gerade geklickt wurde, ein?

Ich hoffe, diese Erklärung war hilfreicher. :wink:

An @Hoffmann
Nach der ganzen probiererei habe ich so langsam den Überblick verloren.

Der $_GET Parameter wird doch schon über dieses hier benannt:

$loeschen=$_GET['loeschen']; $loeschen=unlink($datei);
Anscheinend aber auch falsch.

Was du willst, war schon klar.

Und hiermit wiederholst du dich schon wieder - und lieferst immer noch nicht mehr Informationen.

Lies mal das hier, das ist hier genauso anwendbar.

[quote=“sumatra70”]Der $_GET Parameter wird doch schon über dieses hier benannt:

$loeschen=$_GET['loeschen']; $loeschen=unlink($datei);
Anscheinend aber auch falsch.[/quote]

Wo soll denn ein Wert fuer den GET-Parameter loeschen herkommen, wenn du im Link nur

drin stehen hast?

Und wo soll der Wert von $datei herkommen?

Du solltest das ganze jetzt langsam mal etwas logischer angehen …

Und auf jeden Fall erst mal das error_reporting auf E_ALL stellen (informiere dich, wenn du nicht weisst, was das bedeutet), damit PHP dich auf Fehler auch hinweisen kann.

Dann lese dir diesen Thread mal von vorne durch. Ich glaube, somit werden deine Fragen schon von selbst beantwortet.
Es wird alles in dem Beispielscript deklariert.

Na dann kannst du uns ja mitteilen, was deine Kontrollausgabe des Inhaltes von $datei mittels echo ergibt …?

$Pfad=“ordner/upload”;
$verz=opendir($Pfad);
if($verz){
while($datei=readdir($verz)){
if($datei!="." && $datei!="…"){echo"
<a href=“ordner/upload/$datei” target="_blank"><img src=“ordner/upload/$datei” />
<a href="?menue=upload&loeschen" style=“color:red;”>x";}}

Oder muß $datei noch mal extra deklariert werden?
Und für eine richtige Fehlermeldung, muß erst mal eine richtige löschfunktion her.
Denke ich mal.

[quote]Und für eine richtige Fehlermeldung, muß erst mal eine richtige löschfunktion her.
Denke ich mal.[/quote]
Na dann denk mal so lange weiter, bis du einen Ansatz dafuer gefunden hast.

Soll das hier ein Rätselraten sein? Dann nehme ich mir lieber ein Kreutzworträtsel vor.

Soll das hier wir-schreiben-dem-Newbee-seine-Scripte-fertig werden?

Dass du die Datei mit unlink loeschen willst, weisst du ja schon.
Also schau zu, dass du den Dateinamen ordentlich uebergeben bekommst, so dass du ihn an der Stelle dann auch zur Verfuegung hast. Wenn du nicht weisst, wie das mit Links und GET-Parametern und so funktioniert - dann informiere dich; das sind absolute Basics.

Was bist du denn für ein Sumpfhuhn? Was denkst du, warum ich mich in diesem Forum melde? Nicht das mir jemand ein Script schreibt, sondern nur wegen einem Fehler des Scriptes. Ich werde dich mal daran erinnern, wenn du mal Hilfe hier anforderst, was du für sinnlose Mitteilungen verbreitest. Als wärst du doch schon ein Profi. Ich hoffe, man wird dir dann genau so helfen wie du mir.