下拉选项未被选中

时间:2015-12-02 16:03:47

标签: php drop-down-menu selected

我有以下代码来构建下拉表单字段:

 if ($current_user->ID) {
    $output .= '
<form action="" method="POST" class="profileForm" onSubmit="return validateMobile()">
<div class="formField">
  <label for="tenant_title">Title</label>
  <select name="tenant_title">
    <option value="Mr"' . titleSelected('Mr') . '>
    Mr
    </option>
    <option value="Miss"' . titleSelected('Miss') . '>
    Miss
    </option>
    <option value="Mrs"' . titleSelected('Mrs') . '>
    Mrs
    </option>
    <option value="Ms"' . titleSelected('Ms') . '>
    Ms
    </option>
  </select>
</div>

此功能可检查数据库中已有的内容:

function titleSelected($value){
    if ($tenant_details->tenant_title == $value) return 'selected';
return false;
}

问题是它始终默认为'Mr',这是第一个选项,无论数据库中有什么。

我错过了什么?

我仍然是一个非常熟悉PHP的新手,所以请温柔......:)

2 个答案:

答案 0 :(得分:0)

而不是selected,您应该返回selected="selected",如下所示:

function titleSelected($value){
    if ($tenant_details->tenant_title == $value) return 'selected="selected"';
    return false;
}


<div class="formField">
  <label for="tenant_title">Title</label>
  <select name="tenant_title">
    <option value="Mr" <?php echo titleSelected('Mr'); ?>>
    Mr
    </option>
    <option value="Miss" <?php echo titleSelected('Miss'); ?>>
    Miss
    </option>
    <option value="Mrs" <?php echo titleSelected('Mrs'); ?>>
    Mrs
    </option>
    <option value="Ms" <?php echo titleSelected('Ms'); ?>>
    Ms
    </option>
  </select>
</div>

<强>编辑:

function titleSelected($value){
    if ($tenant_details->tenant_title == $value) return 'selected';
    return false;
}

function some_function(){

    // your code

    $output = '';  // initialize $output somewhere outside of if block

    if ($current_user->ID){
        $output .= '
        <form action="" method="POST" class="profileForm" onSubmit="return validateMobile()">
            <div class="formField">
              <label for="tenant_title">Title</label>
              <select name="tenant_title">
                <option value="Mr"' . titleSelected('Mr') . '>
                Mr
                </option>
                <option value="Miss"' . titleSelected('Miss') . '>
                Miss
                </option>
                <option value="Mrs"' . titleSelected('Mrs') . '>
                Mrs
                </option>
                <option value="Ms"' . titleSelected('Ms') . '>
                Ms
                </option>
              </select>
            </div>
        </form>';
    }
    return $output;
}

echo some_function();

答案 1 :(得分:0)

您的代码存在的问题是,您无法将$tenant_details->tenant_title与某个值进行比较,因为您的函数外部已请求$tenant_details。要了解有关变量范围的更多信息,请查看PHP variable scope

有两种解决方法:

  1. 您只需将对象传递给您的函数:

    titleSelected($tenant_details, 'Ms');
    
    function titleSelected($tenant_details->tenant_title, $val2){
        if ($tenant_details->tenant_title == $val) {
            return 'selected';
        }
        return "";
    }
    
  2. 只需传递值并进行比较:

    titleSelected($tenant_details->tenant_title, 'Ms');
    
    function titleSelected($val1, $val2){
        if ($val1 == $val2) {
            return 'selected';
        }
        return "";
    }