# MySQL datensatz löschen/bearbeiten



## Reddel (28. März 2008)

hallo zusammen, ich habe folgende frage:

und zwar habe ich eine seite aufgebaut, welche sich aus einer mysql datenbank einen datensatz herausliest und auflistet 
Beispiel:

Nr....Name...Anzahl...etc.
1.....abc........1000......hfthft
2.....hth.........3...........ghfth

nur so als veranschaulichung.

jetzt habe ich das so gemacht das hinter den einzelnen datensätzen ein bild steht, worauf man klicken kann um den datensatz zu löschen, bzw. zu bearbeiten.

allerdings bin ich mir noch nicht so ganz schlüssig, wie ich das so realisieren kann.
Kann mir dazu jemand tipps geben?

Danke schon mal im vorraus!!


----------



## Scorp1337 (30. März 2008)

Du bist neu in SQL / MySQL oder?

...das gehört zur Grundsyntax...

Bei dem Button <Löschen> kannst du folgenden befehl nehmen (am besten in verbindung mit php)

```
DELETE FROM tabelle WHERE ID = '$ID'
```
Dabei musst du das Bild z.B. so verlinken:
http://deinedomain.xyz/loeschen.php?id=$id

dann holst du in der php datei mit $id = $_GET["id"] die zu löschende ID (und den damit verbundenen datensatz) und dadurch wird er dann mit einem klick auf den <löschen> button gelöscht.

Beim bearbeiten ist es:

```
UPDATE tabelle SET Name = 'neuer name', anzahl = 'neue anzahl' WHERE Nr = $ID
```

Ist eigentlich alles selbsterklärend =)


----------



## Reddel (2. April 2008)

ja nee das is mir auch klar, was ich nur wissen wollte, ist ob ich irgendwie ein formular oder so etwas da einbinden muss!! damit auch genau der eine Datensatz gelöscht wird


----------



## Scorp1337 (2. April 2008)

Formular = HTML
Soll heißen: Du gibst etwas ein, du hakst etwas an, du schickst informationen ab.

Nein das musst du nicht tun.

Es reicht ein einfacher Link oder gar eine .php datei die du aufrufst, in der nur steht "lösche datensatz XYZ", und sobald die aufgerufen wird, wird das gelöscht.

Es gibt viele Möglichkeiten eine Löschung / Änderung hervorzurufen.

....hab ich jetzt das getroffen was du meinst?


----------



## Reddel (2. April 2008)

Nee sorry, dumme frage, habs hinbekommen, danke


----------



## Reddel (3. April 2008)

Hmm doch nicht ganz...

wollte jetzt eine Seite zum bearbeiten der Datensätze erstellen...

jetzt habe ich nur noch ein kleines Problem mit der Übertragung:

```
mysql_query($sql = 'UPDATE `Tabelle` SET `Name` = \'$_GET[name]\', WHERE `ID` = $_GET[id] LIMIT 1');
```

die $_GET[id] und die $_GET[name]  werden vom vorherigen formular übertragen. Allerdings funktioniert das so nicht ganz. Wenn ich allerdings in den Code das $_GET[name] durch etwas ersetze und $_GET[id] durch einen in der Datenbank vorhandenen Wert ersetze, dann funktioniert das alles, nur halt die übernahme aus dem vorherigen formular nicht

Kann mir damit jemand helfen


----------



## Scorp1337 (3. April 2008)

```
mysql_query($sql = 'UPDATE `Tabelle` SET `Name` = \'$_GET[name]\', WHERE `ID` = $_GET[id] LIMIT 1');
```
Das ist ja vergewaltigung in höchster Form 

Erstmal wirst du überall sehen, dass $_GET[blub] nicht geht!
Dann ist es auch überflüssig vorher "$sql =" zu schreiben, wenn du es schon innerhalb des querys machst.
Desweiteren solltest du 'ne SQL Abfrage immer " Beginnen und mit " beenden.
Und ich gebe keine Garantie drauf, aber ich behaupte, dass "\" nichts in einer SQL Abfrage zu suchen hat! ...hab sowas zumindest noch nie gesehn!

Also ich würde es eher so machen:

```
$name = $_GET["name"];
$id = $_GET["id"];
$sql = "UPDATE 'Tabelle' SET 'Name' = '$name' WHERE 'ID' = '$id' LIMIT 1";
mysql_query($sql);
```

Das ist zwar auch nicht perfekt, da die Variablen name und id Fehler ausspucken, wenn sie per get nix überliefert bekommen, aber davon gehen wir jetzt mal nicht aus ;-)
Jedoch kannst du jetzt davon ausgehen, dass der SQL Fehler nicht mehr auftaucht.

Gruß Scorpion

PS: Achja, ich weiss zwar jetzt nicht wo, aber "irgendwo" gibts nen echt guten Beitrag, der eklärt, dass es einen ziemlichen unterschied macht ob man $_GET["x"], $_GET['x'] oder $_GET[x] schreibt (wobei das letztere niemals gehen wird, sollteste dir mal anschauen.


----------

