未选择下拉选项

Dropdown option not being 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 的新手,所以请保持温柔...:)

而不是 selected 你应该 return 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();

您的代码存在的问题是您无法将 $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 "";
    }