2013-07-01 144 views
-4

我正在使用下面的代码自动填充下拉选项的值。我试图让它有30号选择。现在它显示了30次序列中的数字30。我将如何获得该序列以显示18-75和30个预选。选择PHP表格选项

<select name="age2" class="numb"> 
<?php 
for ($k = 18; $k <= 75; $k++) 
echo '<option value='.sprintf("%02d", $k).'>'.sprintf("%02d", $k).'</option>'; 
echo '<option value=30 selected>30</option>'; 
?> 
</select> 
+1

这是一个高度冗余的问题。请先了解关于该主题的现有问答,然后指出具体问题。在一个表达式中使用echo和sprintf()会以某种方式显示出您需要掌握一般理解的问题。我会从那个时候开始改善,否则你会犯更多的错误,并且你一直在想。 – hakre

+0

@hakre问题在下面多次回答,其他人理解 – acctman

+0

我写了多余的。因为它是一个超级复制品,如果你想问这样的问题,请概述哪些部分具体与你包含的其他许多现有材料不同。从这个意义上说,你的问题完全不清楚。目前尚不清楚为什么你问这个问题,因为它已经在过去得到解答。 – hakre

回答

3

正确的方法是

<select name="age2" class="numb"> 
<?php 
for ($k = 18; $k <= 75; $k++) 
{ 
    if($k!=30) 
    { 
    echo '<option value='.sprintf("%02d", $k).'>'.sprintf("%02d", $k).'</option>'; 
    } 
    else 
    { 
    echo '<option selected="selected" value='.sprintf("%02d", $k).'>'.sprintf("%02d", $k).'</option>'; 
    } 
} 
?> 
</select> 
+1

+1。一点解释也是必需的。 –

+0

大声笑谢谢,对不起,在移动 –

+0

不,原来的'for'循环只运行第一行,因为它们没有分组在{大括号}中。 – icedwater

3

你只需要您在每次迭代的价值和回声如果值为30

<select name="age2" class="numb"> 
<?php 
for ($k = 18; $k <= 75; $k++){ 
    $value = sprintf("%02d", $k) ; ?> 
    <option value='<?php echo $value ; ?>' <?php echo ($value == 30) ? "selected" : "" ; ?>><?php echo $value ; ?></option> 
<?php } ?> 
</select> 
1

您添加的30选项在每次循环迭代中,您必须将其置于某种状态

<select name="age2" class="numb"> 
<?php 
for ($k = 18; $k <= 75; $k++) { 
if($k ==30) 
{ 
echo '<option selected="selected" value='.sprintf("%02d", $k).'>'.sprintf("%02d", $k).'</option>'; 

} 
else 
{ 
    echo '<option value='.sprintf("%02d", $k).'>'.sprintf("%02d", $k).'</option>'; 
} 

} 
?> 
</select> 
1
<select name="age2" class="numb"> 
<?php 
for ($k = 18; $k <= 75; $k++) 
echo '<option value='.sprintf("%02d", $k). (if($k==30)?'selected="selected"':"").'>'.sprintf("%02d", $k).'</option>'; 
} 
?> 
</select> 
3

30由于您没有在一组花括号中包含语句而显示无序,因此for循环仅在第一行循环。然后仅在整个循环完成之后,即在$k == 75之后打印30。

我建议定义$default值,你应该有多少后来改变:

<select name="age2" class="numb"> 
<?php 
    $default = 30; 
    for ($k = 18; $k <= 75; $k++) { 
     if ($k == $default) { 
      echo '<option value=' . $default . 'selected>' . $default . '</option>'; 
     } else { 
      echo '<option value='.sprintf("%02d", $k).'>'.sprintf("%02d", $k).'</option>'; 
     } 
    } 
?> 
</select> 
4

使用下面的代码

<select name="age2" class="numb"> 
<?php 
for ($k = 18; $k <= 75; $k++) { 
    $selected = ''; 
    if($k == 30){ 
     $selected = 'selected="selected"'; 
    } else { 
     $selected = ''; 
    } 
    echo '<option value='.sprintf("%02d", $k).' '.$selected.' >'.sprintf("%02d", $k).'</option>'; 

} 
?> 
</select>