【问题标题】:How to delete a post in a page with multiple posts? [MySql]如何删除包含多个帖子的页面中的帖子? [MySql]
【发布时间】:2016-07-03 16:15:55
【问题描述】:

我想进行一个查询,从页面中删除帖子(线程),但在该页面中我有多个帖子,我的数据库中有一个名为 id_thread 的字段是每个帖子的唯一 ID,但我列出了多个页面中同一用户的帖子,这是列出帖子的页面的代码:

<?
session_start();

  if(isset($_SESSION['id']))
  {
    $servername = "(...)";
    $username = "(...)";
    $password = "(...)";
    $dbname = "(...)";

    $connect  = mysqli_connect($servername, $username, $password, $dbname);

    if (!$connect) {
        die("Connection failed: " . mysqli_connect_error());
    }

}
else
{
  header(" url=index.php");
}

?>


(... hidded non relative html code ....)


<?
      $id = (isset($_GET['id'])) ? $_GET['id'] : $_SESSION['id'];

        $query = mysqli_query($connect,"SELECT * FROM thread inner join category on thread.id_type=category.id_type WHERE username = '".$id."'");

      echo '<div class="container marg-t-100">'."All posts from User: ".$id.'</div>';
      echo '<div class="container-fluid marg-t-25">';
      while($row = mysqli_fetch_array($query))
      {
      echo '<div class="col-md-1"></div>';
      echo '<div class="col-md-11">';
      echo '<form role="form" action="delete.php" method="post"><a type="submit" class="btn btn-danger marg-t-10 pull-right">Delete Thread</a></form>';
      echo  $row['title'] ."<br><br>".$row['content']."<br><br>".'<div class="pull-right">'. "date: ".$row['data']."<br>"."author: ".$row['username']."<br>".$row['name'].'</div>' ."<br><br><br><hr><br>";
      echo '</div>';
      }
      echo '</div>';
      mysqli_close($connect);
?>
  (...)

这是我正在谈论的页面的图像:

我希望当我单击“删除线程”时,相应的帖子(线程)会从数据库中删除。

如果您在上面的页面代码中看到,您可以看到删除按钮在 delete.php 处起作用,这是我在该文件上的代码:

<?php
session_start();

  if(isset($_SESSION['id']))
  {
    $servername = "(...)";
    $username = "(...)";
    $password = "(...)";
    $dbname = "(...)";

    $connect  = mysqli_connect($servername, $username, $password, $dbname);

    $id = (isset($_GET['id'])) ? $_GET['id'] : $_SESSION['id'];

      $query = mysqli_query($connect,"Delete FROM thread WHERE username = '".$id."' and id_thread ='".(I WANT THE RELATIVE ID HERE)."'");


    if (!$connect) {
        die("Connection failed: " . mysqli_connect_error());
    }

}
else
{
  header(" url=index.php");
}


 ?>

【问题讨论】:

    标签: php html mysql sql forum


    【解决方案1】:

    在列出用户帖子的页面中,在表单内添加一个隐藏字段,其值为帖子 ID 和 name 属性,稍后您将在 POST 中使用该属性strong> 变量。

    echo '<form role="form" action="delete.php" method="post"><button type="submit" class="btn btn-danger marg-t-10 pull-right" value="Delete Thread"><input type="hidden" name="thread_id" value="'.$row['id'].'"></form>';
    

    而在delete.php查询部分:

    $query = mysqli_query($connect,"Delete FROM thread WHERE username = '".$id."' and id_thread ='.$_POST['thread_id']);
    

    【讨论】:

    • 这里应该通过将 `$_POST['thread_id'] 转换为整数或使用内置的清理方法来防止 MySQL 注入 - stackoverflow.com/questions/60174/…
    • 更改代码后返回错误:“Parse error: syntax error, unexpected T_STRING, expecting ',' or ';'在 /home/a5461665/public_html/user.php 第 88 行"
    • @kraven2g 第 88 行是什么?
    • echo '&lt;form role="form" action="delete.php" method="post"&gt;&lt;a type="submit" class="btn btn-danger marg-t-10 pull-right"&gt;Delete Thread&lt;/a&gt;&lt;input type="hidden" name="thread_id" value="&lt;?php echo $row['id']; ?&gt;"&gt;&lt;/form&gt;';
    • 好的它不再返回错误但是当我单击删除时没有任何事情发生,我试图刷新页面并且帖子仍然存在:C
    【解决方案2】:
    <?
      echo '<form role="form" action="delete.php?id='.$row['thread_id'].'" method="post"><input type="submit" class="btn btn-danger marg-t-10 pull-right" value="Delete Thread"></form>';
    

    删除.php

    <?php
    session_start();
    
    if(isset($_SESSION['id']))
    {
    $servername = "(...)";
    $username = "(...)";
    $password = "(...)";
    $dbname = "(...)";
    
    $connect  = mysqli_connect($servername, $username, $password, $dbname);
    $id=$_SESSION['id'];
    $thread_id = $_GET['title'];
    
      $query = mysqli_query($connect,"Delete FROM thread WHERE username = '".$id."' and thread_id ='".$thread_id."'");
    
    
    if (!$connect) {
        die("Connection failed: " . mysqli_connect_error());
    }
    
    }
    else
    {
    header(" url=index.php");
    }
    
    
    ?>
    

    我希望这是你所要求的。

    【讨论】:

    • 嗨,谢谢你花时间写这篇文章,但是在更改我的代码后,我点击了 btn,没有任何反应
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-15
    • 1970-01-01
    • 2021-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-08
    相关资源
    最近更新 更多