用PHP中的函数定义一个动态下拉列表

用PHP中的函数定义一个动态下拉列表,php,mysql,drop-down-menu,Php,Mysql,Drop Down Menu,我知道已经有人问过这个问题,我花了几个小时浏览了在线消息和教程,但我无法做到这一点:我正在尝试定义一个函数,以便在动态定义的下拉列表中报告所选选项。代码如下: function disease_dropdown($var, $listsql) { // $var is the name of the field $db_connect = mysqli_connect (DB_HOST, DB_USER, DB_PASSWORD, DB_NAME); $listres =

我知道已经有人问过这个问题,我花了几个小时浏览了在线消息和教程,但我无法做到这一点:我正在尝试定义一个函数,以便在动态定义的下拉列表中报告所选选项。代码如下:

function disease_dropdown($var, $listsql) { // $var is the name of the field 

$db_connect = mysqli_connect (DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);          
$listres = mysqli_query($db_connect, $listsql);
$menu = '<option selected value="">--- Select ---</option>\n';

while ($listrow = mysqli_fetch_assoc($listres)) {
    if ( isset($var) && $var == $listrow['cat_id'] ) {
    $selected = $listrow['cat_id'];
    $menu .= '
  <option selected value="' . $selected . '">' . $listrow['disease'] . '</option>';
    }

    else {            
    $menu .= '
  <option value="' . $listrow['cat_id'] . '">' . $listrow['disease'] . '</option>';  
    }

}   
return $menu;
}

该函数工作正常,但我无法将值保留在所选选项中,我不知道原因

listsql=根据cat_id ASC从疾病顺序中选择cat_id疾病


非常感谢您的帮助

首先,您应该将与db相关的代码与构建视图的代码分开。你会看得更清楚,你的bug可能会神奇地自行消失。你的评论说$var是字段的名称,但如果设置$var&&$var==$listrow['cat_id',则这一行{似乎表明$var是字段的值。但是如果它确实是字段的名称,那么您的比较永远不会起作用,也不会有任何结果selected@lonewolf217:非常好的观点!但是在这种情况下我如何引用字段的值呢?为什么我尝试$value=$\u POST['var']我收到未定义的索引var消息…我想这与变量的范围有关?$\u POST应该是全局的。我假设var不是select元素的名称。如果元素是,那么您将使用$\u POST['selectelem']要获得它的价值,您还可以使用它来显示post echo;print_r$\u post;中的可用内容,几乎就在那里……不过还没有。。。