Получить выбранный выпадающий параметр из базы данных с помощью PHP

#php #mysql

#php #mysql

Вопрос:

У меня есть выпадающее меню раздела, в котором мне нужно установить выбранное значение на основе значений базы данных.

У меня есть таблица со следующей структурой: id, pid, disorder, title, URL

Затем я использую этот код для выпадающего списка:

 echo "<select name="parent" id="parent">n";
echo "<option value="0">No Parent</option>";
$query = $db->simple_select("navbar", "*", "pid='0'");
while($parent = $db->fetch_array($query))
{
    echo "<option value="".$parent['id']."">".$parent['title']."</option>";
}
echo "</select>";
  

Как бы я поступил, получив выбранное значение на основе того, что есть в базе данных?

У меня есть несколько записей в таблице, поэтому использование массива со значениями (аналогично этому) — это не то, что я хочу использовать:

 $options = array('1', '2', '3');
foreach($options as $option)
{
    if($option = $parent['id'])
    {
        echo "selected";
    }
    else
    {
        echo "";
}
  

Спасибо.

Ответ №1:

На самом деле вы не предоставили достаточно информации, чтобы действительно сказать, каким было бы точное решение. Однако, если вы создаете тег select в PHP, типичный шаблон для построения разметки:

 <?php

$options = get_me_some_options();
$select_markup = '<select name="my-select" id="my-select>';

foreach ($options as $key => $val) {
    $selected = '';
    if (is_this_selected($val)) {
        $selected = 'selected';
    }
    $select_markup .= "<option $selected val="" 
        . $val['id'] . "">" . $val['name'] . '</option>';
}

echo $select_markup . "</select>";
  

Похоже, что ваш вариант использования похож, но немного сложнее. В конечном счете, однако, важно то, что внутри цикла у вас есть какой-то способ определить, должна ли данная строка быть «выбрана» или нет.

Ответ №2:

Если я правильно понимаю, вы хотите сравнить каждое из них $parent['id'] со значениями вызываемого массива $options . Попробуйте это:

 $options = array('1', '2', '3');

echo "<select name="parent" id="parent">n";
echo "<option value="0">No Parent</option>";
$query = $db->simple_select("navbar", "*", "pid='0'");
while($parent = $db->fetch_array($query))
{
    $selected = ( in_array($parent['id'], $options) ? ' selected' : '';
    echo "<option value="".$parent['id'].""$selected>".$parent['title']."</option>";
}
echo "</select>";
  

Ответ №3:

Если вы пытаетесь использовать это в multiselects, то это может помочь

 <?php
$optionsToSelect=array(1,2,3);
?>
<select name="parent" id="parent">
<?php
foreach($allOptions as $opt){
?>
<option value="<?php echo $opt['value'];?>" <? echo $opt['selected']==1?'selected="selected"':'';?>><?php echo $opt['optTitle'];?><option>
<?php
}
?>
</select>