Avatar billede netspinner Nybegynder
16. december 2004 - 01:39 Der er 13 kommentarer

Mangler admin-funktion til at slette kommentarer

Hej, jeg mangler en admin-funktion til at slette kommentarer
Ud for hver kommentar er der et "Delete"-link, og når man klikker på det, skal man kunne slette den enkelte kommentar.
Det er vigtigt at man kun kan slette kommentarer hvis den kan finde en bestemt cookie på klientens computer... en anden løsning kunne også være at man blive redirectet til en ny side, f.eks. delcomment.php, hvor man lige indtaster navn og kodeord for admin, og så slettes den ved et tryk på en knap og man redirectes tilbage til kommentar-siden :)

Jeg er gået lidt kold med at få det kodet færdigt, kan ikke se mig ud af mit mysql-halløj.
Jeg indsætter lige koden for hele filen, og håber at nogen kan kigge på det:

<?php
include("fpconfig.php");
if($_POST['send'] && $_POST['name'] != "navn" && isset($_POST['name'])){
    $_POST['text'] = ereg_replace("<([^>]+)>", "", $_POST['text']);
    mysql_query("INSERT INTO comment (newsid, text, name, mail) values ('$_POST[newsid]', '$_POST[text]', '$_POST[name]', '$_POST[mail]')");
    header("Location: show.php?id=$_GET[id]");
}
?>

<html>
<head>
<title>The Pictures</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<script language=\"JavaScript\">
    function print()
    {
    if (navigator.appName != \"Netscape\" || navigator.appVersion.substring(0,1) > 4) window.print();
    }
</script>
<p align='right'><font size='1'><i><b>Your Options >></i></b> <a href="java script:print();"><img src="printable.gif" border="0"><small> Print</small></a></img>&nbsp;&nbsp;&nbsp;<a href="mailto:?subject='link'!"><img src="email.bmp" border="0"><small> Notify Friend</small></a></p></font><br><br>
<?php
$query = mysql_query("SELECT id, file, title, text, name FROM news WHERE id='$_GET[id]'");
$row = mysql_fetch_array($query);
echo "<p align='center'><b>$row[title]</b></p>";
echo "<p align='center'> <td valign=bottom> <img src=\"pics/$row[file]\" border=\"0\"> </p> <br>";
echo "<p align='center'><font size='2' face='Tahoma'>";
echo nl2br($row['text']);
echo "</font><p align='center'><font size='2' face='Tahoma'>Uploaded By:<b> [$row[name]]</font></b></p>";
echo "<p align='left'><a href='index.php'>&lt;-- Go back </a></p>";
?>

<p align="center"><b>User Comments</b></p>
<hr size="1" color="#000000">
<div align="center">
  <center>
  <table border="0" width="350">
    <?php
    $query = mysql_query("SELECT name, text, mail FROM comment WHERE newsid='$_GET[id]' ORDER BY id DESC");
    $i = 0;
    while ($rows = mysql_fetch_array($query)) {
      $i++;
        echo "<div style='background-color: #" . ( $i % 2 == 0 ? 'F2F4D7' : 'FFFF99') . "'><hr size='1' color='#000000' border-style: dashed; noshade><p><b>".nl2br($rows['text'])."</b><b><br></b>by <a href='mailto:$rows[mail]'>$rows[name]</a>&nbsp;&nbsp;&nbsp;<p align='right'><a href='delcomment.php'><font color=red><small>Delete</font><small></a></p></div>";
    }
    ?>
  </table>
  </center>
</div>
<hr size="1" color="#000000" noshade width="350">
<form action="<?php echo $_SERVER['PHP_SELF']."?id=$_GET[id]"; ?>" method="POST">
<p align="center">Name <input type="text" name="name" size="20" value=""><br>
E-mail <input type="text" name="mail" size="20" value=""></p>
<p align="center"><textarea rows="2" name="text" cols="20"></textarea></p>
<p align="center"><input type="submit" value="Submit Comment" name="send"></p>
<input type="hidden" name="newsid" value="<?php echo $row['id']; ?>">
</form>
<p align="left">&nbsp;</p>
</body>
</html>
Avatar billede sw_red_6 Nybegynder
16. december 2004 - 09:20 #1
Hvordan vil du helst have at det skal gøres? at man bliver sendt over til 'delcomment.php' eller at det bliver i den samme fil?

Hvis du vil bruge 'delcomment.php' kan du vel "bare" sende comment id med over som f.eks 'delcomment.php?commentid=1' og så slette den post i DB som passer med det ID.

Hvis du vil have det i den samme fil kan du lave delete linket som 'delcomment.php?mode=del&amp;commentid=1' og så tjekke om mode er sat og om der står del og så slette den post i DB som passer med det ID.

Jeg kan godt skrive lidt kode hvis du ikke kan finde hoved og hale i det jeg skriver, men det bliver først når jeg kommer hjem.
Avatar billede netspinner Nybegynder
16. december 2004 - 09:33 #2
Jeg listede begge måder, fordi det er op til jer :)
Men hvis det ikke kræver for meget tid, ville to eksempler med begge løsninger være perfekt!
Avatar billede sw_red_6 Nybegynder
16. december 2004 - 21:25 #3
det kan blive lidt svært uden at vide lidt mere om din DB. hvordan ser din comment tabel ud?
Avatar billede netspinner Nybegynder
16. december 2004 - 23:05 #4
Du får lige den opsætning jeg har brugt:

CREATE TABLE 'comment' (
  'id' int(11) NOT NULL auto_increment,
  'newsid' int(11) NOT NULL default '0',
  'text' text NOT NULL,
  'name' varchar(100) NOT NULL default '',
  'mail' varchar(150) NOT NULL default '',
  PRIMARY KEY  ('id')
) TYPE=MyISAM AUTO_INCREMENT=1 ;
Avatar billede netspinner Nybegynder
17. december 2004 - 16:11 #5
Har du stadig mulighed for at lave det, eller skal jeg lukke??
Avatar billede sw_red_6 Nybegynder
18. december 2004 - 15:05 #6
Jeg kan godt lave det men det bliver ikke pænt og det vil sikkert kunne laves bedre.
Er det noget der skal være færdigt på et bestemt tidspunkt, eller kan det vente til efter nytår?
Avatar billede netspinner Nybegynder
18. december 2004 - 15:09 #7
Det behøver ikke være det vildeste, bare en hurtig funktion.
Desværre skal det afleveres som et eksamensprojekt tirsdag, så det ville være fedt hvis du havde tiden til at kigge på det.
Avatar billede sw_red_6 Nybegynder
18. december 2004 - 15:14 #8
Jeg har ikke så meget tid lige nu, men hvis det ikke gør noget at det lidt spaghetti så kan jeg godt have noget til dig i morgen som du muligvis bør ændre lidt på for at det passer, især mht det med cookies.
Avatar billede sw_red_6 Nybegynder
18. december 2004 - 19:47 #9
Hvis du ændrer dit link til delcomment.php til dette:
<a href='delcomment.php?DelID=".$rows['id']"'>
kan du bruge dette i delcomment.php:
<!-- delcomment.php -->
<form method="post" action="<?php echo $_server['php_self']; ?>">
  <p>
  Navn:
  <br />
  <input type="text" name="navn" />
  <br />
  Password:
  <br />
  <input type="password" name="kodeord" />
  <input type="hidden" name="slet" value="slet" />
  <input type="hidden" name="CommentID" value="<?php echo $_GET['DelID'] ?>" />
  <br />
  <input type="submit" value="Ok" />
  </p>
</form>
<?php
  if (isset($_POST['navn']) && isset($_POST['kodeord'])) {
    if ($_POST['navn']== 'navn fra DB' && $_POST['kodeord']== 'kodeord fra DB') {    
      if (isset($_POST['slet'])) {
        if ($_POST['slet']=="slet") {
          mysql_query("DELETE FROM comment WHERE id = '$_POST[CommentID]'")
        }
      }
    }
  }
?>

ellers kan du gøre sådan her:
ændre link til:
<a href=' "filnavn.php" ?mode=del&amp;id=".$rows['id']."'>
og tilføje dette til "filnavn.php" (bare husk at tilføje det med cookies):
if (isset($_GET['mode'])) {
    if ($_GET['mode']=="del") {
        mysql_query("delete from guestbook where id = '$_GET['$id']'");
        mysql_close();
    }
}

Læs koden grundigt igennem og tilføj de rigtige ting de rigtige stedet som f.eks. "filnavn.php" skal være navnet på den fil der indeholder den kode du har skrevet i dit originale indlæg, hvis du bruger den nederste løsning.
Hvis du bruger den øverste så skal du huske at tilføje det nødvendige for at kunne tjekke navn og password før der bliver slettet noget.
Avatar billede sw_red_6 Nybegynder
21. december 2004 - 09:30 #10
har du fået det til at virke?
Avatar billede netspinner Nybegynder
21. december 2004 - 12:30 #11
Desværre virkede det ikke efter hensigten. Har lige afleveret det eksamensprojekt hvor det skulle have indgået i, så jeg arbejder nok først videre på det efter jul :)

Men... jeg skylder dig jo nogle point, så... kast et svar ;-)
Avatar billede sw_red_6 Nybegynder
21. december 2004 - 13:26 #12
hvad var der galt?
Avatar billede sw_red_6 Nybegynder
22. april 2006 - 11:32 #13
Skal vi ikke få lukket det her spørgsmål? Forresten så fik du aldrig svaret på hvad fejlen var så hvis du kan huske det så vil jeg godt have det af vide
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