Bestimmten Datensatz auf Klick hin aus Datenbank löschen
ha-bauer
- php
Hallo zusammen,
ich probiere gerade, bestimmte Datensätze auf einen Klick hin zu löschen. Dabei verwende ich folgenden Code:
echo "[ <a href='javascript:history.back()'>Zurück</a> ] [ <a href='newsletter-archive.php?delete=$id'>Nachricht löschen</a> ]<br>";
$sql_delete = "DELETE FROM newsletter WHERE id = '$id'";
if (mysql_query($sql_delete)) {
if (mysql_affected_rows() > 0) {
echo "<strong>Die Nachricht wurde erfolgreich gelöscht!</strong>";
}
else {
echo "<strong>Die Nachricht wurde nicht gelöscht (warum auch immer :)...)</strong>";
}
}
Aber wenn ich den Quellcode so verwende, wird der Datensatz auch bei Klick auf "Zurück" gelöscht (und die Statusmeldung, also "Nachricht wurde gelöscht / nicht gelöscht", erscheint auch nicht). Irgendwie muss ich abfragen, ob auf "Nachricht löschen" geklickt wurde. Ich weiß nur nicht, wie ... Habe schon Verschiedenes probiert mit if (isset($_GET["delete"])) ... und if ($_SERVER["QUERY_STRING"] == "?delete=$id") ..., aber es hat irgendwie nie richtig funktioniert. Hat irgendjemand eine Idee, wie ich dieses Problem lösen könnte?
Vielen Dank,
ha-bauer
Hi
»»~~~php
if (isset($_GET["delete"]))
{ //nur dann löschen
}
müsste so gehen
lg, david
Hai
müsste so gehen
nicht wirklich,
er verwendet JavaScript.history.back(),
damit wird die komplette URL erneut gesendet, inclusive aller Parameter.
m.b.G. Rolf
Hi,
müsste so gehen
nicht wirklich,
er verwendetJavaScript.history.back(),
damit wird die komplette URL erneut gesendet, inclusive aller Parameter.
aber nur wenn er vorher bei löschen war, oder?
lg, david
er verwendet
JavaScript.history.back(),
damit wird die komplette URL erneut gesendet, inclusive aller Parameter.
Gut, wenn es daran liegt: Ich kann auch einfach mit einem normalen link <a href="newsletter-archive.php">Zurück</a> zur Übersicht zurückleiten, wenn das hilft. Sollte es dann mit if (isset($_GET["delete"]) ... gehen, oder wie kann man das dann machen?
Vielen Dank schonmal für diese zahlreichen Antworten.
ha-bauer
Hi,
Gut, wenn es daran liegt: Ich kann auch einfach mit einem normalen link
<a href="newsletter-archive.php">Zurück</a>zur Übersicht zurückleiten, wenn das hilft. Sollte es dann mitif (isset($_GET["delete"])) ...gehen, oder wie kann man das dann machen?
Vielen Dank schonmal für diese zahlreichen Antworten.
ha-bauer
sollte so funktionieren. probiers mal aus
lg, davidp
sollte so funktionieren. probiers mal aus
Habs mal so probiert, aber irgendwie - ich weiß nicht warum - geht das nicht. Aber es ist eigentlich auch egal. Ich verwende diese Funktion nur zum Löschen von alten Newslettern: Die kann man ja dann über PHPMyAdmin löschen. Aber wenn jemand noch eine bessere (funktionierende) Lösung hätte, wäre das natürlich schön.
Viele Grüße,
ha-bauer
Hi,
wie schaut denn der quelltext jetzt aus?
lg, davidp
Hi,
wie schaut denn der quelltext jetzt aus?
lg, davidp
Hi davidp,
ich habe das Löschfeature jetzt einmal auf der Seite mit der Übersicht der Newsletter eingebaut. Der Quelltext sieht jetzt so aus:
$id = $row[id];
echo "<a href='newsletter-archive.php?id=$row[id]'>-> $Betreff</a> (<em>geschrieben am</em> $Datum) | -> <a href='newsletter-archive.php?delete=$id'>Löschen?</a><br>";
$sql_delete = "DELETE FROM newsletter WHERE id = '$id'";
if (isset($_GET["delete"])) {
if (mysql_query($sql_delete)) {
if (mysql_affected_rows() > 0) {
echo "<strong>Die Nachricht wurde erfolgreich gelöscht!</strong>";
}
else {
echo "<strong>Die Nachricht wurde nicht gelöscht (warum auch immer ...)</strong>";
}
}
}
Wenn ich jetzt also (nur bei einem Newsletter) auf Löschen klicke und mehrere Newsletter im Archiv sind (was später einmal der Fall sein wird, nehme ich an), dann steht plötzlich bei allen Newslettern der Text "Die Nachricht wurde erfolgreich gelöscht!". Ich will doch aber nur den einen Newsletter löschen, bei dem ich auf "Löschen" geklickt habe.
Was muss ich tun, damit das klappt?
Hast du eine Idee?
Vielen Dank,
ha-bauer
Hoi,
das geht schon aus dem Grund nicht wirklich weil dann der Datensatz trotzdem angezeigt wird obwohl er geloescht wurde. Der Code ist totaler Unsinn und nicht zum ersten mal Hier. Oder hab ich nen Dejavu?
Wir haben hier schlicht und einfach das uebeliche Problem des Auseinanderhaltens von clienseitiger und serverseitiger Programmierung.
echo $begrüßung;
ich probiere gerade, bestimmte Datensätze auf einen Klick hin zu löschen.
Das ist keine besonders gute Idee, denn ein Crawler klickt nicht bewusst, der verfolgt einfach alle Links ... und leer ist dein Archiv. Daten manipulierende Requests sollten POST verwenden, das verfolgen die Crawler im Allgemeinen nicht.
$sql_delete = "DELETE FROM newsletter WHERE id = '$id'";
Und wenn es der Crawler nicht leert, macht es vielleicht jemand per SQL-Injection.
echo "$verabschiedung $name";