2012-02-07 56 views
0

我一直在努力为新线程构建存档。总体目标是,如果有人想编辑或删除新闻帖子,他们可以将其保存为草稿,从而不会向公众显示。我正在使用MySQL来存储所有新闻线程,并且我已经将它打印出来,以便它可以打印出每个新闻和它的信息。但是,当我点击编辑按钮来编辑该线程时,它总是使用最后一个MySQL条目所调用的ID,而不是通过隐藏窗体将其设置为使用的ID。无论如何,这里的代码和所有部分。我很困惑,真的可以用一些帮助。如果你有问题就问。ID在循环中丢失

主脚本:http://pastebin.com/hn3cgVXu
Article_Post:http://pastebin.com/hhaLkuXe
Article_Archive:http://pastebin.com/X2fDg4dk

为ID的原始值是从数据库调用,并且从article_archive

显示组: http://i25.photobucket.com/albums/c51/dog199200/Untitled-2.png

的铅笔是编辑,垃圾箱是删除。图像清楚地表明循环获得了ID,但是当编辑图像被点击时该特定ID没有被传递。

+0

你应该使用mysql_real_escape_string而不是htmlentities - 否则就是一个巨大的安全漏洞。 – whichdan 2012-02-07 01:04:29

+0

请详细解释差异,以及为什么更详细地说明。我被告诉了很多不同的事情,让很多不同的人使用它,令人困惑: -/ – dpg199200 2012-02-07 01:21:52

+0

http://us3.php.net/mysql_real_escape_string - 因为它是一个专门为你正在尝试做的事情而设计的功能:) – whichdan 2012-02-07 01:22:57

回答

0

在您的Article_Archive中,当您循环访问数据库结果时,您将所有结果命名为隐藏的输入字段。

<?php 
while($row = mysql_fetch_array($news_list)) { 
    echo "<form action=\"" . $_SERVER['PHP_SELF'] . "\" method=\"post\" id=\"result_".$row['id']."\" name=\"result_".$row['id']."\">"; 
    // ... 
    echo "... <input type=\"hidden\" name=\"id\" value=\"".$row['id']."\">"; 
    // ... 
    echo "</form>"; 
} ?> 

你说它id,所以当你把多个隐藏输入字段相同的形式上它只是抢到最后一个。当您点击edit时,javascript在哪里?由于您使用相同的name属性覆盖了所有输入字段,因此您将无法使用该代码进行标准表单提交。

+0

我已经意识到了。我试图找出一种解决方法,最好不使用JavaScript。 – dpg199200 2012-02-07 01:18:33

+0

您可以尝试将名称更改为数组键,例如name =“id []” - 会起作用吗? – whichdan 2012-02-07 01:24:13

+0

表单的“提交”在哪里?那么你需要有多个表单。 (编辑我的代码) – 2012-02-07 01:26:50