Hallo Hannes,
auch wenn das Problem bereits gelöst ist, neben den bereits erwähnten Dingen noch ein paar Hinweise/Tipps:
$result_1 = mysqli_query($connect, "SELECT uploadfiles, uploadpics FROM ".$dbtable." WHERE id = '".$_GET['id']."' " );
Das was du hier machst ist gefährlich: du darfst Daten nicht einfach so in einen Query einbauen, du handelst dir damit eine SQL-Injection-Lücke ein. Ein »1' or '1« in $_GET['id']
führt dann zur Bedingung »WHERE id = '1' or '1'«, womit der Query alle Datensätze liefert. Dadurch dass du mysqli_fetch_array nur einmal aufrufst würde zwar immer noch nur ein Datensatz (bzw. die Bilder dazu) gelöscht – wenn auch u.U. der falsche Datensatz. Du musst Kontextwechsel immer behandeln, ich würde prepared Statements in Verbindung mit PDO empfehlen (siehe Link).
Außerdem: Aktionen die Daten verändern bzw. löschen sollten immer per POST-Request aufgerufen werden, nie per GET-Request wie das bei dir der Fall ist, siehe Wiki.
//Teilt den String (Trennstelle: Komma-Zeichen) und erstellt ein Array $docs = explode(',',$uploadfiles); $pics = explode(',',$uploadpics);
Dein Datenbankdesign scheint mir nicht in Ordnung zu sein, ein Datensatz sollte nur einen Wert enthalten – beschäftige dich mit dem Thema Normalisierung.
foreach($docs as $value_docs){ if(!empty($value_docs)){ if (!unlink($dir.$value_docs)){ echo "…
Ein Tipp am Rande: Code ist besser lesbar wenn er möglichst wenig eingerückt wird (und die Zeilen nicht zu lang sind). Hier lässt sich das umsetzen indem du die beiden Bedingungen zusammenfasst oder sie umdrehst und mit continue
arbeitest:
foreach($docs as $value_docs){
if(empty($value_docs) or unlink($dir.$value_docs)){
continue;
}
echo "…";
}
<td>Dokument […] konnte nicht gelöscht werden!</td>
Es gibt keinen Grund mehr Umlaute zu verstümmeln, schreibe sie einfach direkt hin – immer und überall mit UTF-8 zu arbeiten sollte inzwischen selbstverständlich sein.
?>
Wenn nicht noch HTML ausgegeben werden soll wird empfohlen das ?> weg zu lassen – damit verhinderst du Probleme mit versehentlich ausgegebenen Leerzeichen/Zeilenumbrüchen.
Gruß
Tobias