如何根据用户在PHP中选择的过滤器选项向URL添加参数

时间:2019-01-07 07:06:28

标签: php codeigniter

我正在使用高级过滤器功能,用户可以根据选定的类别过滤发布的结果。

我想要这样的网址:https://localhost/unairevent/event/list_event/category[] = 2 & category[] = 40

(URL中的类别字符串来自用户使用多选选择的过滤器选项)

如何根据用户选择的过滤器选项向URL添加字符串?


我尝试过使用这样的方法:

<section class="box text-center">
        <?php 
        $sort = $this->input->post('sort');
        $category = $this->input->post("get_kategori_acara_css[]");
        $interest = $this->input->post("get_interest_acara_css[]");
        ?>

   <?php echo form_open("acara/list_acara/".$category);?>
    <div class="form-inline">
      <p>Advanced Sort & Filter</p>
        <div class="form-group">
          <select class="form-control" name="sort">
            <option selected="selected" disabled="disabled" value="">Sort By </option>
            <option value="acara.id_acara">Newest</option>
            <option value="hits_acara.hits">Trending</option>
            <option value="tanggal_mulai_acara">Upcoming</option>
          </select>
        </div>
        <div class="form-group">
            <?php echo form_dropdown('', $get_checkbox_kategori, '', $get_kategori_acara_css); ?>
        </div>
        <div class="form-group">
            <?php echo form_dropdown('', $get_checkbox_interest, '', $get_interest_acara_css); ?>
        </div>
            <button type="submit" class="btn btn-primary">Submit</button>
    </div>
    <?php echo form_close();?>
  </section>

但是这样的显示错误:

  

消息:数组到字符串的转换


显示错误图片

Show error image

高级滤镜图片

The advanced filter image

3 个答案:

答案 0 :(得分:0)

音乐会和会议下拉列表名称作为数组可以包含多个选定的值。

<select multiple name="concert[]" >

在PHP端打印Concert数组将显示所有选定的值。

答案 1 :(得分:0)

您可以使用GET参数代替URL段。初始测试应通过URL完成,一旦完成测试,请尝试从客户端发送参数,如JavaScript

示例:

  

http://localhost/unairevent?category=1,2,3,4

使用Codeigniter,您可以像这样:

$this->input->get('category'); /* This will return value - 1,2,3,4 */

现在您可以按逗号分割并推送到数组。

$category_array = explode(",", $this->input->get('category'));

为了保持输入选择会话,您可以使用此方法

<?= (in_array("name_of_cat", $category_array)) ? "selected" : "" ?>

答案 2 :(得分:0)

您无法获得这样的网址

https://localhost/unairevent/event/list_event/category[] = 2&类别[] = 40

代替这些 在list_event方法的事件控制器处...使用get方法时可以拥有这些东西...比url应该是 https://localhost/unairevent/event/list_event?category[]=2&category[]=40

并进行更改

$category = $this->input->post("get_kategori_acara_css[]");
$interest = $this->input->post("get_interest_acara_css[]");

到..似乎只有概率

$category = $this->input->post("get_kategori_acara_css");
$interest = $this->input->post("get_interest_acara_css");

如果您之前将变量$ category和$ interest设置为数组,则它们将为数组...

尝试调试错误,然后...在设置变量后添加这些..

var_dump($category);
var_dump($interest);

如果它向您显示字符串...就可以了...一切都很好...删除var_dump并玩得开心..否则..检查它...为什么将它作为数组获取..将那些东西作为字符串传递...

在您看来..更改这两件事...将您的sort更改为sort[]并可以使用..

<select class="form-control" name="sort[]" multiple>