Параметр раскрывающегося списка не выбран

У меня есть следующий код для создания поля формы раскрывающегося списка:

 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, поэтому, пожалуйста, будьте осторожны … 🙂

1

Решение

Проблема с вашим кодом в том, что вы не можете сравнить $tenant_details->tenant_title к значению, так как $tenant_details был запрошен за пределами вашей функции. Чтобы узнать больше о области видимости переменной PHP переменная область

Есть 2 способа решения:

  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 "";
    }
    
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();
0

По вопросам рекламы [email protected]