使用PHP基于URL参数选择多个下拉列表

时间:2017-03-13 20:50:29

标签: php html forms select multiple-select

根据网址参数输出多个“已选择”表格的最佳方法是什么?

在我的网址中我可能有这些参数& carBrand = 1607191 | Acura& carbrand = 1607185 | Alpha Romeo

但是当我提交URL时,选择的唯一选项是第二个。对于这种形式,我需要通过网址选择多个汽车选择。

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

1 个答案:

答案 0 :(得分:2)

&carBrand=1607191|Acura&carBrand=1607185|Alpha等网址按以下方式处理:carBrand= 的每个后续值都会覆盖上一个值。要获得carBrand值数组,您需要在您的网址中使用[]表示法,即:

&carBrand[]=1607191|Acura&carBrand[]=1607185|Alpha   

每个[]后看{0}}?这就是你需要的。

之后,您的代码可以写成:

carBrand

我使用<?php $carBrand = !empty( $_GET['carBrand'] ) ? $_GET['carBrand'] : array(); ?> 作为默认值,以便稍后array()函数不会抛出错误。

您的in_array代码将是:

<select>