---
title: "Delete"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/178041-delete"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "SoulGod"
published: "2009-04-15T13:22:15.000Z"
updated: "2009-04-16T08:27:39.000Z"
replies: 12
views: 443
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/178041-delete"
---

# Delete

## #1 — SoulGod, 2009-04-15T13:22Z

Jag kör följande kod för att ta bort rader ur min databas:

```
<?		
     if ($_GET["do"] == "del") {
		  		  
		$id = $_POST['id'];
		$delete = "DELETE FROM rec WHERE id='$id'";
		
		mysql_query($delete) or die("Det gick inte att ta bort information!");
	}  ?>
```

Och allting funkar, men däremot skulle jag vilja göra om 2 saker:
1\. Att komma upp någon form av "är du säker-ruta"
2\. När man tagit bort det ( efter bekräftan ), vill jag kunna skicka användaren till en viss sida ( redirect )

Någon som vet hur?

Permalänk: https://www.webforum.nu/p/178041

## #2 — voigtann1, 2009-04-15T13:38Z

Du bör nog kolla igenom din databas struktur, ett id som en sträng är inget jag rekommendera alls.

1\. Ja, javascript popup går på länken/formuläret för att ta bort, ha en javascripts confirm, om den retunera true, skicka vidare och posten tas bort.
2\. redirect gå med header() om du placera koden innan någon annan data har renderats ut.

Permalänk: https://www.webforum.nu/p/2181942

## #3 — Pedda, 2009-04-15T13:43Z

Precis som voigtann1 säger:

1\. Lägg till ett onclick attribut på din knapp

```php
onclick="return confirm('Är du säker på att radera?\nDu kan inte ångra dig senare!');"
```

2\. 

```php
header('Location: sidan.php');
```

Permalänk: https://www.webforum.nu/p/2181943

## #4 — drew, 2009-04-15T14:22Z

Och skicka aldrig POST eller GET direkt till databasen utan att skicka den genom mysql_real_escape_string() eller åtminstone addslashes() innan.

Permalänk: https://www.webforum.nu/p/2181948

## #5 — SoulGod, 2009-04-15T15:30Z

Jag har en kolumn som heter ID, och använder den som identifierare när jag hämtar enstaka rader ( och i detta fall skall ta bort en viss rad )
Vad är det för negativt med att ha den som sträng ( som jag har nu? )

\* EDIT \*
Kör nu följande kod för att ta bort recensioner

```
<?		
     if ($_GET["do"] == "del") {
		  		  
		//$id = $_GET['id'];
		$delete = "DELETE FROM rec WHERE id=".$_GET['id'];
		
		mysql_query($delete) or die("Det gick inte att ta bort information!");
	} ....
```

Det roliga är att jag måste klicka först en gång, ( så laddas sidan om ) och sen klicka igen..
DÅ tas raden bort.. Varför är det så?

Permalänk: https://www.webforum.nu/p/2181957

## #6 — aasah, 2009-04-15T22:02Z

Vad tror du händer om $\_GET\['id'\] (som hämtas från querysträngen och som användarna mycket enkelt kan ändra i själva) innehåller 
1 OR 1=1
? Följ drews råd ovan!

Permalänk: https://www.webforum.nu/p/2181992

## #7 — SoulGod, 2009-04-16T07:44Z

Kan förstå det du menar nu ang ID .. Grejen är såhär, varje annat fält ( band, låt ) o.s.v. kan det finnas flera som har samma innehåll.. kan vara att 5 / 6 har samma innehåll..
Hur gör jag då? Och även om jag t.ex gör en egen kolumn som är "cid" eller "valfritt" och kör = 1 på dom.. så kan användaren ändå ändra koden själv?

Permalänk: https://www.webforum.nu/p/2182010

## #8 — drew, 2009-04-16T08:07Z

Om du kör det genom mysql_real_escape_string() eller addslashes() innan du skickar det till databasen så gör det inget om användaren ändrat koden. Det läggs in som en del i strängen. Men om du skickar den direkt till databasen så raderas allt.

Har du id't som en int så kör du intval() istället.

Men skicka aldrig GET eller POST direkt till databasen.

Permalänk: https://www.webforum.nu/p/2182013

## #9 — SoulGod, 2009-04-16T08:09Z

Okej - aldrig tänkt så långt..
är inget proffs på det här, jag pillar och GOOGLAR + WF'ar mig till alla svar \*ler\*

Ska ordna till det .. 
Men min fråga kvarstår på ett problem.. nu klickar jag på delete-knappen,
och ändå händer inget .. men klickar jag åp SAMMA knapp igen , så tas den bort.. varför?

( klickar jag på en annan knapp så måste jag ändå klicka igen på den )

Permalänk: https://www.webforum.nu/p/2182015

## #10 — drew, 2009-04-16T08:14Z

Hur ser html-koden ut där knappen är?
Får du något innehåll till $\_GET\['id'\] och sätts $\_GET\["do"\] första gången?

Permalänk: https://www.webforum.nu/p/2182016

## #11 — SoulGod, 2009-04-16T08:17Z

HIttade felet själv.. felet är inte att man måste klicka 2 gånger,
utan felet är att DEL-funktionen körs nedanför listan jag har ( i en div längre ner )..
Jag har en lista på recensioner .. och när man kör delete så körs den lite längre ner,
vilket då gör att sidan inte uppdateras...

Kan man lägga in någon form av "refresh page" efter man har kört delete?

Min kod ser ut såhär:

```
<?		
     if ($_GET["do"] == "del") {
		  		  
		//$id = $_GET['id'];
		$delete = "DELETE FROM rec WHERE id=".$_GET['id'];
		
//		mysql_real_escape_string($delete) or die("Det gick inte att ta bort information!");
		mysql_query($delete) or die("Det gick inte att ta bort information!");
	}
```

och som ni ser på den raden jag har kommenterat bort.. kör man inte real_escape så?
Eller har jag förstått den fel? För när jag kör den, så tar den inte bort något..

Permalänk: https://www.webforum.nu/p/2182017

## #12 — drew, 2009-04-16T08:21Z

$id = mysql_real_escape_string($\_GET\['id'\]);

header('Location: samma_sida.php'); skickar tillbaka användaren till samma sida igen.

Permalänk: https://www.webforum.nu/p/2182021

## #13 — SoulGod, 2009-04-16T08:27Z

Funkar! Tack som tusan till alla.

Ska gå igenom resten av min kod också, och se till att få in mysql_real_escape överallt!

Tack så mycket =)

Permalänk: https://www.webforum.nu/p/2182023

---

Tråden på webben: https://www.webforum.nu/amne/php/178041-delete
