Einzelnen Beitrag anzeigen
  #1  
Alt 13.08.2009, 21:49:30
Auf der Mauer Auf der Mauer ist offline
Anfänger
 
Registriert seit: Jun 2009
Alter: 42
Beiträge: 119
Löschfunktion geht nur teilweise

Hallo,

ich habe mir für meinen privaten Mitgliedsbereich eine Funktion gebastelt, mit der ich Bilder sowohl löschen als auch editieren kann. Vorraussetzung dafür ist das die Checkboxen unter den Bilder aktiviert sind. Ich lasse 4 Bilder pro Seite anzeigen und max. 4 Bilder sollen gleichzeitig gelöscht bzw. bearbeitet werden können.

Die Nummern (der markierten Bilder) werden durch eine Variabel in das Valuefeld der Checkbox gesetzt. Das ganze wird in einem Array übergeben.

PHP-Code:
echo "<td><a href= '$row->Bild' target='pic_haupt'><img class='rand' src='$row->Thumb' title='$row->Beschreibung' width=126 height=126 border=0></a><br><br><input type='checkbox' name='delete[]' value='$row->Nummer'> löschen | bearbeiten<br></td>"
Unter den Bilder habe ich eine Dropdownliste gesetzt in der man entweder löschen auswählt oder bearbeiten. Jetzt ging es noch darum eine Funktion zu schreiben durch welche die jeweilige php Datei ausgeführt wird.

Ich habe es so gelöst: (verteiler.php)

PHP-Code:
<?php
ob_start
();
if (
$_POST["Bearbeiten"] == löschen)
{
include 
"delete.php";
}
else
{
include 
"edit.php";
}
ob_end_flush();
?>
Dadurch das nur zwei Funktionen (löschen und bearbeiten) zur Auswahl stehen reicht es ja abzufragen ob die erste ausgewählt ist. Wenn nicht dann muss es die zweite sein. Hier wird dann entweder die delete.php oder die edit.php ausgeführt.

In der delete.php wird neben dem Vorschaubild und dem großen Bild auch der dazugehörige Eintrag aus der MySqL Tabelle gelöscht.

Hier brauche ich unbedingt noch Hilfe. Laut meiner Bastelei ist es egal ob 1 Bild oder 4 Bilder markiert sind. Meine Links löschen und wenn keine Nummer enthalten ist dann kann nichts gelöscht werden. Das würde auch zu einer Fehlermeldung führen das es keine Bilder mit dieser Nummer gibt wäre da nicht die Weiterleitung. Der Fehler wird also nicht ausgegeben. Ich hätte das gerne irgendiwe sauberer. Ersteinmal das Array untersuchen wieviele Nummern zwischen (1 und 4) es enthällt.

Hier mal der Code zur delete.php.
re_ sind die großen Bilder und th_ die kleinen.
Der Dateiname ist eine Nummer und die ist bei beiden identisch nur der Präfix ist ein anderer.

PHP-Code:
<?php

//Pfad zum Bilderordner
  
$path "/users/xxx/www/Bilder";
  
//Array mit den zu löschenden Dateinummern
$Bild $_POST['delete'];

//Datei vom Server löschen

  
unlink ("$path/re_$Bild[0].jpg");
  
unlink ("$path/re_$Bild[1].jpg");
  
unlink ("$path/re_$Bild[2].jpg");
  
unlink ("$path/re_$Bild[3].jpg");
  
unlink ("$path/th_$Bild[0].jpg");
  
unlink ("$path/th_$Bild[1].jpg");
  
unlink ("$path/th_$Bild[2].jpg");
  
unlink ("$path/th_$Bild[3].jpg");

//SessionID Wichtig für Wiederaufnahme der Session bei Weiterleitung  
  
$SESSID $_POST['PHPSESSID'];
  
//Verbindung zur Datenbank herstellen  
  
include 'connect.php';
   
//Löschen der passenden Datensätze aus MySql Tabelle   
  
$loeschen "DELETE FROM BildDB WHERE Nummer IN ('$Bild[0]','$Bild[1]','$Bild[2]','$Bild[3]')";
  
$loeschen mysql_query($loeschen);

//Weiterleitung zum privaten Memberbereich
  
header("Location:http://xxx.net/memberbereich.php?PHPSESSID=$SESSID");

?>
Eigentlich funktioniert alles aber eben nur eigentlich. Beim löschen wird zum Beispiel nur das kleine Bild gelöscht das große bleibt im Ordner. Allerdings auch nur wenn nur 1 Bild zum löschen markiert wurde. Wenn zwei Bilder zum löschen markiert werden dann wird von dem zweiten sowohl das kleine als auch das große Bild gelöscht. Das gleiche gilt auch für 3 markierte Bilder. Dann werden 2 komplett gelöscht und 1 bleibt übrig. Manchmal bleibt auch der Eintrag in der My SQL Tabelle stehen und manchmal klappt es ohne Probleme.

Gestern hatte ich die delete.php gleich durch den submit Button ausgelöst da gab es garkeine Probleme beim löschen. Jetzt habe ich nur die verteiler.php eingebaut jetzt hakt es beim löschen. Aber irgendwie funktioniert es schon sporadisch.

Der Code wurde ja gepostet, kann mir jemand sagen wo der Fehler liegt?

Gruß
René
Mit Zitat antworten