我有一个下拉部分菜单,我需要根据数据库值设置所选值。
我有一个包含以下结构的表: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 "";
}
感谢。
答案 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>