mysql Datensatz löschen per link/klick

flandersX

Mitglied
Hallo,

ich habe mir ein recht einfaches Script erstellt:

Code:
<?php
include("dbconnect.php");
$abfrage = "SELECT id, vname, name, date FROM adressen ORDER by id DESC";
$ergebnis = mysql_query($abfrage);
  
echo "<table align='center' bgcolor=\"#272727\" width=\"800\" style=\"border: 1px solid #000000;\" cellpadding=\"0\" cellspacing=\"0\">";
while($row = mysql_fetch_object($ergebnis))
    {
echo "<tr>
		<td align=\"center\" width=\"15\" style=\"border: 1px solid #000000;\"><img src=\"images/bild.jpg\"</td>
		<td style=\"border: 1px solid #000000;\">$row->date</td>
    		<td style=\"border: 1px solid #000000;\"><span class=\"Stil1\">$row->name</a></span></td>
		<td style=\"border: 1px solid #000000;\"><span class=\"Stil1\">$row->vname</a></span></td>
		<td style=\"border: 1px solid #000000;\"><span class=\"Stil1\"><a href='LOESCHLINK?'>Loeschen</a></td>
  	</tr>";
    }
echo "</table>";
?>

Dazu in einer "del.php"
Code:
<?php
include('dbconnect.php');
mysql_query('DELETE FROM `winner` WHERE ID = '.$_GET['ID']);
?>

Kann mir jemand zeigen, wie ich das nun verbinde, so das ich jeden Eintrag per Link hinter diesem löschen kann ? Einträge sind mit IDs versehen auto_increment.

p.s. Ja, ich habe sehr viel über die Suchfunktion gefunden, aber die Lösungswege darin waren mir zu komplex so das ich am Ende garnix mehr verstanden habe. Bin Anfänger :)
 
Ich würde nicht extra eine "Löschen-Seite" machen sondern das direkt auf die Seite einbinden:

(ich nehme jetzt mal an das ist die index.php)
PHP:
<?php
include("dbconnect.php");
 
if(isset($_GET['del']) and !empty($_GET['del'])){
    mysql_query('DELETE FROM `winner` WHERE ID = '.$_GET['del']);
}
 
$abfrage = "SELECT id, vname, name, date FROM adressen ORDER by id DESC";
$ergebnis = mysql_query($abfrage);
 
echo "<table align='center' bgcolor=\"#272727\" width=\"800\" style=\"border: 1px solid #000000;\" cellpadding=\"0\" cellspacing=\"0\">";
while($row = mysql_fetch_object($ergebnis))
    {
echo "<tr>
<td align=\"center\" width=\"15\" style=\"border: 1px solid #000000;\"><img src=\"images/bild.jpg\"</td>
<td style=\"border: 1px solid #000000;\">$row->date</td>
    <td style=\"border: 1px solid #000000;\"><span class=\"Stil1\">$row->name</a></span></td>
<td style=\"border: 1px solid #000000;\"><span class=\"Stil1\">$row->vname</a></span></td>
<td style=\"border: 1px solid #000000;\"><span class=\"Stil1\"><a href='index.php?del=$row->ID'>Loeschen</a></td>
  </tr>";
    }
echo "</table>";
?>
 
Aber bedenke, dass so JEDER Einträge löschen kann!
Eine kleine Erweiterung noch, da das Script so SQL-Injection zulässt:
PHP:
mysql_query('DELETE FROM `winner` WHERE ID = '.(int)$_GET['del']);
 
drucko hat gesagt.:
Aber bedenke, dass so JEDER Einträge löschen kann!
Eine kleine Erweiterung noch, da das Script so SQL-Injection zulässt:

PHP:
mysql_query('DELETE FROM `winner`WHERE ID = '.(int)$_GET['del']);
@drucko:
Du hast natürlich recht. Hab' nur schnell das Script hingeklatscht. Aber soweit muss man auch selber sein oder? ;-) :)
 
Solltest du nicht als Kritik auffassen! ;)
Aber ich geh davon aus das PHP-Anfänger mit dem "auch noch auf Script-Sicherheit achten" erstmal überfordert sind, bzw gar nicht wissen worauf zu achten ist... und plötzlich ist die DB zerschreddert :D
 
habe auf der suche nach einer löschfunktion für mysql-tabellen diesen thread entdeckt. leider funktioniert das skript bei mir aber nicht wirklich. wenn ich also auf den link klicke passiert nichts. komisch finde ich vorallem, dass beim link das ziel nicht stimmt. das "->ID" wird einfach verschluckt.

PHP:
<?php

// DB CONNECT
xxx
// DB CONNECT ENDE

$query = mysql_query("SELECT *, MONTH(datum) FROM db.news ORDER BY datum DESC");

if(isset($_GET['del']) and !empty($_GET['del'])){
    mysql_query('DELETE FROM db.news WHERE ID = '.(int)$_GET['del']);
}

while($result = mysql_fetch_row($query)) {

  $id = $result[0];
  $datum = $result[1];
  $titel = $result[2];

  echo "<tr><td>$datum</td>";
  echo "<td>$titel</td>";
  echo "<td><a href='news_neu.php?del=$id->ID'>Loeschen</a></td></td></tr>";

}

echo '<tr><td><input type="submit" name="sub" value="l&ouml;schen" /></td></tr>';

mysql_close($cn);
?>

stimmt derlöschlink nicht? oder ist in meinem skript was grundlegendes falsch?
 
Du musst das außerhalb der " '' " machen (also außerhalb der einfachen Anführungsstriche)

Diese werden von PHP nicht geparst.


=>
PHP:
echo "<td><a href='news_neu.php?del=".$id->ID."'>Loeschen</a></td></td></tr>";


e:/ nebenbei, wo kommt denn dein Objekt "$id" her? Ist das außerhalb deffiniert oder meinst du das Id aus der While-Schleife?
Wenn ja dann musst du dein Result entweder mit mysql_fetch_object() auslesen, oderaber wirklich mit einem Array arbeiten
 
Zuletzt bearbeitet:
komme damit leider auch nicht weiter. der löschlink wird immernoch nach
....php?del=
abgehackt. ja, die id ist die aus der whileschleife. fand ich am einfachsten. und wie mache ich das dann mit dem fetch_object? ich bin absoluter neuling auf dem gebiet und komme noch nicht so recht damit klar...
 
Durch mysql_fetch_object(), bekommst du ein Objekt. Mit diesem Objekt arbeitest du wie mit einem Objekt einer Klasse.

PHP:
while($result = mysql_fetch_object($query)) {

 // BEACHTE: id , titel und datum sind von mir gewählte Aliase, diese müssen mit dem 
// Namen der jeweiligen Tabellenspalte ersetzt werden (Die Wörter nach einem $result->)

  echo "<tr><td>".$result->datum."</td>";
  echo "<td>".$result->titel."</td>";
  echo "<td><a href='news_neu.php?del=".$resullt->ID."'>Loeschen</a></td></td></tr>";

}

Ich hoff das hilft dir weiter.
 

Neue Beiträge

Zurück