php表单中选择的多个选项

php表单中选择的多个选项,php,opencart2.x,Php,Opencart2.x,我在opencart 2.3的product_form.tpl php文件中有以下简单代码: <select name="type" id="type" class="form-control"> <?php if ($type) { ?> <option value="1" selected="selected">Flower</option> <option value="0">Plant</option> <?p

我在opencart 2.3的product_form.tpl php文件中有以下简单代码:

<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>

花
种植
花
种植
一切都很好,很简单,但我需要至少多一个选项才能添加此选择:

<option value="2">Bouquet</option>
花束

你能告诉我,如果有3个选项,这个应该是什么样子吗。。。提前谢谢

您可以使用一个siwtch case块,而不是一堆if。您可以查看此处的文档,您可以比较$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>

选项
中,如果您真的想走这条路,则只需
,然后:

<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建议的方法。

三个选项的案例…
->这三个选项是什么?
$type
的可能值是什么?我不清楚问题到底是什么。您是否尝试将此选项添加到代码中?这在某种程度上不起作用吗?我需要我的$type来获得选项的0/1或2值。在我的示例中,我有两个选项,分别为0和1。我需要在selecttoreceivevalue==2中再添加一个选项。所以我需要在@Sepika
if-elseif-elseif-else
中获得选项value=“2”be“selected”?或
开关
?但是你选择了一个不好的方法,你不需要多次显示整个选项集,你只需要将“选定”文本添加到正确的选项中。你不回答这个问题。为什么要强制执行?只是因为==和===可能会使初学者感到困惑,明确说明代码将起作用。@Darker:你将如何添加另外3项?还是十项?:-)@黑豹:看看我在答案末尾的建议。我完全同意并建议使用其他方法。但仅作为OP的参考,提供这种方式使其工作。@Darker:您在上一个条件中有两个“选定”选项。这是这种糟糕方法的结果,当你需要以这种方式添加新项目时,你可能会犯很多错误。非常感谢!对我来说,这是最舒服的方式!太好了@Sepika:理想的解决方案是创建一个包含项目的数组,并使用foreach循环,但对于您的情况,对于初学者来说,这种方法似乎更干净、更容易。
<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>