0

我在一个 PHP 页面中直接嵌入了以下 HTML 代码,

<select name="language_levels[]" class="span2">
    <option value="beginner">beginner</option>
    <option value="intermediate">intermediate</option>
    <option value="fluent">fluent</option>
    <option value="native">native</option>
</select>

现在我想根据数据库中的记录检查其中一个选项,所以在 PHP 页面中,我可以简单地显上面的代码,并检查一个选项(例如,初学者)。但是,我认为这不是正确的方法(因为它涉及很多条件语句来决定要输出的正确代码,即echo),所以我想知道是否有一种方法(如 JavaScript/Jquery)供 php 设置选项价值。

4

3 回答 3

3
$value = 'beginner';
$options = array('beginner', 'intermediate', 'fluent', 'native');

<select name="language_levels[]" class="span2">
  <?php foreach($options as $o) {
    $selected = $o === $value ? "selected='selected'" : "";
    echo "<option value='$o' $selected>$o</option>";
  } ?>
</select>
于 2013-04-27T19:47:16.037 回答
1

以下是网页的制作方式(使用 PHP):

  1. 用户向example.com/foo.php您的服务器请求
  2. 您的服务器运行所有 PHP 代码foo.php以生成 HTML 文件
  3. 该 HTML 文件被发送回用户的机器
  4. 该用户的机器解析 HTML 并在其中运行任何 Javascript

如您所见,使用 javascript/jquery 不仅是错误的,而且是不可能的,因为 Javascript 不知道选择哪个选项(除非您echo为它添加了一个 JS 变量,但如果您打算这样做为什么不一开始就echo去掉selected属性呢?)。

So really there is absolutely nothing wrong with setting the selectedattribute of the appropriate option using PHP. 然而,正如 undefined 评论的那样,有一些方法可以避免编写数百万个条件。一个示例是执行 undefined 建议的操作,另一个示例是将您自己的自定义选择标记逻辑构建为一个类或函数。

另一种方法是使用为您提供此类类/函数的众多优秀 PHP 框架之一。

于 2013-04-27T19:48:25.417 回答
0
<select id = "level" name="language_levels[]" class="span2">
    <option value="beginner">beginner</option>
    <option value="intermediate">intermediate</option>
    <option value="fluent">fluent</option>
    <option value="native">native</option>
</select>

通过使用 jquery 你可以做到这一点

var prevSelected='';
$(function()
{
    // get checked value via ajax call
    ajax(url,function(data)
    {
       if(prevSelected!='')
          $("#level option[value='" + prevSelected + "']").removeAttr("selected","selected");

       $("#level option[value='" + data + "']").attr("selected","selected");
       prevSelected=data;
    });

});
于 2013-04-27T19:53:52.703 回答