大家好,抱歉我的英文,
我尝试通过选定的单选按钮进行简单的更新,但它无法正常工作。我有一个3< input type ='radio'> while循环中的按钮和每个按钮应该执行我想要过滤的其他内容。
$result=mysql_query("SELECT id FROM table WHERE state=0");
while ($record=mysql_fetch_array($result)):
<form method='post' action=''>
<input type='radio' name='state' value='1' /> 1
<input type='radio' name='state' value='2' /> 2
<input type='radio' name='state' value='3' /> 3
<input type='submit' value='Send' />
</form>
endwhile;
如果我选择三个按钮之一并单击“发送”,那么一行(基于ID)应该是更新MySQL数据库:
mysql_query ("UPDATE table SET state=(selected radio button number 1-3) WHERE id=$record[id]");
但是,脚本必须在while循环之外,如果我这样做,它就不起作用,因为脚本无法识别选择了哪个ID。
如果我这样做:
$result=mysql_query("SELECT id FROM table WHERE state=0");
while ($record=mysql_fetch_array($result)):
<form method='post' action=''>
<input type='radio' name='state' value='$record[id]' /> 1
<input type='radio' name='state' value='$record[id]' /> 2
<input type='radio' name='state' value='$record[id]' /> 3
<input type='submit' value='Send' />
</form>
endwhile;
然后ID被脚本识别,但我不知道,我怎样才能过滤哪个号码(1,2或3)正在发送到“状态”列的UPDATE查询。对我来说这是一个很大的困境,我无法弄明白。我需要识别ID并过滤所选的数字(1-3)。你能救我一下吗?
答案 0 :(得分:1)
有两种选择。
<强>首先强>
$result=mysql_query("SELECT id FROM table WHERE state=0");
while ($record=mysql_fetch_array($result)):
<form method='post' action=''>
<input type='hidden' name='recordId' value='$record[id]' />
<input type='radio' name='state' value='1' />
<input type='radio' name='state' value='2' />
<input type='radio' name='state' value='3' />
<input type='submit' value='Send' />
</form>
endwhile;
和
$recordId = (int)$_POST['recordId'];
$state = (int)$_POST['state'];
mysql_query ("UPDATE table SET state=$state WHERE id=$recordId");
<强>第二强>
$result=mysql_query("SELECT id FROM table WHERE state=0");
<form method='post' action=''>
while ($record=mysql_fetch_array($result)):
<input type='radio' name='state[$record[id]]' value='1' />
<input type='radio' name='state[$record[id]]' value='2' />
<input type='radio' name='state[$record[id]]' value='3' />
endwhile;
<input type='submit' value='Send' />
</form>
和
foreach($_POST['state'] as $key => $val) {
$recordId = (int)$key;
$state = (int)$val;
mysql_query ("UPDATE table SET state=$state WHERE id=$recordId");
}
(请注意,上面的代码可能在语法上不正确,并作为该想法的说明)
此外,混合代码和数据是一种不好的做法;请考虑使用prepared statements。