选择选项"selected"属性



我脑子里一片空白。基本上我所做的就是创建一个迷你文章管理器。每篇文章可以被分配到以下类别之一,这些类别在选择下拉列表中定义。

  • 其他

当我编辑一篇文章时,我已经从数据库中检索了数据并填充了输入和文本区域。

我现在要做的是将selected属性应用于与文章类别匹配的选项。以下是我所做的,我相信你会同意这是一个糟糕的方法:

<?php if($category == 'Design') {  ?>
    <option value="Design" selected>Design</option>
    <option value="Development">Development</option>
    <option value="Other">Other</option>
<?php } elseif($category == 'Development') { ?>
    <option value="Design">Design</option> 
    <option value="Development" selected>Development</option>
    <option value="Other">Other</option>
<?php } else { ?>
    <option value="Design">Design</option>
    <option value="Development">Development</option>
    <option value="Other" selected>Other</option>
<?php } ?>

所以问题是,我如何实现一个基于文章类别将selected属性应用于<option>的更动态的方法?

为什么不直接在数组中定义类别,然后循环呢?

<?php
$cats = array('Design', 'Development', 'Other');
foreach($cats as $cat)
{
    $selected = ($cat == $category) ? ' selected="selected"' : '';
    echo '<option value="'.$cat.'"'.$selected.'>'.$cat.'</option>';
}
?>

当然,这还有一个额外的好处,如果您需要添加一个新的类别,只需将它添加到数组中。

将类别放入数组中,然后执行如下操作:

$categories = Array("Foo", "Bar", "Baz");
$preselected_category = "Bar";
foreach ($categories as $category) {
    $html = htmlspecialchars($category);
    $selected = "";
    if ($category == $preselected_category) {
        $selected = "selected";
    }
    ?> <option value="<?=$html?>" <?=$selected?>> <?=html?> </option> <?php
}

像下面这样使用

<option value="Design" <?=($category == 'Design')?'selected':''?> >Design</option>
<option value="Development" <?=($category == 'Development')?'selected':''?>>Development</option>
<option value="Other" <?=($category == 'Other')?'selected':''?>>Other</option>

这个怎么样?

<option value="Design" <? if($category == 'Design') { echo 'selected';} ?>>Design</option> 
<option value="Development" <? if($category == 'Development') { echo 'selected';} ?>>Development</option>
<option value="Other" <? if($category == 'Othe') { echo 'selected';} ?>>Other</option>

您可以使用数组来存储类别,并通过它循环生成html。


<?php
    $categories = array(
      'Design',
      'Development',
      'Other',
    );
    $category = 'Design';
    foreach($categories as $cat) {
      $selected = ($category == $cat);
      $selcode = ($selected ? ' selected' : '');
      $html = '<option value="'.$cat.'"'.$selcode.'>'.$cat.'</option>';
      echo $html . PHP_EOL;
    }

相关内容

最新更新