我正在尝试一个简单的PHP assignement。我在本地运行自己的SQL服务器,并在其上创建了一个名为student
的数据库。该数据库包含许多表。其中一个被称为announcement
。此表的字段为id, date, subject, text
。
我被要求向有权删除和/或修改数据库条目的用户显示这些公告。每个条目都需要与下一个条目分开,每个条目都必须有自己的Delete
和Edit
按钮。新条目也可以添加到数据库中,因此数据库中当前条目的数量是未知的。
到目前为止,我做过类似的事情:
<?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中调用它)对于那些按钮,我甚至不确定是否可以考虑所有这些按钮都具有相同的名称。任何解决方法?
答案 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++;
答案 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
,其中所有字段都可以编辑。