# Datenbankeinträge löschen



## cry_baby (24. März 2007)

Hallo,

ich habe eine Tabelle, in der der User Einträge in die Datenbank speichern kann. Die Einträge kann man später auch ansehen, soll sie editieren und löschen können.

Mein Problem ist das Auslesen der ID. Sobald ich auf den Button des jeweiligen Eintrags klicke, um den jeweiligen Eintrag zu löschen, löscht er mir alle Einträge, die sich in dieser Tabelle befinden. Was ist an meinem Code falsch?


Anzeige der Einträge:

```
<?php

$host = "localhost";
$user = "xxx";
$password = "xxx";
$dbname = "xxx";
$tabelle ="xxx";

$dbverbindung = mysql_connect ($host, $user, $password);

$dbanfrage = "SELECT * from $tabelle ORDER BY Nummer";
$result = mysql_db_query ($dbname, $dbanfrage, $dbverbindung);

 while ($ausgabe = mysql_fetch_array ($result))
 {

 print ("
 <a href=einsaetze_2008_editieren.php?id='$id' target=_self><img src=b_edit.png border=0></a>
 <a href=einsaetze_2008_loeschen.php?id='$id' target=_self><img src=b_drop.png border=0></a><br>
  <strong>Nummer:</strong> $ausgabe[Nummer]<br><strong>Datum:</strong>&nbsp;&nbsp;$ausgabe[Wochentag], $ausgabe[Tag].$ausgabe[Monat].2007, $ausgabe[Stunde]:$ausgabe[Minute] Uhr<br> <strong>Ereignis:</strong>$ausgabe[Ereignis] <strong>in</strong> $ausgabe[Ort] <br> <strong>Berichte und Bilder:</strong> $ausgabe[Select1] <br><strong>Spektakulärer Einsatz:</strong> $ausgabe[Select2]<br><strong>Bericht:</strong><br>$ausgabe[Bericht]<br><strong>Statistik:</strong><br>$ausgabe[Statistik]<br><strong>Bilder:</strong><br>$ausgabe[Bild1] $ausgabe[Bild2] $ausgabe[Bild3] $ausgabe[Bild4]<br><hr><br>");
 }

mysql_close ($dbverbindung)


?>
```


Löschen der Einträge nach Klick auf Button:

```
<?php

$host = "localhost";
$user = "xxx";
$password = "xxx";
$dbname = "xxx";
$tabelle ="xxx";

$dbverbindung = mysql_connect ($host, $user, $password);

$dbanfrage = "DELETE FROM $tabelle WHERE id";  


if (mysql_db_query ($dbname, $dbanfrage, $dbverbindung)) {
print ("Datenbankeintrag erfolgreich.");
} else {
print ("Es traten Probleme auf.");
}
mysql_close ($dbverbindung);

?>
```


----------



## Html (24. März 2007)

Ändere mal:


```
a href=einsaetze_2008_löschen.php?id='$id'
```

in


```
a href=einsaetze_2008_löschen.php?id=".$ausgabe['ID']."
```


und



```
$dbanfrage = "DELETE FROM $tabelle WHERE id";
```

in


```
$dbanfrage = "DELETE FROM $tabelle WHERE id ='".$_GET['id']."' ";
```

mfg,Olli


----------



## Gumbo (24. März 2007)

Autorisierung der Aktion nicht vergessen, so dass nicht jeder beliebige Datensätze löschen kann.


----------



## cry_baby (24. März 2007)

Habe die Änderungen gemacht, dann kommt aber, sobald ich auf Löschen klicke "Die Seite wurde nicht gefunden" ...

@Gumbo: Was meinst du mit Authorisierung?

Sorry, bin wirklich noch Anfänger..


----------



## Gumbo (24. März 2007)

Du musst dafür sorgen, dass nicht jeder einfach das Skript aufrufen und damit Datensätze löschen kann. Es sollte nur derjenige welche löschen können, der dazu berechtigt ist.


----------



## cry_baby (24. März 2007)

Achso. Das ist ein interner Bereich, darauf haben nur insgesamt 3 Leute Zugriff, und die dürfen alle löschen. 

Weisst du wie ich mein Script umschreiben muss, damit das Löschen richtig funktioniert?


----------



## Flex (24. März 2007)

Hängt die ID denn an den Links dran?

Weil du sprichst die ID mit $id an, alle anderen Werte aber als assoziativen Array der Datenbankabfrage.


----------



## cry_baby (24. März 2007)

Nein, sie hängt nicht an den Links...

Das Script das damit geöffnet wird, heisst einsaetze_2008_löschen.php...

Das meinst du doch damit oder?


----------



## Flex (24. März 2007)

```
print ("
 <a href=einsaetze_2008_editieren.php?id='$ausgabe[id]' target=_self><img src=b_edit.png border=0></a>
 <a href=einsaetze_2008_loeschen.php?id='$ausgabe[id]' target=_self><img src=b_drop.png border=0></a><br>
  <strong>Nummer:</strong> $ausgabe[Nummer]<br><strong>Datum:</strong>&nbsp;&nbsp;$ausgabe[Wochentag], $ausgabe[Tag].$ausgabe[Monat].2007, $ausgabe[Stunde]:$ausgabe[Minute] Uhr<br> <strong>Ereignis:</strong>$ausgabe[Ereignis] <strong>in</strong> $ausgabe[Ort] <br> <strong>Berichte und Bilder:</strong> $ausgabe[Select1] <br><strong>Spektakulärer Einsatz:</strong> $ausgabe[Select2]<br><strong>Bericht:</strong><br>$ausgabe[Bericht]<br><strong>Statistik:</strong><br>$ausgabe[Statistik]<br><strong>Bilder:</strong><br>$ausgabe[Bild1] $ausgabe[Bild2] $ausgabe[Bild3] $ausgabe[Bild4]<br><hr><br>");
 }
```
Dann änder es mal so.
Und überprüf ob die id wirklich kleingeschrieben wird in der Datenbank.


----------



## cry_baby (24. März 2007)

Jetzt kommt wieder die Meldung: "Es traten Fehler auf."

ID ist kleingeschrieben in MySQL...


----------



## Flex (24. März 2007)

```
if (mysql_db_query ($dbname, $dbanfrage, $dbverbindung)) {
print ("Datenbankeintrag erfolgreich.");
} else {
print ("Es traten Probleme auf.<br/>");
echo mysql_error();
}
```

Dann kannst du sogar sehen, was fehlgeschlagen ist.


----------



## cry_baby (24. März 2007)

Es traten Probleme auf.
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1


----------



## Flex (24. März 2007)

```
$dbanfrage = "DELETE FROM $tabelle WHERE id ='".$_GET['id']."' ";
```
Sieht deine Anfrage wirklich so aus oder hast du diese Änderung wieder verworfen?


----------



## cry_baby (24. März 2007)

Ich hatte die Änderung wieder verworfen. Hab es jetzt nochmal dahingehend geändert.

Wenn ich jetzt auf Löschen klicke, sagt er mir "Datenbankeintrag erfolgreich".

Gelöscht wurde aber nichts, der Eintrag befindet sich nach wie vor in der Datenbank.


----------



## Html (24. März 2007)

Schreib mal dieses noch dazu:



```
$dbanfrage = "DELETE FROM $tabelle WHERE id ='".$_GET['id']."' ";  

mysql_query($dbanfrage);
```


----------



## Flex (24. März 2007)

Html hat gesagt.:


> Schreib mal dieses noch dazu:
> 
> 
> 
> ...



Das würde bei ihm einen Error erzeugen, da er [phpf]mysql_db_query[/phpf] verwendet.


```
if (mysql_db_query ($dbname, $dbanfrage, $dbverbindung)) {
```


----------



## cry_baby (25. März 2007)

Und was bedeutet das jetzt? Was muss ich noch dazu schreiben?


----------

