1

我有一个相当简单的问题。我有一个值为 1 到 10 的选择下拉菜单。这是一个编辑屏幕,因此用户已经选择了一个应该选择的值。我给他们机会改变它。所以我需要做的就是在选项值中插入选择的单词。为了完成这个简单的任务,我一直在做一堆不优雅的 if thens。是否有最佳实践或简单的方法来做到这一点。执行所有这些 if then 并创建 10 个新变量似乎没有必要的开销。请注意,出于将 html 与 php 逻辑分开的原因,我不想按顺序写出选项值,我将 html 放在单独的区域中,只需要在适当的位置设置选择的变量。

if ($row['points']==1){
$select1 = "selected"}
if ($row['points']==2){
$select2 = "selected"}
//values 3 through 9
if ($row['points']==2){
$select2 = "selected"}


echo '<select name="points">';
echo '<option value = 1'. $select1.'>1</option>';
echo '<option value=2'. $select1.'>2</option>';
//values 3 through 9
echo '<option value=10'.$select10.'>10</option>';
echo '</select>';
4

4 回答 4

3
for ($x = 1; $x <= 10; $x++) {
   echo "<option value=$x" . ($row['points'] == $x ? ' selected' : '')
      . ">$x</option>';
}
于 2012-05-09T14:51:37.480 回答
2

for 循环对此很有用,使用内联 if else 语句来测试所选用例

echo '<select name="points">';
for ($i=1; $i<=10; $i++) {
   echo "<option value='{$i}'".($row['points']==$i ? ' select="selected"':'').">{$i}</option>";   

}
echo '</select>';
于 2012-05-09T14:52:08.093 回答
1

因为您使用的是单个可选列表(不允许多选),即一次只能选择一个.. 查找http://fi.php.net/str_replace

echo str_replace("value='".$selected_value."'", "value='".$selected_value."' selected", "<option value='1'>1</option><option value='2'>2</option> ....");
于 2012-05-09T14:52:46.293 回答
1

我使用 jquery 和一个隐藏字段来指示 a 的选定值<select>

html:

<input type=hidden name=points value=1>
<select name="points">
  <option value=1>1</option>
  <option value=2>2</option>
</select>

js:

$('input[type=hidden]').each(function(){
            var e = $(this);
            var name = e.attr("name");
            var val = e.val();
            if(name!="")
            {
                e.parent().find('select[name='+name+']').val(val);              
            }       
        });

例子

于 2012-05-09T15:05:58.123 回答