Как добавить параметр в URL в соответствии с параметром фильтра, который пользователь выбирает в PHP - PullRequest
0 голосов
/ 07 января 2019

Я делаю расширенную функцию фильтрации, где пользователи могут фильтровать результаты публикации в соответствии с выбранной категорией.

И я хочу, чтобы мой URL был таким: 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 голосов
/ 07 января 2019

Это можно использовать параметр 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" : "" ?>

0 голосов
/ 07 января 2019

Вы не можете получить URL, как это

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 и $ интереса будет массивом, если вы установили его как массив раньше ...

попытайтесь отладить вашу ошибку, затем ... добавьте их после установки переменных ..

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

если он показывает вам строку ... вот и все ... все в порядке ... удалите var_dump и повеселитесь ... еще .. проверьте это ... вот почему вы получаете его как массив ... и передать эти вещи как строку ...

на ваш взгляд .. измените эти две вещи ... измените sort на sort[], и это работает ..

<select class="form-control" name="sort[]" multiple>
0 голосов
/ 07 января 2019

имя выпадающего списка концерта и конференции в виде массива может содержать несколько выбранных значений.

<select multiple name="concert[]" >

При печати концертного массива в конце PHP будут отображены все выбранные значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...