php 形式的 select 中的多个选项
Multiple options in select in php form
我的 product_form.tpl php opencart 2.3 文件中有这个简单的代码:
<select name="type" id="type" class="form-control">
<?php if ($type) { ?>
<option value="1" selected="selected">Flower</option>
<option value="0">Plant</option>
<?php } else { ?>
<option value="1">Flower</option>
<option value="0" selected="selected">Plant</option>
<?php } ?>
</select>
一切都很好,很简单,但我至少还需要 1 个选项才能添加 select:
<option value="2">Bouquet</option>
你能告诉我在有 3 个选项的情况下应该是什么样子吗...提前致谢!
如果您可以在此处查看文档,则可以使用 switch case 块而不是一堆 https://www.w3schools.com/PhP/php_switch.asp,并且您可以更有条理地比较 $type 的值!祝你好运!
有时候只写一些结构化代码会更容易..
<?php
$options = array(
"1" => "flower",
"0" => "Plant",
"2" => "Bouquet",
"3" => "Rock"
);
$currentval = 2;
?>
<select name="type" id="type" class="form-control">
<?php
foreach($options as $val => $label):
?>
<option value="<?=$val;?>" <?=$currentval == $val ? 'selected' : ''?>><?=$label;?></option>
<?php
endforeach;
?>
正如我在问题评论中所写,你选择了一个糟糕的方法。
<select name="type" id="type" class="form-control">
<option value="1" <?php echo isset($type) && $type == 1 ? 'selected' : '' ?>>Flower</option>
<option value="0" <?php echo isset($type) && $type == 0 ? 'selected' : '' ?>>Plant</option>
<option value="2" <?php echo isset($type) && $type == 2 ? 'selected' : '' ?>>Bouquet</option>
</select>
另一种方法是使用数组并使用 foreach 循环编写下拉菜单。
isset($type)
可以拿上面的代码,需要检查变量是否存在,防止通知未定义的变量。
可以是
$type = isset($type) ? $type : NULL; // or any default value like 0
在 options
中将只是 <?php echo $type == 1 ? 'selected' : ''; ?>
。
如果你真的想走这条路,那么:
<select name="type" id="type" class="form-control">
<?php if ((int)$type === 0) { ?>
<option value="2">Bouquet</option>
<option value="1">Flower</option>
<option value="0" selected="selected">Plant</option>
<?php } elseif ((int)$type === 1) { ?>
<option value="2">Bouquet</option>
<option value="1" selected="selected">Flower</option>
<option value="0">Plant</option>
<?php } elseif ((int)$type === 2) { ?>
<option value="2" selected="selected">Bouquet</option>
<option value="1">Flower</option>
<option value="0">Plant</option>
<?php } ?>
</select>
但我建议使用 Jelmer Jellema 建议的方式。
我的 product_form.tpl php opencart 2.3 文件中有这个简单的代码:
<select name="type" id="type" class="form-control">
<?php if ($type) { ?>
<option value="1" selected="selected">Flower</option>
<option value="0">Plant</option>
<?php } else { ?>
<option value="1">Flower</option>
<option value="0" selected="selected">Plant</option>
<?php } ?>
</select>
一切都很好,很简单,但我至少还需要 1 个选项才能添加 select:
<option value="2">Bouquet</option>
你能告诉我在有 3 个选项的情况下应该是什么样子吗...提前致谢!
如果您可以在此处查看文档,则可以使用 switch case 块而不是一堆 https://www.w3schools.com/PhP/php_switch.asp,并且您可以更有条理地比较 $type 的值!祝你好运!
有时候只写一些结构化代码会更容易..
<?php
$options = array(
"1" => "flower",
"0" => "Plant",
"2" => "Bouquet",
"3" => "Rock"
);
$currentval = 2;
?>
<select name="type" id="type" class="form-control">
<?php
foreach($options as $val => $label):
?>
<option value="<?=$val;?>" <?=$currentval == $val ? 'selected' : ''?>><?=$label;?></option>
<?php
endforeach;
?>
正如我在问题评论中所写,你选择了一个糟糕的方法。
<select name="type" id="type" class="form-control">
<option value="1" <?php echo isset($type) && $type == 1 ? 'selected' : '' ?>>Flower</option>
<option value="0" <?php echo isset($type) && $type == 0 ? 'selected' : '' ?>>Plant</option>
<option value="2" <?php echo isset($type) && $type == 2 ? 'selected' : '' ?>>Bouquet</option>
</select>
另一种方法是使用数组并使用 foreach 循环编写下拉菜单。
isset($type)
可以拿上面的代码,需要检查变量是否存在,防止通知未定义的变量。
可以是
$type = isset($type) ? $type : NULL; // or any default value like 0
在 options
中将只是 <?php echo $type == 1 ? 'selected' : ''; ?>
。
如果你真的想走这条路,那么:
<select name="type" id="type" class="form-control">
<?php if ((int)$type === 0) { ?>
<option value="2">Bouquet</option>
<option value="1">Flower</option>
<option value="0" selected="selected">Plant</option>
<?php } elseif ((int)$type === 1) { ?>
<option value="2">Bouquet</option>
<option value="1" selected="selected">Flower</option>
<option value="0">Plant</option>
<?php } elseif ((int)$type === 2) { ?>
<option value="2" selected="selected">Bouquet</option>
<option value="1">Flower</option>
<option value="0">Plant</option>
<?php } ?>
</select>
但我建议使用 Jelmer Jellema 建议的方式。