我有以下脚本的复选框工作,并相应地更新我的数据库。
while($row = mysql_fetch_array($result)){
$host = $row['host'];
$environment = $row['environment'];
echo "<tr><td>" . $host . "</td><td>" . $environment . "</td><td><input type='checkbox' name='id[]' value='" . $host . "'/></td></tr>";
}
echo "</tbody></table><input type='submit' value='submit'></form>";
if(gettype($_POST['id'])=="array"){
foreach($_POST['id'] as $val){
$id_c = $val;
$query1 = "UPDATE hosts SET reboot = 'Yes' where host='".$id_c."'";
$result= mysql_query($query1);
if($result === false) {
die(mysql_error());
}
echo "Reboot updated for Host " .$id_c. " is updated. <br>
但是当我用复选框替换它时,它不起作用。复选框脚本如下:
while($row = mysql_fetch_array($result)){
$host = $row['host'];
$environment = $row['environment'];
echo "<tr><td>" . $host . "</td>
<td><select name='id[".$host."]'><option value='Null'>Select any</option>
<option value='DEV/QA/TEST'>DEV/QA/TEST</option>
<option value='PROD/STAGE'>PROD/STAGE</option>
</select></td>
<td>" . $environment . "</td></tr>"; }
echo "</tbody></table><input type='submit' value='submit'></form>";
if (gettype($_POST['id'])=="array") {
foreach($_POST['id'] as $host => $val){
$id_c = $val;
if ($val != 'Null') {
$query1 = "UPDATE hosts SET environment = '$val' where host='$host'";
$result1 = mysql_query($query1);
if($result1 === false) {
die(mysql_error());
}
echo "Environment for Host " .$host. " is updated. <br>";
}}}
在下面的脚本中,您仍然使用$_POST['id']
,但是您的select字段名称为select
,并且id
字段是隐藏字段。因此,选择框中的值将永远不会被使用。
Kill and<input type='hidden' name='id[]' value='" . $host . "'>
<select name='select'>
将变成<select name='id[]'>
。
并且,请纠正这些引号并尝试关注sql注入,因为您的脚本很容易受到攻击。
只有当用户选中复选框时,这段代码才会将值设置为$host
:
<input type='checkbox' name='id[]' value='" . $host . "'/>
无论用户做什么,这段代码都将设置值$host
。
<input type='hidden' name='id[]' value='" . $host . "'>
尝试删除hidden
输入并将select
name
设置为id[]
。