PHP复选框更新数据库但下拉菜单没有

时间:2015-08-19 14:39:23

标签: php mysql

我在复选框上有以下脚本,可以相应地使用和更新我的数据库。

 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>";

}}}

现在正在使用更新的脚本。

2 个答案:

答案 0 :(得分:0)

在下方脚本中,您仍然使用$_POST['id'],但您的选择字段的名称为selectid字段为隐藏字段。因此,永远不会使用选择框中的值。

杀死 <input type='hidden' name='id[]' value='" . $host . "'> <select name='select'>将为<select name='id[]'>

并且,请更正那些引号并尝试着眼于sql注入,因为您的脚本容易受到攻击。

答案 1 :(得分:0)

仅当用户选中了复选框时,此代码才会将值设置为$host

<input type='checkbox' name='id[]' value='" . $host . "'/>

尽管此代码将设置值$host,而不管用户做什么。

<input type='hidden' name='id[]' value='" . $host . "'>

尝试删除hidden输入并将select name设置为id[]