Создать эту форму. Повторите набор полей для каждого типа продукта (в этом примере показана футболка):
<form method="post" action="url/to/find_products">
<!-- repeat for all product types -->
<fieldset>
<input type="checkbox" name="products[tshirt][active]" value="1" /> Tshirt
<fieldset>
<input type="checkbox" name="products[tshirt][size]" value="s" /> S
<input type="checkbox" name="products[tshirt][size]" value="m" /> M
<input type="checkbox" name="products[tshirt][size]" value="l" /> L
</fieldset>
</fielset>
<!-- end repeat -->
</form>
Ключ 'active' не используется, но он гарантирует, что ключ типа продукта существует, когда не выбраны параметры.
Метод контроллера будет отличаться, используете ли вы отдельные таблицы для каждого типа продукта или просто поместите их все в одну таблицу. Так как первое сложнее, здесь идет:
function find_products() {
$products = $this->input->post('products');
$results = array();
foreach ($products as $product => $options) {
$table_name = $product."s";
$query = $this->db->from($table_name);
if (count($options['size']) > 0) {
$query->where_in('size', $options['size']);
}
$results = array_merge($results, $query->get());
}
return $results; # Or display view, or whatever.
}
Обратите внимание: это довольно небезопасно. Убедитесь, что введенные пользователем данные верны.