【问题标题】:Delete button next to every row每行旁边的删除按钮
【发布时间】:2023-05-19 19:13:01
【问题描述】:

我有这个脚本,用户可以在其中查看项目表。但只有管理员可以删除上述项目。

$query = ("select * from projectlist");
$result = mysql_query($query) or die (mysql_error());

while($row = mysql_fetch_array($result, MYSQL_ASSOC)){
    echo "<tr>";
        while( list($key, $value) = each($row)){
            //Print value
            echo "<td>" . $value . "</td>";
        }

        if($_SESSION['rights'] == 'administrator'){
            echo "<td><i class='fa fa-times-circle-o'></i></td>";
        }
    echo "</tr>";
}

每一行都有一个名为 projectid 的 id,使用 $query = ("select * from projectlist"); 调用。

您可以看到,如果管理员已登录,则会显示一个图标。我想要它做的是,如果用户点击图标,该行将被删除。我不是很擅长 php,我花了一段时间才让这个脚本工作。

如果有人能帮我解决这个问题,我将不胜感激。

【问题讨论】:

  • 将该链接发送到一个新文件,该文件执行类似于DELETE FROM projectlist WHERE id = 2 的查询(经过适当的验证)。当然 2 和您的字段名称将替换为实际名称
  • 您可能希望为此使用 AJAX
  • @Hanky웃Panky 今天早上我看到了这个问题:*.com/questions/16191026/… 他使用了一个隐藏的输入字段。我也应该这样做吗?
  • @mplungjan 我已经为另一个功能尝试了 AJAX。但是我觉得真的很难理解。你知道方法吗?

标签: php html mysql


【解决方案1】:

试试这个,

$query = ("select * from projectlist");
$result = mysql_query($query) or die (mysql_error());

while($row = mysql_fetch_array($result, MYSQL_ASSOC)){
echo "<tr>";
    while( list($key, $value) = each($row)){
        //Print value
        echo "<td>" . $value . "</td><td id='del".$value."'><button></button></td>";
    }

    if($_SESSION['rights'] == 'administrator'){
        echo "<td><i class='fa fa-times-circle-o'></i></td>";
    }
echo "</tr>";

【讨论】:

  • 这会在整个表格中的每个 td 旁边放置一个按钮。这就是为什么我将当前的删除图标放在下面的原因。作为最后的td。无论如何,这将如何工作?
  • 你想在哪里放置...?
  • 'if($_SESSION['rights'] == 'administrator')',它会在表格末尾放置一个td
【解决方案2】:

你可以使用mysql_fetch_array($result)代替mysql_fetch_array($result, MYSQL_ASSOC)

$query = ("select * from projectlist");
$result = mysql_query($query) or die (mysql_error());

while($row = mysql_fetch_array($result))
{
  $id = $result['id']; // you unique column in table

  $col1 = $result['col1']; //similarly all other columns

    echo "<td>$col1</td>"; 
    if($_SESSION['rights'] == 'administrator'){
        echo "<td><a href='your_current_page.php?id=$id'><i class='fa fa-times-circle-o'></i></a></td>";
    }
echo "</tr>";
   }

删除行的代码

if(isset($_GET['id']))
 {
    $id= $_GET['id'];
    mysql_query("delete from table where id='$id'");
    echo "deleted";//whatever you want to do
 }

【讨论】:

    【解决方案3】:

    Ajax 一点也不复杂。

    当我需要 Ajax 时,我更喜欢 jQuery:

    <!DOCTYPE html>
    <html>
    <head>
    <title>Example</title>
    <script type='text/javascript' src='//code.jquery.com/jquery-1.11.0.js'></script>
    <script type='text/javascript'>
      $(function() { // when page loded
        $(".del").on("click",function(e) { // clicking on a class=del thing
          e.preventDefault(); // stop any submission from the button
          $.post("delete.php",{ "id":$(this).val()},function(data) {
           $("#somemessageDiv").html(data);
          });
        });
      );
    </script>
    

    使用类而不是 ID,因为 ID 必须是唯一的

    echo "<td>" . $value . "</td>";
    if($_SESSION['rights'] == 'administrator'){
      echo "<td><button class='del' value='".value."'>DELETE</button></td>";
    }
    

    现在你需要 delete.php 来获取一个 id 并返回成功或错误

    【讨论】:

    • 我有一些jquery知识,但没有ajax。这看起来很不错。但是我将如何将数据库中的 id 解析为按钮呢?
    • 我希望你能处理好。对不起,不在我的照片上
    【解决方案4】:
    • 创建用于删除特定行的表单。
    • 创建一个隐藏字段,其值为该行的 id。
    • 创建一个 deleterow.php 并编写代码,使用 mysql 的删除查询从数据库中删除该行。

    if($_SESSION['rights'] == 'administrator') {
        <form type='post' action ='deleterow.php'>
            <input type="hidden" name='rowid' value='<?php echo $rowid ;?>' />
            echo "<td><input type='submit' name="submit" value="delete" /></td>";
        </form>
    }
    

    【讨论】:

      最近更新 更多