Показать сообщение отдельно
  #1 (permalink)  
Старый 11.02.2017, 21:30
Профессор
Отправить личное сообщение для smart-create Посмотреть профиль Найти все сообщения от smart-create
 
Регистрация: 25.10.2016
Сообщений: 157

Простенький фильтр
Доброго времени суток, уже третьи сутки бьюсь над казалось бы просто задачей, но разобраться все не как не получается..

И так, по порядку:
1) Есть таблица которая содержит в себе информацию для 2 разделов "Товары", "Новости" (определяется различие между разделами, с помощью столбца type в таблице);
2) Есть страница на которую, при загрузке выводятся вся информация из вышеописанной таблицы;
3) На странице выпадающий список с 2 пунктами "Товары", "Новости". Нажимаем на "Новости", выводятся только новости, нажимаем на "Товары" выводятся только товары.

РЕАЛИЗАЦИЯ (работаю на Godignaiter):

1) Выводим информацию на страницу так:

<div id="content">
        <!-- ФОРЫЧЬ --->
        <?php $group = $post_array[1]; foreach ($group as $group): ?>
                 <?=$group['img']?>
                 <?=$group['name']?>
                 <?=$group['url_g']?>
                 <?=$group['id']?>
                 <?=$group['visible']?>
        <?php endforeach?>
        <!--/  --->
</div>

<!-- ПЕЙДЖЕР --->
<?php echo $this->pagination->create_links();?>
<!--/  --->


2) Разметка самого фильтра (выпадающего списка):
<div class="dropdown">
       <span class="selLabel">Выберите рубрику</span>
       <input type="hidden" name="cd-dropdown">
       <ul class="dropdown-list">
             <li>
                   <span>Товары</span>
             </li>
             <li>
                   <span>Новости</span>
             </li>
      </ul>
</div>


3) Информацию о выбранном пункте передаем серверу так:
var url_edit = document.location.pathname.split('/')[2];

$(".selLabel").click(function () {
      $('.dropdown').toggleClass('active');
});
$(".dropdown-list li").click(function() {
      $('.selLabel').text($(this).text());
      $('.dropdown').removeClass('active');
     
      $.ajax({
            type: "post",
            url: "../admin_c/load_heading",
            data: {
                 'type': $.trim( $('.selLabel').text() ),
            },
            success: function(data){
                  $('#content').load(''+url_edit+' #content');
            }
     });
});


4) Обработка алгоритма на сервере:
// КОНТРОЛЛЕР
function load_heading() {
        if (isset($_POST['type'])) {
          
            $this->load->library('pagination');
            $config['base_url'] = base_url().'admin_c/load_heading/';
      
            $config['type'] = $_POST['type'];
          
            $this->db->where('type', $_POST['type']);
            $this->db->from('group');
            $config['total_rows'] = $this->db->count_all_results();
          
            $config['per_page'] = '10';
            $config['first_link'] = '<span class="first_last">ПЕРВАЯ</span>';
            $config['last_link'] = '<span class="first_last">ПОСЛЕДНЯЯ</span>';
            $config['next_link'] = '<span class="first_last"><i class="fa fa-chevron-right" aria-hidden="true"></i></span>';
            $config['prev_link'] = '<span class="first_last"><i class="fa fa-chevron-left" aria-hidden="true"></i></span>';

            $this->pagination->initialize($config);
          
            $this->data['post_array'][1] = $this->admin_model->get_group($config, $this->uri->segment(3));
          
            $this->load->view('pages/admin/head');
            $this->load->view('pages/admin/heading', $this->data);
            $this->load->view('pages/admin/footer');
          
        }else{
            $this->load->library('pagination');
            $config['base_url'] = base_url().'admin_c/load_heading/';
      
            $config['total_rows'] = $this->db->count_all('group');
          
            $config['per_page'] = '10';
            $config['first_link'] = '<span class="first_last">ПЕРВАЯ</span>';
            $config['last_link'] = '<span class="first_last">ПОСЛЕДНЯЯ</span>';
            $config['next_link'] = '<span class="first_last"><i class="fa fa-chevron-right" aria-hidden="true"></i></span>';
            $config['prev_link'] = '<span class="first_last"><i class="fa fa-chevron-left" aria-hidden="true"></i></span>';

            $this->pagination->initialize($config);
          
            $this->data['post_array'][1] = $this->admin_model->get_group($config, $this->uri->segment(3));
          
            $this->load->view('pages/admin/head');
            $this->load->view('pages/admin/heading', $this->data);
            $this->load->view('pages/admin/footer');
        }
    }

// МОДЕЛЬ

function get_group($config, $offset){
        $this->db->order_by("id", "desc");
      
        if (isset($config['type'])) {
            $query = $this->db->get_where('group', array('type' => $config['type']), $config['per_page'], $offset);
        }else{
            $query = $this->db->get('group', $config['per_page'], $offset);
        }
        return $query->result_array();
    }


ПРОБЛЕМА: фильтрация не срабатывает..., аякс успешно передает значение серверу, сервер его принимает, ошибок в работе скрипта тоже не наблюдается, но результата нет, все записи из таблица как выводились, так и выводятся.
Очень прошу свежих взглядов и любых советов, как хороших так и плохих, потому как сам в тупике, и уже сломал голову(
Ответить с цитированием