我正在创建一个搜索项目的页面,然后可以编辑/更新它。当它只返回一个结果时,我能够做到这一点,但当它给我多个结果时,我只能编辑最后一个项目。以下是我的代码:
.......
$dj =$_POST[djnum];
$sql= "SELECT * From dj WHERE datajack LIKE '$dj%'";
$result = mysql_query($sql);
//more code in here//
while ($info =mysql_fetch_array($result)) {
// display the result
echo "<form action=\"dj_update.php\" method=\"POST\"><input type=\"hidden\" name=\"djnumber\" value=\"".$info['datajack']."\">";
echo "<tr><td>DJ ".$info['datajack']."</td>";
echo "<td>".$info['building']." </td>";
echo "<td>Rm ".$info['room']." </td>";
echo "<td>".$info['switch']." </td>";
echo "<td>".$info['port']." </td>";
echo "<td>".$info['notes']." </td>";
echo "<td style=\"text-align:center;\"><input type=\"Submit\" value=\"Edit\" ></td></tr>";
}
// more code here //
然后这是结果的屏幕截图:
想法是用户应该能够点击“编辑”并能够编辑/更新该特定项目。但是当我点击任何编辑按钮时,我只能编辑最后一项。我在这里错过了什么?有更简单的方法吗?
谢谢你们,新年快乐!
答案 0 :(得分:2)
没有形式结束标记 - 应在每个“编辑”按钮后添加。
现在,由于表单没有关闭,每个表单中有几个隐藏的输入和相同的“djnumber”,我想,浏览器只发送一个值 - 这是在你的最后一行中指定的。
因此,在循环结束时添加以下内容:
echo "</form>";
应该有帮助。
答案 1 :(得分:1)
datajack
有什么价值?
如果值为datajack1
,datajack2
等,则LIKE
每次都会返回第一个值,您需要使查询更具体。
$sql = "SELECT * From dj WHERE datajack id ' " . mysql_escape_string($id) . "' LIMIT 1";
我已经将查询更改为匹配一行并且还使用了id字段,在这种情况下使用LIKE
是不好的,您想要编辑特定行,而不是可能LIKE
的行您认为正在编辑的行。
注意使用mysql_escape_string()
也可以阻止MySQL注入技术。
希望有所帮助。