从数据库中的选择框自动填充

时间:2012-10-01 15:25:15

标签: php mysql

希望你能提供帮助,请原谅任何糟糕的编码或任何不当,我是新手,只是为了让事情发挥作用而闯入。

那就是说,在我的一个项目中,我有这个代码,它在加载页面时成功填充数据库的下拉列表:

<select name="Region" id="Region">
    <option value="">-- Select Region --</option>
    <?php                     
       $region=$POST['Region'];    
       if ($region); {
            $regionquery = "SELECT DISTINCT REGION FROM Sales_Execs ";    
            $regionresult = mysql_query($regionquery);    
            while($row = mysql_fetch_array($regionresult)) {
                echo "<option value=\"".$row['REGION']."\">".$row['REGION']."</option>\n  ";
            }       
       }
     ?>
        <script type="text/javascript">
document.getElementById('Region').value = <?php echo json_encode(trim($_POST['Region']));?>;
        </script>
    </select>

在我现在正在进行的下一个项目中,我需要做同样的事情,所以我复制了上面修改的代码,并放在我的新项目中:

<select name="Sales_Exec" id="Sales_Exec">    
<option value="">-- Select SE --</option>
<?php                     
   $salesexec=$POST['Sales_Exec'];    
   if ($salesexec);    
   {
       $salesexecquery = "SELECT DISTINCT Assigned FROM Data ";    
       $salesexecresult = mysql_query($salesexecquery);    
       while($row = mysql_fetch_array($salesexecresult))
       {
            echo "<option value=\"".$row['ASSIGNED']."\">".$row['ASSIGNED']."</option>\n  ";
        }       
    }
?>
<script type="text/javascript">
 document.getElementById('Sales_Exec').value = <?php echo json_encode(trim($_POST['Sales_Exec']));?>;
</script>

</select>

这第二块代码不起作用......我无法弄清楚为什么看起来我已经复制了所有这些并修改了所有必要的部分,有人能发现什么是错误的吗?

三江源!

1 个答案:

答案 0 :(得分:0)

您不能使用$salesexec,但应该$salesexec=$_POST['Sales_Exec'];(注意$_POST而不是$POST

数据库中的字段为Assigned(只有大写字母的第一个字母),您回显未设置的ASSIGNED(全部大写)。

使用

echo "<option value=\"".$row['Assigned']."\">".$row['Assigned']."</option>\n  ";

至于XSS漏洞,实际上甚至不需要使用JavaScript设置值,检查循环中的POST并直接在选项中设置所选值:

echo "<option value=\"".$row['Assigned']."\"";
if (isset($_POST['Sales_Exec']) && $_POST['Sales_Exec'] == $row['Assigned']) { 
    echo ' SELECTED';
}
echo ">".$row['Assigned']."</option>\n  ";