# mysql Datensatz löschen per link/klick



## flandersX (3. Dezember 2007)

Hallo,

ich habe mir ein recht einfaches Script erstellt:


```
<?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"

```
<?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


----------



## nero_85 (3. Dezember 2007)

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
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>";
?>
```


----------



## drucko (3. Dezember 2007)

Aber bedenke, dass so JEDER Einträge löschen kann!
Eine kleine Erweiterung noch, da das Script so SQL-Injection zulässt:

```
mysql_query('DELETE FROM `winner` WHERE ID = '.(int)$_GET['del']);
```


----------



## nero_85 (3. Dezember 2007)

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:
> 
> 
> ...


@drucko:
Du hast natürlich recht. Hab' nur schnell das Script hingeklatscht. Aber soweit muss man auch selber sein oder? ;-)


----------



## drucko (3. Dezember 2007)

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


----------



## nero_85 (3. Dezember 2007)

Damit hast du natürlich auch recht!


----------



## tluebke (18. Dezember 2008)

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

// 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?


----------



## CookieBuster (18. Dezember 2008)

Du musst das außerhalb der " '' " machen (also außerhalb der einfachen Anführungsstriche)

Diese werden von PHP nicht geparst.


=>

```
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


----------



## tluebke (18. Dezember 2008)

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...


----------



## CookieBuster (18. Dezember 2008)

Durch mysql_fetch_object(), bekommst du ein Objekt. Mit diesem Objekt arbeitest du wie mit einem Objekt einer Klasse.


```
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.


----------



## tluebke (18. Dezember 2008)

danke für deine hilfe! jetzt klappt es wunderbar. macht spaß, wenn man sieht, dass man es so hat, wie man es haben will.


----------

