SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

TYPO3 Kochbuch

TYPO3 Kochbuch zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP Grundlagen
Hilfe Community Kalender Heutige Beiträge Suchen

PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden

Antwort
 
Themen-Optionen Ansicht
  #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
  #2  
Alt 14.08.2009, 08:32:51
Benutzerbild von vt1816
vt1816 vt1816 ist offline
Administrator
 
Registriert seit: Jul 2004
Beiträge: 3.707
AW: Löschfunktion geht nur teilweise

Wenn noch nicht erfolgt, schalte das Error-Reporting an/höher und verwende mysql_error().

Wieso versuchst Du immer alle Bilder zu löschen - auch wenn nur ein Bild markiert ist?
__________________
Gruss vt1816
Erwarte nicht, dass sich jemand mehr Mühe mit der Antwort gibt als Du Dir mit der Frage.
. . . . . Feedback wäre wünschenswert

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.
Ansosnten gilt: Hilfe ausserhalb dieses Thread (PN, WhatsApp, Skype, Mail, ICQ, etc...) nur per Barzahlung oder Vorauskasse!

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #3  
Alt 14.08.2009, 09:27:28
Auf der Mauer Auf der Mauer ist offline
Anfänger
 
Registriert seit: Jun 2009
Alter: 42
Beiträge: 119
AW: Löschfunktion geht nur teilweise

Zitat:
Zitat von vt1816 Beitrag anzeigen
Wieso versuchst Du immer alle Bilder zu löschen - auch wenn nur ein Bild markiert ist?
Hallo vt1816,

genau das ist das Problem das zu den Fehlermeldungen führt.
Ich bekomme die Meldungen das es kein Bild mit der Nummer gibt. Das ist klar wenn nur ein Bild zum löschen markiert wurde aber 4 versucht werden zu löschen.
Ich müßte ja ersteinmal das Array untersuchen wieviele Werte [Bildnummern] (min. 1 max 4) es enthällt. Und das dann auch nur vorhandene Nummern verwendet werden.

Genau da hapert es aber. Ich hatte mir da gedacht das ich einfach für jede Eventualität
einen Löschanforderung anfertige was bei 4 Bildern 8 Löschanforderungen ergibt und nur Bilder bei denen Nummern vorhanden sind gelöscht werden. Die anderen müßten den Wert NULL haben und da passiert dann nix. So geht es aber nicht.

Durch die Fehlermeldungausgabe kommt auch noch die Meldung das der Header nicht modifiziert werden kann. Das kommt aber denke ich nur durch die Fehlermeldungen.
Wenn die Fehler aus dem Script sind verschwindet bestimmt auch diese Meldung und dann käme ich auch ohne ob_start() und ob_end_flush() aus.

Jetzt teste ich das nochmal mit dem Error Reporting und mysql_error().
Ich hatte beide drin im Script dann aber wieder rausgenommen weil ich die Fehlermeldungen nicht haben wollte. Doof ne ;-)

Ich tippe aber mal darauf das es die Fehlermeldungen sind die ich hier angegeben habe und die Ursache scheint ja auch schon ausfindig gemacht zu sein.

Gruß
René
Mit Zitat antworten
  #4  
Alt 14.08.2009, 09:32:21
Benutzerbild von vt1816
vt1816 vt1816 ist offline
Administrator
 
Registriert seit: Jul 2004
Beiträge: 3.707
AW: Löschfunktion geht nur teilweise

Wenn Du ein/das Array mit den zu löschenden Bildern hast, durchlaufe es und lösche nur die darin enthaltenen Bilder. Das ist dann auch unabhängig wieviele Bilder markiert wurden. Ergo - keine Fehlermeldung mehr. Wie man ein Array durchläuft ist Dir bekannt?
__________________
Gruss vt1816
Erwarte nicht, dass sich jemand mehr Mühe mit der Antwort gibt als Du Dir mit der Frage.
. . . . . Feedback wäre wünschenswert

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.
Ansosnten gilt: Hilfe ausserhalb dieses Thread (PN, WhatsApp, Skype, Mail, ICQ, etc...) nur per Barzahlung oder Vorauskasse!

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #5  
Alt 14.08.2009, 09:44:16
Auf der Mauer Auf der Mauer ist offline
Anfänger
 
Registriert seit: Jun 2009
Alter: 42
Beiträge: 119
AW: Löschfunktion geht nur teilweise

Hallo vt1816,

danke für die Antwort. Das müßte mit foreach() gehen, oder?
Ich lese mir das dann mal durch.

Gruß
René
Mit Zitat antworten
  #6  
Alt 14.08.2009, 09:56:11
Benutzerbild von vt1816
vt1816 vt1816 ist offline
Administrator
 
Registriert seit: Jul 2004
Beiträge: 3.707
AW: Löschfunktion geht nur teilweise

Ja, ein for() sollte aber auch schon ausreichen ...
__________________
Gruss vt1816
Erwarte nicht, dass sich jemand mehr Mühe mit der Antwort gibt als Du Dir mit der Frage.
. . . . . Feedback wäre wünschenswert

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.
Ansosnten gilt: Hilfe ausserhalb dieses Thread (PN, WhatsApp, Skype, Mail, ICQ, etc...) nur per Barzahlung oder Vorauskasse!

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #7  
Alt 14.08.2009, 14:18:46
Auf der Mauer Auf der Mauer ist offline
Anfänger
 
Registriert seit: Jun 2009
Alter: 42
Beiträge: 119
AW: Löschfunktion geht nur teilweise

Puh, schwieriges Kapitel finde ich, wahrscheinlich aber auch nur beim ersten Mal.
Ich habe meinen Code jetzt so angepaßt und eine foreachschleife eingebaut.

PHP-Code:
$Bild $_POST['delete'];
foreach(
$Bild as $Bildnummer
{
echo 
$Bildnummer,"<br>";

Testweise lasse ich mir jetzt den Inhalt von $Bildnummern ausgeben. Es sind exakt soviele Werte wie ich Bilder zum löschen markiere. Würde aber mal behaupten daß das vorher auch schon ging als ich mir $Bild habe ausgeben lassen. An für sich noch nichts neues.

Die Frage ist wie kann ich mir das jetzt zu nutzen machen und das in die MySQL Löschanfrage einbinden.

Code:
$loeschen = "DELETE FROM BildDB WHERE Nummer IN ('$Bildnummer[0]','$Bildnummer[1]','$Bildnummer[2]','$Bildnummer[3]')";
und die Bilder aus dem Ordner:

Code:
unlink ("$path/re_$Bildnummer[0].jpg");
unlink ("$path/th_$Bildnummer[0].jpg");
oder enthält die Variabel Bildnummer jetzt in der Schleife temporär alle Bildnummern?
Muss dann nur die eine Variabel Bildnummer in die MySQL Abfrage rein?

Gruß
René
Mit Zitat antworten
  #8  
Alt 14.08.2009, 14:31:36
Benutzerbild von vt1816
vt1816 vt1816 ist offline
Administrator
 
Registriert seit: Jul 2004
Beiträge: 3.707
AW: Löschfunktion geht nur teilweise

Nun hast Du doch (fast) alles was Du brauchst.

Baue anstatt der Ausgabe
PHP-Code:
echo $Bildnummer,"<br>"
jetzt unlink und das komplette SQL-Statment ein und fertig...
__________________
Gruss vt1816
Erwarte nicht, dass sich jemand mehr Mühe mit der Antwort gibt als Du Dir mit der Frage.
. . . . . Feedback wäre wünschenswert

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.
Ansosnten gilt: Hilfe ausserhalb dieses Thread (PN, WhatsApp, Skype, Mail, ICQ, etc...) nur per Barzahlung oder Vorauskasse!

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #9  
Alt 14.08.2009, 14:49:09
Auf der Mauer Auf der Mauer ist offline
Anfänger
 
Registriert seit: Jun 2009
Alter: 42
Beiträge: 119
AW: Löschfunktion geht nur teilweise

Hallo vt1816,

habe ich sogar selbst hinbekommen ;-)
Nachdem ich etwas auf den Code gestarrt habe kam mir dieselbe Idee.
Allerdings und daran könnte ich vezweifeln wird noch immer ein Bild nicht gelöscht.
Im Grunde dasselbe Problem wie am Anfang.

Ich habe jetzt 1 Bild zum löschen markiert. Das Thumbnailbild wurde ordnungsgemäß entfernt und der MySQL Tabelleneintrag auch. Nur das Originalbild ist noch da.
Wie schon geschrieben Thumbnail und Originalfile haben dieselbe Nummer nur der Präfix ist ein anderer. (re_ und th_)

Hier ist nochmal der neue abgeänderte Code:

PHP-Code:
error_reporting (E_ALL E_NOTICE);

//SessionID Wichtig für wiederaufnahme der Session bei Weiterleitung  
  
$SESSID $_POST['PHPSESSID'];

//Pfad zum Bilderordner
  
$path "/users/xxx/www/Bilder";
  
//Array mit den zu löschenden Dateinummern & Foreach - Schleife
  
$Bild $_POST['delete'];
foreach(
$Bild as $Bildnummer
{
unlink ("$path/re_$Bildnummer.jpg");
unlink ("$path/th_$Bildnummer.jpg");

//Verbindung zur Datenbank herstellen  
  
include 'connect.php';

//Löschen der passenden Datensätze aus MySql Tabelle   
  
$loeschen "DELETE FROM BildDB WHERE Nummer IN ('$Bildnummer')";
  
$loeschen mysql_query($loeschen) or die(mysql_error());

}

//Weiterleitung zum privaten Memberbereich
header("Location:http://xxx.net/memberbereich.php?PHPSESSID=$SESSID"); 
Gruß
René
Mit Zitat antworten
  #10  
Alt 14.08.2009, 15:30:24
Benutzerbild von vt1816
vt1816 vt1816 ist offline
Administrator
 
Registriert seit: Jul 2004
Beiträge: 3.707
AW: Löschfunktion geht nur teilweise

1. Schreibweise der Dateinamen prüfen (Groß-/Kleinschreibung)
2. Rechte prüfen
3. Rückgabewert von unlink prüfen/verarbeiten
__________________
Gruss vt1816
Erwarte nicht, dass sich jemand mehr Mühe mit der Antwort gibt als Du Dir mit der Frage.
. . . . . Feedback wäre wünschenswert

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.
Ansosnten gilt: Hilfe ausserhalb dieses Thread (PN, WhatsApp, Skype, Mail, ICQ, etc...) nur per Barzahlung oder Vorauskasse!

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Formular / Inhalt geht (teilweise) verloren LiLiConsult PHP Grundlagen 4 17.05.2009 23:33:57
DB läuft nur teilweise auf anderem PC theresa PHP Grundlagen 2 21.05.2008 23:01:21
Eintrag aus DB lesen - funktioniert nur teilweise exweised PHP Grundlagen 4 07.09.2004 11:04:25
INPUT type=image mit Hilfe einer Imagemap nur teilweise klickbar? obermi PHP Grundlagen 2 08.05.2004 13:38:07
teilweise erledigt christina PHP Grundlagen 0 18.09.2002 15:32:49


Alle Zeitangaben in WEZ +2. Es ist jetzt 15:22:29 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt