PHP事件侦听器中的多个回显删除编辑按钮

时间:2014-02-13 01:31:55

标签: php mysql button

我正在尝试一个简单的PHP assignement。我在本地运行自己的SQL服务器,并在其上创建了一个名为student的数据库。该数据库包含许多表。其中一个被称为announcement。此表的字段为id, date, subject, text

我被要求向有权删除和/或修改数据库条目的用户显示这些公告。每个条目都需要与下一个条目分开,每个条目都必须有自己的DeleteEdit按钮。新条目也可以添加到数据库中,因此数据库中当前条目的数量是未知的。

到目前为止,我做过类似的事情:

<?php
    $db = mysql_connect("localhost", "root", "");
    mysql_select_db("student",$db);
    mysql_set_charset('utf8',$db);
    $result = mysql_query("SELECT * FROM announcement",$db);
    $announcementID = 1;
    WHILE($myrow = mysql_fetch_array($result))
    {
        echo "<br><h2>Announcement No".$announcementID."</h2>";
        echo "<input type=\"submit\" name=\"Delete\" value=\"Delete\"><input type=\"submit\" name=\"Edit\" value=\"Edit\"><br>";
        echo "<br>Date: ".$myrow["date"];
        echo "<br>Subject: ".$myrow["subject"];
        echo "<br>Text: ".$myrow["text"];
        $announcementID=$announcementID+1;
        echo '<br><hr />';
    }
 ?>

这是一个较大的php文件的一部分,它显示一个网页,其中的条目格式正确。

虽然我确实创建了每个不同声明所需的单独按钮,但我认为这不会有效,因为我无法创建ActionListener(原谅我,但我不知道如何在PHP中调用它)对于那些按钮,我甚至不确定是否可以考虑所有这些按钮都具有相同的名称。任何解决方法?

3 个答案:

答案 0 :(得分:1)

为了让PHP能够证实用户点击了按钮,您需要包围每一行输入。 我已经改进了一些代码,因为我们需要将公告的ID传递给delete-record.php脚本,以便能够识别要从表中删除的记录。

$db = mysql_connect("localhost", "root", "");
mysql_select_db("student",$db);
mysql_set_charset('utf8',$db);
$result = mysql_query("SELECT * FROM announcement",$db);
while($myrow = mysql_fetch_array($result))
{
    echo '<form action="delete-record.php" method="POST">';
    echo '<input type="hidden" name="id" value="' . $myrow["id"] . '">';
    echo "<br><h2>Announcement No".$announcementID."</h2>";
    echo "<input type=\"submit\" name=\"delete\" value=\"delete\"><input type=\"submit\" name=\"edit\" value=\"edit\"><br>";
    echo "<br>Date: ".$myrow["date"];
    echo "<br>Subject: ".$myrow["subject"];
    echo "<br>Text: ".$myrow["text"];
    echo '<br><hr />';
    echo "</form>";
}

然后在delete-record.php中你可以使用:

if(isset($_POST['id'], $_POST['delete'])) {
    $announcementid = $_POST['id'];
    mysql_query("DELETE FROM announcement WHERE id = $announcementid");
}

供将来参考,而不是使用$announcementID = $announcementID+1;,您只需使用post-incremental operator $announcementID++;

我还建议您阅读MySQLiPDO准备好的语句,以防止SQL注入和其他SQL漏洞。

答案 1 :(得分:0)

使用“删除”按钮

在每行周围创建一个表单
WHILE($myrow = mysql_fetch_array($result))
{
    echo "<form method='post' action='delete-record.php'>";
    echo "<br><h2>Announcement No".$announcementID."</h2>";
    echo "<input type=\"submit\" name=\"Delete\" value=\"Delete\"><input type=\"submit\" name=\"Edit\" value=\"Edit\"><br>";
    echo "<br>Date: ".$myrow["date"];
    echo "<br>Subject: ".$myrow["subject"];
    echo "<br>Text: ".$myrow["text"];
    echo "<input type='hidden' name='formID' value='$announcementID' />";
    echo "<input type='submit' value='Delete row'/>";
    echo "</form>";
    echo '<br><hr>';
    $announcementID=$announcementID+1;
}

然后在delete-record.php中:

<?php
if(isset($_POST['formID'])){
    // Delete record query here
}
...

答案 2 :(得分:0)

进行javascript重定向以删除脚本。

WHILE($myrow = mysql_fetch_array($result))
    {
        echo "<br><h2>Announcement No".$announcementID."</h2>";
        echo "<input type=\"submit\" name=\"Delete\" value=\"Delete\" onClick=\"window.location='delete_announcement.php?announcemenID=".$announcementID."';\">"
        echo "<input type=\"submit\" name=\"Edit\" value=\"Edit\" onClick=\"window.location='edit_announcement.php?announcemenID=".$announcementID."';\"><br>";
        echo "<br>Date: ".$myrow["date"];
        echo "<br>Subject: ".$myrow["subject"];
        echo "<br>Text: ".$myrow["text"];
        $announcementID=$announcementID+1;
        echo '<br><hr />';
    }

delete_announcement.php连接到数据库并执行

mysql_query("DELETE FROM announcement WHERE announcemenID=" . $_REQUEST["announcemenID"],$db);

不要忘记确保$_REQUEST["announcemenID"]只保留整数。

要进行修改,您需要创建单独的网页edit_announcement.php,其中所有字段都可以编辑。