PHP Löschbutton für Tabellenzeilen

l33t_h4x0R

Ensign
Registriert
Okt. 2008
Beiträge
219
Ich lerne seit vorgestern PHP und mein bisheriges werk (Eine dynamische Tabelle mit Sortierfunktion) kann man auf inc0gnit0.xtreemhost.com begutachten.
Nun habe ich am ende jeder Tabellenzeile einen Button "Löschen" integriert, dessen Funktion sein soll eben die Zeile, in der er steht, zu löschen.

Da meine Erfahrung in PHP noch Recht begrenzt ist brauche ich da Hilfe, Google spuckt irgendwie nichts brauchbares aus.

Den bisherigen Code hab ich mal in den Anhang gepackt. Hofe ihr könnt mir helfen, steh grade echt aufm Schlauch, danke!
 

Anhänge

Du musst eine eindeutige ID (Primärschlüssel o.ä.) mitgeben, damit das Script weiß, welche Zeile gelöscht werden soll.
PHP:
'DELETE FROM `tabelle` WHERE `primärschlüssel` = '.$_GET['value'];
 
Willst du nur die anzeige ändern oder den datensatz in der datenbank tatsächlich löschen? ersteres wäre mit javascript unproblematisch und letzteres ist wie yuuri bereits gesagt hat. Zum Beispiel indem du ein Input Feld hidden einfügst und dort die jeweilige id einträgst, dann kannst du den mysql query anfertigen aal "delete from `` where `id` = $_POST/GET['id']. natürlich vorher die übergebenen Daten vorbereiten, damit keine sicherheitslücken entstehen zb mit mysqli.
 
wofür ein hidden? sinniger weise sollte in der DB ein primärschlüssel existieren, der eindeutig ist. wenn man die tabelle anzeigt bummst man einfach den löschbutton rein und gibt dort den primärschlüssel mit um den dann beim löschscript zu verwenden.

Beispiel:

<?php
if(isset($_POST['delete'])) {

$del_id = $_GET['id'];

if(!empty($del_id)) {

mysql_query("DELETE FROM `tabelle` WHERE `id`='$del_id'");

}
else {

echo 'Keine ID zum Löschen vorhanden...';

}

}

?>

<form name="delete" method="POST" action="<?php echo $_SERVER['PHP_SELF']; ?>?id=<?php echo $id; ?>">
<input type="submit" name="del" value="löschen">
</form>
 
wobei du ZWINGED die $id mysql sicher machen solltest!

PHP:
$del_id = mysql_real_escape_string($_GET['id']);

ansonsten öffnest du tür und tor für mysql injections. Nur als tipp für die zukunft. Alles was von außen an den server geschickt wird sollte geprüft und gesichert werden bevor du die daten ausgibst oder weiter verarbeitest.

Gilt genauso wenn du user eingaben wieder ausgeben willst.

Hier vlt. nicht relevant, aber sollte man sich von anfang an angewöhnen

edit:
sry, hab ripuli-6's beitrag nicht zu ende gelesen......
 
Danke erstmal! Also ich bin ketzt soweit, dass ich
if ($Delete_status == 'checked'){DELETE from Telefonliste WHERE 'wherebedingung}
habe.
Ich hab die Buttons durch Checkboxen ersetzt deren Code wie folgt ist:
<input type="checkbox" name="<?php §id ?> " value="checked" <?PHP print $Delete_status; ?>>
Das Problem ist die Where-sache, was muss ich da reinschreiben? Irgendwas das sich auf ID bezieht, ist mir klar, aber genauer komm ich irgendwie nicht.
 
Natürlich löschst du damit Zeilen. Du musst aber eine Spalte der Zeile mit einem Wert vergleichen, damit die Zeile gelöscht werden kann. Der Primärschlüssel besteht auch nur aus einer Spalte und zeigt die Eindeutigkeit einer Zeile/eines Datensatzes.
 
Ich check immernoch nicht was ich nach WHERE und v.a. auch was für ein mysql_( ich vor DELETE schreiben muss. Einfach in den PHP-Code darf ichs ja nicht oder?
Und nach WHERE hab ich etz halt §id="ID". Ich weiß, dass ich irgendwa sgewaltig falschmache, aber ich komm einfach ncith drauf wie es weiter geht, sone Sprache mal eben in 2 Tagen lernen is ga rnet so einfach :<.
 
Wuahhhh. Also:
1. Eine Variable beginnt mit Dollarzeichen $ und nicht mit Paragraphen §
2. Für das ausführen von SQL-Code in PHP gibt es genügend anleitungen. Es läuft aber darauf hinaus, dass du am Anfang einen connect sowie ein select_db absetzen musst. Danach kannst du mit mysql_query die Abfrage ausführen.
3. WHERE-Statement: WHERE id=$id wobei $id natürlich durch die ID des Datensatzes sein muss.
Wenn du das mit Checkboxen machst musst du nach dem Absenden der Formulars mit den Checkboxen erstmal alle Checkboxen durchlaufen. Wenn die angehackt wurde, dann führste den Code mit dieser ID aus, ansonsten machste mit der nächsten ID weiter und prüft dort ob der Hacken gesetzt wurde.


edit: Mach genügend Pausen. Nach einer Pause geht alles viel einfacher als davor.
 
Hast du dir denn ein SQL Tutorial angesehen?

In SQL wird alles mittels Queries gelöst, d.h. deine einzige Funktion zur Kommunikation mit der Datenbank ist mysql_query. Daten von diesem Query kannst du dann mittels mysql_fetch_array/_object/... abgreifen.

Um nun Daten zu bekommen, setzt du einen einfachen SELECT-Query ab:
Code:
SELECT * FROM tabelle
Somit erhälst du alle Daten der Tabelle.
Code:
SELECT spalte1, spalte2 FROM tabelle
Damit erhälst du Datensätze, welche die Werte von spalte1 und spalte2 enthalten.
Code:
SELECT * FROM tabelle WHERE id BETWEEN 3 AND 10
Damit erhälst du alle Datensätze, wo die id >= 3 und <= 10 ist.

Genauso verhält es sich auch beim Aktualisieren von Daten (UPDATE) und Löschen (DELETE).
Code:
UPDATE tabelle SET spalte1 = 'neuer wert 1' WHERE id = 3
Damit setzt du den Wert von spalte1 des Datensatzes mit der ID = 3 auf "neuer wert 1".

Exakt genauso ist es auch beim Löschen von Datensätzen:
Code:
DELETE FROM tabelle WHERE id = 3
Damit wird der Datensatz mit der ID = 3 gelöscht.

Um damit in PHP zu arbeiten, musst du mit Formularen ($_POST/$_GET) oder der URL ($_GET) arbeiten. In deiner Auflistung oben, müsstest du den jeweiligen Button eine ID mitgeben, damit man weiß, um welchen Datensatz es sich beim arbeiten handelt. Bspw. leitest du beim Klick auf den ersten Button auf die URL /delete.php?id=3 um. In der delete.php muss nun folgendes gemacht werden:
PHP:
$id = (int)$_GET['id'];
$sql = mysql_query( 'DELETE FROM tabelle WHERE id = '.$id );
if( mysql_affected_rows() > 0 )
  echo 'Datensatz gelöscht';
else
  echo 'Datensatz wurde nicht gelöscht. Fehler: '.mysql_error();
 
Ich habe diverse tutorials angeschaut, aber entweder sind die Dinger so extrem einfach gehalten, dass ich die Aufgabe damit nicht bewältigne kann, oder es ist für jemanden der eigentlich Systemintegrator lernt und bisher nur minimale Java und C++ Kenntnisse aus der Berufsschule hat völlig unverständlich.
Dein Beitrag hingegen hilft mir sehr! Danke dafür.
 

Ähnliche Themen

Zurück
Oben