Gå til innhold

[LØST]Slette i mysql script feil


Anbefalte innlegg

Hei har et script som jeg skal bruke til nyhetsysteme mit, det er et script som sletter ting fra databasen men det funker ikke. Her er det:

<?php
include("config.php");
if (isset($id))
{
$delete_query = mysql_query("delete from nyhet where id='$id'");
header("Location: $PHP_SELF");
}
else
{
//id,title,navn,dato,nyhet
$query = mysql_query("select id,title from nyhet order by title"); 
while ($row = mysql_fetch_array($query))
{
echo "<b>".$row["title"]."</b> - <a href=$PHP_SELF?id=".$row["id"].">Slett</a><br>\n";
}
}

?>

Når jeg trykker på slett så slettes det ikke noe :S

Endret av dannyboy_1992_
Lenke til kommentar
Videoannonse
Annonse

PHP
<?php

// metode 1

mysql_query("delete from nyhet where id={$id}")||die("Slette feil: ".mysql_error());

// metode 2

mysql_query("delete from nyhet where id=".$id)||die("Slette feil: ".mysql_error());

?>

 

Bruk kun '$variabel' når feltet i databasen er varchar/tekst, hvis ikke så holder det med $variabel.

Når du bruker variabler i en tekststreng så burde du sette variablen i { }, eller konkatinere den inn som i metode 2 over.

Når du kun skal utføre en sql settning mot databasen, og ikke trenger resultatet tilbake, så trenger du ikke $variable=mysql_query(), kun mysql_query(). Er også greit å forutsette at sql koden ikke alltid fungerer, og legge til litt ekstra kode som vil fange opp og vise evt feilmeldinger.

Endret av crowly
Lenke til kommentar

Prøv denne:

PHP
<?php

 

include("config.php");

 

if (isset($_GET['id']) && is_numeric($_GET['id'])) {

$id intval($_GET['id']);

$q mysql_query("delete from nyhet where id = $id");

if (mysql_affected_rows()) {

header("Location: " $_SERVER['PHP_SELF']);

}

 

else {

echo 'Nyheten ble ikke slettet.';

}

}

else {

$query mysql_query("select id,title from nyhet order by title");

while ($row mysql_fetch_array($query)) {

echo "<b>".$row["title"]."</b> - 

<a href=$PHP_SELF?id=".$row["id"].">Slett</a><br>";

}

}

 

?>

Endret av nevoscript
Lenke til kommentar

Takker! Det funker og slette men får denne feilmeldingen, må ikke fikses men er takknemlig vis det blir fiksa

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\design 1\news\admin.php:22) in C:\xampp\htdocs\design 1\news\admin.php on line 62

Lenke til kommentar
Sorry, men det kommer ingen feilmeldinger.

Men det virker som at $delete_query ikke er includert noen sted i scriptet.

9188324[/snapback]

 

Du skal ikke ha med $delete_query. Erstatt $delete_query = mysql_query("delete from nyhet where id='$id'"); med en av metodene som jeg postet.

Endret av crowly
Lenke til kommentar
Takker! Det funker og slette men får denne feilmeldingen, må ikke fikses men er takknemlig vis det blir fiksa

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\design 1\news\admin.php:22) in C:\xampp\htdocs\design 1\news\admin.php on line 62

9188838[/snapback]

 

Du kan ikke skrive ut noe før header, hvis du har en echo o.l så får den du denne feilmeldingen.

 

Edit: Ved bruk av ob_start (output buffering) som i posten over, så kommer du deg rundt denne begrensningen.

Endret av crowly
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...