优雅的添加方式";选择“;使用PHP将其转换为dropoverride表单


Elegant way to add "selected" into a dropdrown form using PHP

我有一个看起来像这样的表单:

$guests = 2; // Just for testing
$form = 'Guests<br /><select name="guests">
             <option value="0">0</option>
             <option value="1">1</option>
             <option value="2">2</option>
             <option value="3">3</option>
             <option value="4">4</option>
             <option value="5">5</option>
             <option value="6">6</option>
             <option value="7">7</option>
             <option value="8">8</option>
             <option value="9">9</option>
             </select>';

但是客人的列表最多可以是100,所以我可能不应该检查哪个值是手动选择的。

当用户看到此表单时,对我来说,让所选值变成所选值的好方法是什么?

谢谢!

我通常对动态选择菜单所做的是在数组上使用foreach循环,然后只检查每个项目。

类似于:

$dropdownName = "guests"; //Name of dropdown
$defaultValue = "0"; //value to select if there isn't one already set
$items = array('name'=>'value', 'anotherName'=>'anothervalue'); //items, name=>value
echo '<select name="'.$dropdownName.'">'; //Start Select
$selectedItem = (isset($_POST[$dropdownName])?$_POST[$dropdownName]:$defaultValue); //If a value is set, use it, otherwise use the default
foreach ($items as $name=>$value) //build select
{
    echo '<option value="'.$value.'"'.(($selectedItem == $value)?' selected="selected"':'').'>'.$name.'</option>';
}
echo '</select>';
$guests = 2; // Just for testing
$form = 'Guests<br /><select name="guests">';
for($i = 0; $i <= 100; $i++)
    $form .= "<option value='$i'{$guest == $i ? ' selected=''selected''' : ''}>$i</option>";
$form .= '</select>';

编辑:$i < 101相当蹩脚。。。

您可以将该值存储在一个隐藏字段中,并在document.ready()上,您可以将下拉列表的选定值分配给隐藏值的值。

一个有效但可能对某些用户无效的解决方案。。。