$ _GET方法偶尔不传递任何数据。

时间:2014-10-21 10:29:07

标签: php mysql get

所以我一直在用我用PHP和mysql构建的内容管理系统构建一个小网站。我想要实现的是用户需要能够编辑和删除他们发布的公告帖子,所以我一直在使用$ _GET来获取要编辑/删除的帖子的ID,并将其放入一个表格中持有代码来做到这一点。

现在,这是我一直在使用的代码

if(isset($_GET['edit'])) {
    header('Location: announcement-edit.php?AnnouncementID='.$_GET['AnnouncementID']);  
}       

页面后面的表单执行此操作如下

<form action="announcements.php" method="get">

<input type="hidden" name="AnnouncementID" value="<?php echo $row['AnnouncementID'];?>" />
    <input name="edit" value="Modify" type="submit">
    <input name="delete" value="Delete" type="submit" >
    </form>   

这是令我困惑的地方,这段代码非常完美,上周它突然停了下来,2天前它再次开始工作,现在再次破坏。单击该按钮时,URL返回为;

url / folder / announcements.php?AnnouncementID = 7&amp; edit = Modify

当它应该返回时;

url / folder / announcement-edit.php?AnnouncementID = 7

如果我在网址栏中手动输入以上内容,它可以正常工作,我可以更新数据库中的行。

我完全难以理解为什么它如此气馁,我错过了什么吗?我想以过时的方式做这件事吗?

它不像我刚刚在youtube上跟随一个随机的人如何做到这一点我实际上是在大学(仅在最后一学年)以这种方式展示,我们被告知这是“良好的做法”。看起来非常奇怪,它在一分钟内完美运行然后拒绝下一步工作。

任何想法或建议都将不胜感激。

2 个答案:

答案 0 :(得分:1)

您的表单中有两个提交按钮,当您按 Enter 键时,只会触发一次提交事件。因此,当按下删除按钮时,您的GET参数将只有delete条目,而不是edit条目。

解决这个问题的一种方法是,为两者赋予相同的名称并给出不同的值,因为已经存在不同的值。

<form action="announcements.php" method="get">
    <input type="hidden" name="AnnouncementID" value="<?php echo $row['AnnouncementID'];?>" />
    <input name="action" value="Modify" type="submit" />
    <input name="action" value="Delete" type="submit" />
</form>

答案 1 :(得分:0)

你不需要使用表格。您只需使用网址并使用 标记即可 尝试通过get参数传递参数,如下所示:

<a href="announcements.php?AnnouncementID=<?php echo $row['AnnouncementID'];?>&edit=1">Edit</a>
<a href="announcements.php?AnnouncementID=<?php echo $row['AnnouncementID'];?>&delete=1">Delete</a>