Avatar billede haolan Nybegynder
03. maj 2005 - 12:59 Der er 33 kommentarer og
1 løsning

Slet indlæg i debatforum

Jeg er ved at oprette et debatforum i forbindelse med et teknologi eksamensprojekt..

Jeg vil gerne lave en administrationsdel hvor admin kan slette indlæg..

Hvordan får man lavet et "slet" link?

Når jeg sletter indlæg i phpmyadmin skriver den:
DELETE FROM `forum_post_benzinspar` WHERE `post_id` = 4 LIMIT 1

Svar Haster!
Avatar billede kack Nybegynder
03. maj 2005 - 13:06 #1
Nu ved jeg ikke helt hvordan du vil have det. Men du kunne f.eks lave det på denne måde:

<a href='NAVNET PÅ DIN SIDE.php&slet=emne&post_id=".$_GET['id']."'>SLET</a>


Og dette skal så være øverst i din kode:

if($_GET['slet'] == "emne") {
if($_GET['id']) {
  mysql_query("DELETE FROM MYSQL-TABLE WHERE ID = '".$_GET['id']."' LIMIT 1");
}
}

Det skal så bare lige tilpasses dine oplysninger. Sådan lavede jeg det ihvertfald for noget tid siden. Og det virkede.
Avatar billede jakobclausen Nybegynder
03. maj 2005 - 13:07 #2
Du laver et "slette-link":
<a href="delete.php?id=1">Slet</a>

PÅ dette link har du angivet den post_id, som du vil slette i databasen - her bare kaldt id.

På siden delete.php laver du så følgende:
<?
// -> forbindelse til database
$delete = mysql_query("DELETE FROM forum_post_benzinspar WHERE post_id= ".$_REQUEST["id"]);
?>

Nu vil den slette det valgte id
Avatar billede jakobclausen Nybegynder
03. maj 2005 - 13:10 #3
Vil du give brugeren en bekræftelse på at indlægget er slette kan du gøre:

delete.php
- - - - -
$connect = mysql_connect("host", "bruger", "kodeord");
$delete = ("DELETE FROM forum_post_benzinspar WHERE post_id= ".$_REQUEST["id"]);
if(mysql_db_query('database', $delete, $connect))
{
  echo "Indlægget er slettet!";
}
        {
- - - - -
Avatar billede haolan Nybegynder
03. maj 2005 - 13:17 #4
>> Jakobclausen

Hvordan kalder jeg så id? i linket?
Slette knappen skal jo placeres automatisk ud for hvert indlæg
Avatar billede jakobclausen Nybegynder
03. maj 2005 - 13:19 #5
Du henter alle indlæggene ud fra databasen, og her skal du samtidig bede den om at indlægge id'en i linket.

Det kan gøres på mange forskellige måder, og jeg vil gerne have lov at se lidt af din kode, for at jeg ikke skal komme med et forslag der er helt anderledes, end det du har lavet...
Avatar billede jakobclausen Nybegynder
03. maj 2005 - 13:20 #6
Du kan som kack er inde på også lave det på samme side, og ikke bruge en ny (delete.php), som jeg.
Avatar billede haolan Nybegynder
03. maj 2005 - 13:23 #7
Du får lige hele koden:

<?php
//check for required info from the query string
if (!$_GET[topic_id]) {
  header("Location: topiclist.php");
  exit;
}

//connect to server and select database
$conn = mysql_connect("mysql.unoeuro.com", "vivaa_dk", "6MTY18QA")
    or die(mysql_error());
mysql_select_db("vivaa_dk_db",$conn) or die(mysql_error());


//verify the topic exists
$verify_topic = "select topic_title from forum_topics_benzinspar where topic_id = $_GET[topic_id]";
$verify_topic_res = mysql_query($verify_topic, $conn) or die(mysql_error());

if (mysql_num_rows($verify_topic_res) < 1) {
    //this topic does not exist
    $display_block = "<P><em>You have selected an invalid topic. Please <a href=\"topiclist.php\">try again</a>.</em></p>";
} else {
    //get the topic title
  $topic_title = stripslashes(mysql_result($verify_topic_res,0, 'topic_title'));

  //gather the posts
  $get_posts = "select post_id, post_text, date_format(post_create_time, '%b %e %Y at %r') as fmt_post_create_time, post_owner from forum_posts_benzinspar where topic_id = $_GET[topic_id] order by post_create_time asc";
  $get_posts_res = mysql_query($get_posts,$conn) or die(mysql_error());

  //create the display string
  $display_block = "
  <P>Showing posts for the <strong>$topic_title</strong> topic:</p>

  <table width=100% cellpadding=3 cellspacing=1 border=1>
  <tr>
  <th>AUTHOR</th>
  <th>POST</th>
  </tr>";

  while ($posts_info = mysql_fetch_array($get_posts_res)) {
      $post_id = $posts_info['post_id'];
      $post_text = nl2br(stripslashes($posts_info['post_text']));
      $post_create_time = $posts_info['fmt_post_create_time'];
      $post_owner = stripslashes($posts_info['post_owner']);

      //add to display
      $display_block .= "
      <tr>
      <td width=35% valign=top>$post_owner<br>[$post_create_time]</td>
      <td width=65% valign=top>$post_text<br><br>
      <a href=\"replytopost.php?post_id=$post_id\"><strong>REPLY TO POST</strong></a></td>
      </tr>";
  }

  //close up the table
  $display_block .= "</table>";
}
?>
<html>
<head>
<title>Posts in Topic</title>
</head>
<body>
<h1>Posts in Topic</h1>
<?php print $display_block; ?>
</body>
</html>
Avatar billede jakobclausen Nybegynder
03. maj 2005 - 13:32 #8
Dit link skal se sådan ud:

<a href=\"filnavn.php?id=$post_id\">Slet indlæg</a>

NB! filnavn.php -> skal rettes til navnet på filen

I toppen af filen, efter du har connectet til databasen, sætter nednestående kode:

if (!$_GET[id])
{
  $delete = mysql_query("DELETE FROM forum_post_benzinspar WHERE post_id= ".$_GET["id"]);
}

Indlægget vil nu være slettet
Avatar billede jakobclausen Nybegynder
03. maj 2005 - 13:33 #9
Rettelse:

if ($_GET[id))
{
  $delete = mysql_query("DELETE FROM forum_post_benzinspar WHERE post_id= ".$_GET["id"]);
}
Avatar billede haolan Nybegynder
03. maj 2005 - 13:50 #10
Rettelse igen :)

if ($_GET[id])
{
  $delete = mysql_query("DELETE FROM forum_post_benzinspar WHERE post_id= ".$_GET["id"]);
}
Avatar billede haolan Nybegynder
03. maj 2005 - 13:52 #11
Avatar billede jakobclausen Nybegynder
03. maj 2005 - 13:52 #12
Hehe ja - det gik lidt hurtigt!
Avatar billede haolan Nybegynder
03. maj 2005 - 13:52 #13
hov.. det er så fordi jeg glemte at rette filnavn :)
Avatar billede jakobclausen Nybegynder
03. maj 2005 - 13:53 #14
Jep - så jeg også lige
Avatar billede haolan Nybegynder
03. maj 2005 - 13:54 #15
men den virker så stadig ikke
Avatar billede jakobclausen Nybegynder
03. maj 2005 - 13:55 #16
Avatar billede jakobclausen Nybegynder
03. maj 2005 - 13:56 #17
Altså:

<a href=\"showtopic.php?topic_id=1&id=1\">DELETE POST</A>
Avatar billede jakobclausen Nybegynder
03. maj 2005 - 13:58 #18
Eller for at gør det lidt smartere:

<a href=\"showtopic.php?topic_id=".$_GET[topic_id]."&id=1\">DELETE POST</A>
Avatar billede haolan Nybegynder
03. maj 2005 - 14:00 #19
det hjælper ikke.. kan det ikke være der du har skrevet $_GET[id] der skal være post $_GET[post_id] istedet?
Avatar billede jakobclausen Nybegynder
03. maj 2005 - 14:02 #20
Nej det skal være top_id!
Siden jeg kommer ind på hedder: http://benzinspar.vivaa.dk/showtopic.php?topic_id=1

Og du skal derfor også have ?top_id=1 med, på delete linket.
f.eks. http://benzinspar.vivaa.dk/showtopic.php?topic_id=1&id=3 - hvor den vil sætte indlægget med id 3
Avatar billede jakobclausen Nybegynder
03. maj 2005 - 14:04 #21
Du må lave nogle tjek for at se om den overhovedet kommer ind i if-sætning - f.eks:

if ($_GET[id])
{
  echo "Du har valgt at slette id ".$_GET[id];
}
Avatar billede jakobclausen Nybegynder
03. maj 2005 - 14:05 #22
NB! Du må have lavet et eller andet om, for den står altid til id=1, i linket.
Avatar billede haolan Nybegynder
03. maj 2005 - 14:12 #23
du får lige en kopi af hele koden igen så:

<?php
//check for required info from the query string
if (!$_GET[topic_id]) {
  header("Location: topiclist.php");
  exit;
}

//connect to server and select database
$conn = mysql_connect("XXX", "XXX", "XXX")
    or die(mysql_error());
mysql_select_db("vivaa_dk_db",$conn) or die(mysql_error());

//delete post

if ($_GET[id])
{
  $delete = mysql_query("DELETE FROM forum_post_benzinspar WHERE post_id= ".$_GET[id]);
}

//verify the topic exists
$verify_topic = "select topic_title from forum_topics_benzinspar where topic_id = $_GET[topic_id]";
$verify_topic_res = mysql_query($verify_topic, $conn) or die(mysql_error());

if (mysql_num_rows($verify_topic_res) < 1) {
    //this topic does not exist
    $display_block = "<P><em>You have selected an invalid topic. Please <a href=\"topiclist.php\">try again</a>.</em></p>";
} else {
    //get the topic title
  $topic_title = stripslashes(mysql_result($verify_topic_res,0, 'topic_title'));

  //gather the posts
  $get_posts = "select post_id, post_text, date_format(post_create_time, '%b %e %Y at %r') as fmt_post_create_time, post_owner from forum_posts_benzinspar where topic_id = $_GET[topic_id] order by post_create_time asc";
  $get_posts_res = mysql_query($get_posts,$conn) or die(mysql_error());

  //create the display string
  $display_block = "
  <P>Showing posts for the <strong>$topic_title</strong> topic:</p>

  <table width=100% cellpadding=3 cellspacing=1 border=1>
  <tr>
  <th>AUTHOR</th>
  <th>POST</th>
  <th>DELETE</th>
  </tr>";

  while ($posts_info = mysql_fetch_array($get_posts_res)) {
      $post_id = $posts_info['post_id'];
      $post_text = nl2br(stripslashes($posts_info['post_text']));
      $post_create_time = $posts_info['fmt_post_create_time'];
      $post_owner = stripslashes($posts_info['post_owner']);

      //add to display
      $display_block .= "
      <tr>
      <td width=35% valign=top>$post_owner<br>[$post_create_time]</td>
      <td width=65% valign=top>$post_text<br><br>
      <a href=\"replytopost.php?post_id=$post_id\"><strong>REPLY TO POST</strong></a></td>
      <td valign=top width=20%><a href=\"showtopic.php?topic_id=".$_GET[topic_id]."&id=1\">DELETE POST</A></td>
      </tr>";
  }

  //close up the table
  $display_block .= "</table>";
}
?>
<html>
<head>
<title>Posts in Topic</title>
</head>
<body>
<h1>Posts in Topic</h1>
<?php print $display_block; ?>
</body>
</html>
Avatar billede jakobclausen Nybegynder
03. maj 2005 - 14:24 #24
Jeg vil mene at nedenstående burde virke:

- - - - -
<?php
//check for required info from the query string
if (!$_GET[topic_id]) {
  header("Location: topiclist.php");
  exit;
}

//connect to server and select database
$conn = mysql_connect("XXX", "XXX", "XXX")
    or die(mysql_error());
mysql_select_db("vivaa_dk_db",$conn) or die(mysql_error());

//delete post

if ($_GET[id])
{
  $delete = mysql_query("DELETE FROM forum_post_benzinspar WHERE post_id= ".$_GET[id]);
}

//verify the topic exists
$verify_topic = "select topic_title from forum_topics_benzinspar where topic_id = $_GET[topic_id]";
$verify_topic_res = mysql_query($verify_topic, $conn) or die(mysql_error());

if (mysql_num_rows($verify_topic_res) < 1) {
    //this topic does not exist
    $display_block = "<P><em>You have selected an invalid topic. Please <a href=\"topiclist.php\">try again</a>.</em></p>";
} else {
    //get the topic title
  $topic_title = stripslashes(mysql_result($verify_topic_res,0, 'topic_title'));

  //gather the posts
  $get_posts = "select post_id, post_text, date_format(post_create_time, '%b %e %Y at %r') as fmt_post_create_time, post_owner from forum_posts_benzinspar where topic_id = $_GET[topic_id] order by post_create_time asc";
  $get_posts_res = mysql_query($get_posts,$conn) or die(mysql_error());

  //create the display string
  $display_block = "
  <P>Showing posts for the <strong>$topic_title</strong> topic:</p>

  <table width=100% cellpadding=3 cellspacing=1 border=1>
  <tr>
  <th>AUTHOR</th>
  <th>POST</th>
  <th>DELETE</th>
  </tr>";

  while ($posts_info = mysql_fetch_array($get_posts_res)) {
      $post_id = $posts_info['post_id'];
      $post_text = nl2br(stripslashes($posts_info['post_text']));
      $post_create_time = $posts_info['fmt_post_create_time'];
      $post_owner = stripslashes($posts_info['post_owner']);

      //add to display
      $display_block .= "
      <tr>
      <td width=35% valign=top>$post_owner<br>[$post_create_time]</td>
      <td width=65% valign=top>$post_text<br><br>
      <a href=\"replytopost.php?post_id=$post_id\"><strong>REPLY TO POST</strong></a></td>
      <td valign=top width=20%><a href=\"showtopic.php?topic_id=$_GET[topic_id]&id=$post_id\">DELETE POST</A></td>
      </tr>";
  }

  //close up the table
  $display_block .= "</table>";
}
?>
<html>
<head>
<title>Posts in Topic</title>
</head>
<body>
<h1>Posts in Topic</h1>
<?php print $display_block; ?>
</body>
</html>
- - - - -
Avatar billede haolan Nybegynder
03. maj 2005 - 17:44 #25
jeg må beklage.. stadig ingen virkning
Avatar billede haolan Nybegynder
03. maj 2005 - 17:47 #26
ahr jo den virker.. :) der manglede et s i forum_post

$delete = mysql_query("DELETE FROM forum_posts_benzinspar WHERE post_id= ".$_GET[id]);

Takker for hjælpen, læg svar for points
Avatar billede jakobclausen Nybegynder
03. maj 2005 - 17:49 #27
Hehe ja der skal ikke ret meget til for at lave rod i det. Men godt du fandt ud af det.
Avatar billede haolan Nybegynder
03. maj 2005 - 17:53 #28
Jeps... Når det er et topic man skal slette altså under:

http://benzinspar.vivaa.dk/topiclist.php

Kan man så ikke blot bruge:
Koden:
if ($_GET[topic_id])
{
  $delete = mysql_query("DELETE FROM forum_topics_benzinspar WHERE post_id= ".$_GET[topic_id]);
}

og Linket:
<a href=\"topiclist.php?topic_id=$_GET[topic_id]\">DELETE POST</A>

???
Avatar billede jakobclausen Nybegynder
03. maj 2005 - 17:55 #29
Jo det vil jeg mene
Avatar billede jakobclausen Nybegynder
03. maj 2005 - 17:56 #30
Lige en side bemærkning: Er det særlig smart at brugeren kan gå ind og slette alle topics/indlæg ??
Avatar billede haolan Nybegynder
03. maj 2005 - 17:58 #31
nej nej.. det er meningen at kun admins skal kunne slette indlæg/topics :)
Avatar billede haolan Nybegynder
03. maj 2005 - 18:00 #32
hmm den kodning jeg skrev til dig før med at slette topics.. virker ikke..

Håber du stadig vil hjælpe :)
Avatar billede jakobclausen Nybegynder
04. maj 2005 - 14:23 #33
Haolan >> Jeg har først lige set din besked nu, hvor jeg står og er på vej ud af døren - men vil lige kigge på det når jeg kommer tilbage (torsdag)
Avatar billede haolan Nybegynder
04. maj 2005 - 14:48 #34
Ikke nødvendigt jeg klarede opgaven selv :)
God tur...
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