У меня есть следующий код для создания поля формы раскрывающегося списка:
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, поэтому, пожалуйста, будьте осторожны … 🙂
Проблема с вашим кодом в том, что вы не можете сравнить $tenant_details->tenant_title
к значению, так как $tenant_details
был запрошен за пределами вашей функции. Чтобы узнать больше о области видимости переменной PHP переменная область
Есть 2 способа решения:
Вы просто передаете объект в вашу функцию:
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 "";
}
Вместо 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();