Avatar billede nh92 Nybegynder
24. december 2008 - 14:58 Der er 8 kommentarer og
1 løsning

Slette nyheder

Hej med jer.

Jeg fandt en gammel tråd herinde, hvor jeg fandt nogle koder som jeg kunne liste og slette nyheder, som jeg har skrevet i mysql databasen med. Men jeg kan ikke helt få det til at virke. Måske i kan se om jeg har lavet en fejl. Koderne er her:

Sletnyhed.php

<?
$q = mysql_query("SELECT id, overskrift FROM nyheder ORDER BY id ASC") or die(mysql_error());

while($row = mysql_fetch_array($q)) {
  echo $row['overskrift'] . " [ <a href='slet.php?ìd=".$row['id']."'>Slet denne nyhed</a> ]<br />";
}
?>

slet.php

<?
   
    if(isset($_GET['id']) && is_numeric($_GET['id'])) {
  //connect
  mysql_query("DELETE FROM nyheder WHERE id = ".$_GET['id']) or die(mysql_error());
  header("Location: ".$_SERVER['HTTP_REFERER']);
} else {
  echo "Fejl i nyhedsID.";
}

?>

Den siger bare "Fejl i nyhedsID", når jeg klikker slet inde på min side. Hvor er fejlen? (:
Avatar billede Slettet bruger
24. december 2008 - 15:03 #1
Prøv med:

<?
$q = mysql_query("SELECT id, overskrift FROM nyheder ORDER BY id ASC") or die(mysql_error());

while($row = mysql_fetch_array($q)) {
  echo $row['overskrift'] . " [ <a href='slet.php?ìd=".$row['id']."'>Slet denne nyhed</a> ]<br />";
}
?>

slet.php

<?
 
    if(isset($_GET['id']) && is_numeric($_GET['id'])) {
  //connect
  mysql_query("DELETE FROM nyheder WHERE id = ".$_GET['id'].") or die(mysql_error());
  header("Location: ".$_SERVER['HTTP_REFERER']);
} else {
  echo "Fejl i nyhedsID.";
}

?>
Avatar billede nh92 Nybegynder
24. december 2008 - 16:07 #2
Den siger stadig fejl. Men det tyder på at der er fejl i din kode, det er som om du ikke får lukket ordentlig af her:  mysql_query("DELETE FROM nyheder WHERE id = ".$_GET['id'].") or die(mysql_error());

Har prøvet at sætte et " mere ind så der står:

mysql_query("DELETE FROM nyheder WHERE id = ".$_GET['id']."") or die(mysql_error());

Men den siger stadig fejl.
Avatar billede Slettet bruger
24. december 2008 - 16:46 #3
Ja, det kan jeg se. Det var min fejl.

Det ser ud til, at du enten kalder scriptet uden et id, eller et id, der ikke er et tal.
Avatar billede nh92 Nybegynder
24. december 2008 - 17:01 #4
Ja, men når jeg har min sletnyhed, og jeg holder musen over linket, viser den fint det rigtige id. Så jeg ved ikke helt hvor fejlen ligger??
Avatar billede majbom Novice
25. december 2008 - 13:05 #5
mysql_query("DELETE FROM nyheder WHERE id = ".$_GET['id']."") or die(mysql_error());

skal i hvert fald være:

mysql_query("DELETE FROM nyheder WHERE id = ".$_GET['id']) or die(mysql_error());

du kan jo evt. prøve at udskrive $_GET[id] for at se hvad den indeholder...
Avatar billede cronaldo Nybegynder
25. december 2008 - 18:56 #6
Hej nh92 .. jeg har dette kodeeksempel .. så skal jeg bare helt præcist vide hvilke felter, for så gør jeg så du også kan rette?
----------------------------------------------------


<?
$db_tabel = $db_prefix."reklamer";
$filnavn = "index.php"; // hvis du bruger en anden fil, så ændr her.. hvis du parser skal du ændre lidt i filen..

IF(!empty($_GET['id'])){
    $forespEdit = mysql_query("SELECT * FROM ".$db_tabel." WHERE id = ".$_GET['id']." ORDER BY id DESC LIMIT 1");
    while ($row = mysql_fetch_array($forespEdit)){
        $hpurl = $row[www];
        $titel = $row[titel];
        $tekst = $row[tekst];
        $id = $row[id];
        $pris = $row[pris];
        $billede = $row[billede];
 
    echo '
        Rediger annoncen med titlen: <b>'.$titel.'</b>
        <form action="'.$PHP_SELF.'" method="post">
            <input type="hidden" name="action" value="add">
            WWW: <input type="text" name="newwww" value="'.$hpurl.'"><br>
            Titel: <input type="text" name="newtitel" value="'.$titel.'"><br>
            Tekst: <input type="text" name="newtekst" value="'.$tekst.'"><br>
            Billede: <input type="text" name="newbillede" value="'.$billede.'"><br>
            Pris: <input type="text" name="newpris" value="'.$pris.'"><br>
            <input type="submit" name="opret" value="Rediger">     
        </form>';
       
        IF($_POST['action'] == "add"){
            $newhpurl = $_POST['newwww'];
            $newtitel = $_POST['newtitel'];
            $newtekst = $_POST['newtekst'];
            $newpris = $_POST['newpris'];
            $newbillede = $_POST['newbillede'];
         
            mysql_query("UPDATE forumindlaeg SET
            www = '$newwww', titel = '$newtitel', tekst = '$newtekst', pris = '$newpris', billede = '$newbillede' WHERE id = '".$_GET['id']."' LIMIT 1");

         
            echo 'Annoncen med titlen <b>'.$newtitel.'</b> blev redigeret'; 
        }
    }

} ELSE {
    echo '
    <table cellpadding="0" cellspacing="0" width="346">
        <tr>
            <td valign="top">
            Titel (WWW)</td>
            <td valign="top" height="22">
             
            </td>
        </tr>
    ';
 
    $foresp = mysql_query("SELECT titel, www, id FROM ".$db_tabel."  \"$id\" ORDER BY id DESC");
    while ($row = mysql_fetch_array($foresp)){
        $hpurl = $row[www]; // Det er altså en skidt ting at bruge "www" i sine navne :( ..
        $titel = $row[titel];
        $id = $row[id];
 
    echo '
        <tr>
            <td valign="top" width="233">
                '.$titel.' ('.$hpurl.')
            </td>
            <td valign="top" height="19" width="113">
            <a href="'.$filnavn.'?show=edit&id='.$id.'">Ret</a>
            &nbsp;&nbsp;&nbsp;
            <a href="'.$filnavn.'?show=edit&id='.$id.'">Slet</a>
            </td>
        </tr>
 
    ';
    }
 
    echo '
    </table>
    ';
}
?>
Avatar billede cronaldo Nybegynder
26. december 2008 - 11:59 #7
Okay, jeg har lige prøvet at copy/paste ind i en HTML-editor.. og din fejl er EKSTREMT, EKSTREMT lille ..

det er fordi du har kommet til at lave et apostrof over "i" på "id" - så den egentligt hedder "íd" .. og det er jo ikke det samme som "id" hvorfor $_GET['id'] ikke finder noget ..

Så du skal blot indsætte dette i din første fil:


<?
$q = mysql_query("SELECT id, overskrift FROM nyheder ORDER BY id ASC") or die(mysql_error());

while($row = mysql_fetch_array($q)) {
  echo $row['overskrift'] . " [ <a href='slet.php?id=".$row['id']."'>Slet denne nyhed</a> ]<br />";
}
?>
Avatar billede nh92 Nybegynder
28. december 2008 - 14:14 #8
Tak cronaldo. Super godt lavet ;) som du siger virker det nu.

Tak. Bare smid et svar (:
Avatar billede cronaldo Nybegynder
28. december 2008 - 18:59 #9
Det var skam så lidt!

Rigtig glædelig jul og godt nytår til dig :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester