我有以下代码来构建下拉表单字段:
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的新手,所以请温柔......:)
答案 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
有两种解决方法:
您只需将对象传递给您的函数:
titleSelected($tenant_details, 'Ms');
function titleSelected($tenant_details->tenant_title, $val2){
if ($tenant_details->tenant_title == $val) {
return 'selected';
}
return "";
}
只需传递值并进行比较:
titleSelected($tenant_details->tenant_title, 'Ms');
function titleSelected($val1, $val2){
if ($val1 == $val2) {
return 'selected';
}
return "";
}