使用PHP从数据库中获取选定的下拉选项

时间:2011-04-11 02:21:51

标签: php mysql

我有一个下拉部分菜单,我需要根据数据库值设置所选值。

我有一个包含以下结构的表:id,pid,disporder,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 "";
}

感谢。

3 个答案:

答案 0 :(得分:1)

你还没有给出足够的信息来真正说出确切的解决方案。如果你在PHP中创建一个select标签,那么构建标记的典型模式是:

<?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>";

看起来您的用例类似,但稍微复杂一些。最重要的是,尽管重要的是,在循环内部,您可以通过某种方式确定给定的行是否应该被“选中”。

答案 1 :(得分:0)

如果我理解正确,您希望将每个$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>";

答案 2 :(得分:0)

如果你试图在多选中使用它,那么这可能有帮助

<?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>