使用 PHP 根据 URL 参数选择了多个下拉列表
Multiple Dropdown selected based on URL parameter using PHP
根据 URL 参数为我的表单 select 输出多个 "selected" 的最佳方法是什么?
在我的 URL 中,我可能有这些参数 &carBrand=1607191|Acura&carbrand=1607185|Alpha Romeo
但是当我提交 URL 时,唯一的选择 selected 是第二个。对于这种形式,我需要通过 url.
编辑多辆汽车 selections select
<?php $carBrand = !empty( $_GET['carBrand'] ) ? $_GET['carBrand'] : ''; ?>
<select name="brands[]" id="selectBrands" class="form-control" multiple="multiple">
<option value="1607191|Acura" <?php echo $carBrand == '1607191|Acura' ? 'selected' : ''; ?>>Acura</option>
<option value="1607185|Alpha Romeo" <?php echo $carBrand == '1607185|Alpha Romeo' ? 'selected' : ''; ?>>Alpha Romeo</option>
<option value="1607197|Aston Martin" <?php echo $carBrand == '1607197|Aston Martin' ? 'selected' : ''; ?>>Aston Martin</option>
<option value="1607188|Audi" <?php echo $carBrand == '1607188|Audi' ? 'selected' : ''; ?>>Audi</option>
<option value="1607200|BMW" <?php echo $carBrand == '1607200|BMW' ? 'selected' : ''; ?>>BMW</option>
<option value="1607194|Bentley" <?php echo $carBrand == '1607194|Bentley' ? 'selected' : ''; ?>>Bentley</option>
<option value="1607203|Bugatti" <?php echo $carBrand == '1607203|Bugatti' ? 'selected' : ''; ?>>Bugatti</option>
<option value="1607206|Buick" <?php echo $carBrand == '1607206|Buick' ? 'selected' : ''; ?>>Buick</option>
</select>
像 &carBrand=1607191|Acura&carBrand=1607185|Alpha
这样的 Urls 以下列方式处理:carBrand=
的每个后续值都会覆盖 前一个。要获得 carBrand
值的数组,您需要在 url 中使用 []
符号,即:
&carBrand[]=1607191|Acura&carBrand[]=1607185|Alpha
在每个carBrand
之后看到[]
?这就是你需要的。
之后你的代码可以这样写:
<?php $carBrand = !empty( $_GET['carBrand'] ) ? $_GET['carBrand'] : array(); ?>
我使用 array()
作为默认值,这样以后 in_array
函数就不会抛出错误。
您的 <select>
代码将是:
<select name="brands[]" id="selectBrands" class="form-control" multiple="multiple">
<option value="1607191|Acura" <?php echo in_array('1607191|Acura', $carBrand) ? 'selected' : ''; ?>>Acura</option>
<option value="1607185|Alpha Romeo" <?php echo in_array('1607185|Alpha Romeo', $carBrand) ? 'selected' : ''; ?>>Alpha Romeo</option>
<!-- More options here -->
</select>
根据 URL 参数为我的表单 select 输出多个 "selected" 的最佳方法是什么?
在我的 URL 中,我可能有这些参数 &carBrand=1607191|Acura&carbrand=1607185|Alpha Romeo
但是当我提交 URL 时,唯一的选择 selected 是第二个。对于这种形式,我需要通过 url.
编辑多辆汽车 selections select <?php $carBrand = !empty( $_GET['carBrand'] ) ? $_GET['carBrand'] : ''; ?>
<select name="brands[]" id="selectBrands" class="form-control" multiple="multiple">
<option value="1607191|Acura" <?php echo $carBrand == '1607191|Acura' ? 'selected' : ''; ?>>Acura</option>
<option value="1607185|Alpha Romeo" <?php echo $carBrand == '1607185|Alpha Romeo' ? 'selected' : ''; ?>>Alpha Romeo</option>
<option value="1607197|Aston Martin" <?php echo $carBrand == '1607197|Aston Martin' ? 'selected' : ''; ?>>Aston Martin</option>
<option value="1607188|Audi" <?php echo $carBrand == '1607188|Audi' ? 'selected' : ''; ?>>Audi</option>
<option value="1607200|BMW" <?php echo $carBrand == '1607200|BMW' ? 'selected' : ''; ?>>BMW</option>
<option value="1607194|Bentley" <?php echo $carBrand == '1607194|Bentley' ? 'selected' : ''; ?>>Bentley</option>
<option value="1607203|Bugatti" <?php echo $carBrand == '1607203|Bugatti' ? 'selected' : ''; ?>>Bugatti</option>
<option value="1607206|Buick" <?php echo $carBrand == '1607206|Buick' ? 'selected' : ''; ?>>Buick</option>
</select>
像 &carBrand=1607191|Acura&carBrand=1607185|Alpha
这样的 Urls 以下列方式处理:carBrand=
的每个后续值都会覆盖 前一个。要获得 carBrand
值的数组,您需要在 url 中使用 []
符号,即:
&carBrand[]=1607191|Acura&carBrand[]=1607185|Alpha
在每个carBrand
之后看到[]
?这就是你需要的。
之后你的代码可以这样写:
<?php $carBrand = !empty( $_GET['carBrand'] ) ? $_GET['carBrand'] : array(); ?>
我使用 array()
作为默认值,这样以后 in_array
函数就不会抛出错误。
您的 <select>
代码将是:
<select name="brands[]" id="selectBrands" class="form-control" multiple="multiple">
<option value="1607191|Acura" <?php echo in_array('1607191|Acura', $carBrand) ? 'selected' : ''; ?>>Acura</option>
<option value="1607185|Alpha Romeo" <?php echo in_array('1607185|Alpha Romeo', $carBrand) ? 'selected' : ''; ?>>Alpha Romeo</option>
<!-- More options here -->
</select>