我将以下HTML代码直接嵌入到一个PHP页面中,
<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 上面的代码,并选中一个选项(例如,初学者)。但是,我认为这不是正确的方法(因为它涉及很多条件语句来决定输出正确的代码,即 echo ),所以我想知道是否有方法(如JavaScript / Jquery) )为php设置选项值。
答案 0 :(得分: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>
答案 1 :(得分:1)
以下是如何制作网页(使用PHP):
example.com/foo.php
foo.php
运行所有PHP代码以生成HTML文件正如你所看到的,使用javascript / jquery不仅是错误的,这是不可能的,因为Javascript不知道选择哪个选项(除非你echo
- 为它编了一个JS变量,但是如果您要这样做,为什么不只是echo
首先出现selected
属性?)。
所以使用PHP设置相应选项的selected
属性绝对没有错。然而,正如undefined所述,有一些方法可以避免编写数百万个条件。一个例子是做undefined建议的,另一个例子是将你自己的自定义选择标记逻辑构建为一个类或函数。
另一种方法是使用为您提供此类/函数的众多优秀PHP框架之一。
答案 2 :(得分: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;
});
});