Slet nyheder fra databasen

Tags:    php

Hej jeg er igang med at lave et nyhedssystem og jeg vil gerne kunne slette mine nyheder og sån.. men jeg ved ik helt hvorn det skal gøres.. det jeg har lavet endtil videre er:

Fold kodeboks ind/udKode 




7 svar postet i denne tråd vises herunder
4 indlæg har modtaget i alt 4 karma
Sorter efter stemmer Sorter efter dato
mysql_query("DELETE * FROM nyheder WHERE id = $id_der_skal_slettes");



men den skal selv finde dens ID når jeg holder musen over overskriften.. skal jeg så skrive mysql_query("DELETE * FROM nyheder WHERE id = 'GET[ID]'"); eller sån noget ?


Overskriften skal være et link:

echo "<a href='index.php?slet_nyhed={$vis['nyheds_id']}'>Slet</a>";

Hvor $id er nyhedens id i databasen.

I index.php (eller hvad du nu vil kalde den) skriver du:

if ($_GET['slet_nyhed'] != 0) {
mysql_query("DELETE FROM nyhed WHERE id = '{$_GET['slet_nyhed']}'");
}

Jeg vil dog mene at din kode kan gøres en hel del pænere, især dine mange "hoppen ind og ud" af php og din ukonsekvente brug af "<?php" og "<?" når du starter php

Desuden er det en dårlig ide at smide værdier fra $_GET og $_POST direkte ind i et query (som jeg gør herover) da det giver mulighed for SQL-injection. Det må du selv finde en løsning på :)






Indlæg senest redigeret d. 25.07.2007 18:23 af Bruger #4683
Prøv at kigge på denne kode (sletter indslag på min hjemmeside efter de har været der 180 dage)


<?php
$my_sql->my_sql_class();
$my_sql->open();
$gb=$my_sql->execute_query("SELECT * FROM guestbook order by ID desc");
while((list($row,$frame)=each($gb)) && $frame[0] != "" ) {
$year=substr($frame[0],0,4);
$month=substr($frame[0],4,2);
$day=substr($frame[0],6,2);
$ti=substr($frame[0],8,2);
$mi=substr($frame[0],10,2);
$se=substr($frame[0],12,2);
$then=mktime($ti,$mi,$se,$month,$day,$year);
$tjek=(time()-(60*60*24*180));
if($tjek<=$then) {
$output.='<td width="368">'.$frame[1].'</td>'.chr(13);
$output.='<td width="64"></td>'.chr(13);
$output.='<td align="right" width="368">'.$day.' '.$month.' '.$year.' '.$ti.':'.$mi.':'.$se.'</td></tr>'.chr(13);
$output.='<tr><td><hr/></td>'.chr(13);
$output.='<td align="center">Rating '.$frame[3].'</td>'.chr(13);
$output.='<td><hr/></td></tr>'.chr(13);
$output.='<tr><td valign="top" colspan="3">'.chr(13);
$output.=$frame[2].'<br><br>';
$output.='</td>';
$output.='</tr>';
} else {
$my_sql->delete_table_row('guestbook','ID',$frame[0]);
}
}
?>



Du laver en fil der reagerer på en get, gerne noget i stil med "filnavn.php?action=delete&id=1", det er denne fil du skal linke til når du vil slette en nyhed.

I den fil laver du noget i stil med:

Fold kodeboks ind/udKode 


Mvh Christoffer



men den skal selv finde dens ID når jeg holder musen over overskriften.. skal jeg så skrive mysql_query("DELETE * FROM nyheder WHERE id = 'GET[ID]'"); eller sån noget ?



:S er nybegynder til php så blir lidt svært



:S er nybegynder til php så blir lidt svært


He :)

Du kan gøre det således:

if (is_numeric($_GET['slet_nyhed'])) {
// gør dit stuff
}

Der er andre måder, men dette burde virke



t