动态创建从表中删除行的按钮

问题描述 投票:0回答:1

我正在尝试为数据库中的每一行创建一个按钮,当按下该按钮时,将删除该特定行。我还要指出的是,数据库中的数据可以正确显示,并且我正在使用的表也完全可以使用。按钮出现在每行的侧面,单击按钮时,该行消失了,但数据并未删除从数据库中重新加载页面时,将重新显示该页面。

编辑:以下代码可以正常工作:

    <?php
// Check connection
include_once 'config.php';
if ($link->connect_error) {
die("Connection failed: " . $link->connect_error);
}
$sql = "SELECT * FROM records";
$result = $link->query($sql);
function post($key){ return(isset($_POST[$key]) ? htmlspecialchars($_POST[$key]) : ""); }
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
    if(post('rowButton'.$row['id']) =="Delete"){
        $del = mysqli_query($link, "DELETE FROM records WHERE id=" . $row['id']);
        $deleted = '<p>Entry ' . $row['id'] . ' was succesfully deleted</p>';
    }
    else {
        echo '<form action ="' . $_SERVER['PHP_SELF'] . '" method="post">';
        echo "<tr>";
        echo "<td>" . $row['id'] . "</td>";
        echo "<td>" . $row["visitingdate"]. "</td>";
        echo "<td>" . $row["department"] . "</td>";
        echo "<td>" . $row["visitingreason"]. "</td>";
        echo "<td>" . $row["importance"]. "</td>";
        echo "<td>" . $row["visitorname"]. "</td>";
        echo "<td>" . $row["company"]. "</td>";
        echo "<td>". $row["internalrecipientname"]. "</td>";
        echo "<td>". $row["visitinglocation"]. "</td>";
        echo "<td>". $row["ETA"]. "</td>";
        echo "<td>". $row["ETD"]. "</td>";
        echo "<td>". $row["HRverification"]. "</td>";
        echo "<td>". $row["visitcompleted"]. "</td>";
        echo '<td><input type="submit" name="rowButton'. $row['id'] .'" value="Delete"/> </td>';
        echo "</tr>";
        echo "</form>";
    }
}
echo "</table>";
echo $deleted;
} 
else { echo "0 results"; }
$link->close();
?>
php html mysql button
1个回答
0
投票

首先,这似乎是rather vulnerable to SQL injection attacks。 StackOverflow是预先指出这一点的字体,因为这确实是一个已解决的问题,您应该在开发的早期阶段就予以解决。您正在获取不受信任的数据(用户提交的数据,没有对其进行清理),并将其直接放入SQL查询中。发生这种情况时,可能会发生坏事。现在撇开这个,继续您的实际问题。

“没有任何反应”表示页面完全没有变化,对吧?因此,单击按钮时浏览器不知道该怎么办。

我认为您没有在此处放置任何<form...>声明,这对于<input type="submit">做任何有用的操作都是必需的。您可以将JavaScript与独立的Submit按钮一起使用,但是我也没有在您的代码中看到它。您将需要一些信息来告诉浏览器,当按下“提交”按钮时该怎么做。

我还没有真正测试您的其余代码,但是根据您已有的内容,您可以添加以下内容:

    else {
+         echo '<form action ="' . $_SERVER['PHP_SELF'] . '" method="post">';
        echo "<tr>";

        echo "</tr>";
+        echo "</form>";
    }

((不添加加号,仅显示添加的行)。我应该补充一点,我通常不使用这样的提交按钮,因此我有可能错过了一些有关如何调用此方法的其他详细信息,但是将表单放在<form>标记中至少是一个不错的开始。 >

© www.soinside.com 2019 - 2024. All rights reserved.