编辑/更新搜索查询中的一个结果

时间:2011-01-06 11:41:18

标签: php mysql html

我正在创建一个搜索项目的页面,然后可以编辑/更新它。当它只返回一个结果时,我能够做到这一点,但当它给我多个结果时,我只能编辑最后一个项目。以下是我的代码:

.......
$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']."&nbsp;</td>";
echo "<td>Rm ".$info['room']."&nbsp;</td>";
echo "<td>".$info['switch']."&nbsp;</td>";
echo "<td>".$info['port']."&nbsp;</td>";
echo "<td>".$info['notes']."&nbsp;</td>";
echo "<td style=\"text-align:center;\"><input type=\"Submit\" value=\"Edit\" ></td></tr>";      
}

// more code here //

然后这是结果的屏幕截图:

alt text

想法是用户应该能够点击“编辑”并能够编辑/更新该特定项目。但是当我点击任何编辑按钮时,我只能编辑最后一项。我在这里错过了什么?有更简单的方法吗?

谢谢你们,新年快乐!

2 个答案:

答案 0 :(得分:2)

没有形式结束标记 - 应在每个“编辑”按钮后添加。

现在,由于表单没有关闭,每个表单中有几个隐藏的输入和相同的“djnumber”,我想,浏览器只发送一个值 - 这是在你的最后一行中指定的。

因此,在循环结束时添加以下内容:

echo "</form>";

应该有帮助。

答案 1 :(得分:1)

datajack有什么价值?

如果值为datajack1datajack2等,则LIKE每次都会返回第一个值,您需要使查询更具体。

$sql = "SELECT * From dj WHERE datajack id ' " . mysql_escape_string($id) . "' LIMIT 1";

我已经将查询更改为匹配一行并且还使用了id字段,在这种情况下使用LIKE是不好的,您想要编辑特定行,而不是可能LIKE的行您认为正在编辑的行。

注意使用mysql_escape_string()也可以阻止MySQL注入技术。

希望有所帮助。