Показать сообщение отдельно
  #5 (permalink)  
Старый 25.01.2016, 01:05
Интересующийся
Отправить личное сообщение для greenrow Посмотреть профиль Найти все сообщения от greenrow
 
Регистрация: 22.01.2016
Сообщений: 12

Спасибо за ответ)

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

Но все же интересно какими алгоритмами вы пользуетесь для подобных задач,(конечно не код нужен и просто информация,может быть паттерн есть)
Сообщение от laimas Посмотреть сообщение
Вам нужно выбрать записи согласно условиям, при этом выборка будет по одному полю в SQL таблице, если судить по условиям, так? Какую структуру данных от сервера вы ожидаете?
.
В фильтре помимо дат(где действительно все просто,так как данные получаем использую mysql функции) есть уже более сложные запросы исходя переданных параметров.

Если выбраны пункты:1-Локация 2-Категория 3-Дата 4-популярные,то соответственно на сервер попадает 4 параметра.Так как в фильтре -Дата есть несколько вариантов выборки(день,неделя и т.п),то получается что на клиенте и сервере это должно быть все обработано и получается оочень большой код проверок

По поводу структуру данных от сервера - здесь все просто:массив данных переводим в json и на клиенте разбираем

json
project_all
	
Object { id="20",  user_id="31",  name="colors",  ещё...}
id "20"
user_id "31"
name "colors"
ava   "/uploads/31/temp/080116_546.png"
date   "2016-01-08"
nickname "test1"
category [Object { name="Фотография"}]
name "Фотография"
likes "0"

Сообщение от laimas Посмотреть сообщение
Но у вас странная логика в коде. По щелчку по некому элементу project_sort_info_click проверяется то, чего в принципе еще нет на клиенте, так как В самом конце ,после всех проверок отправляем на сервер верный результат. Во-первых что за верный результат, результат чего? Во-вторых и получаем ответ от сервера или ошибку - и что же он должен отдать судя по логике, верно ли проверил клиент?
.
Если произошел тригер на элементе $('.project_sort_info_click'),значит какие то данные точно уже есть и мы их ищем)

Например если выбрана дата -неделя и локация -Москва,то сначало данные записываются в определенные теги Например
$('.project_time') //-для даты
а уже потом происходит триггер на функцию обработчик.А функция уже ищет эти данные
$('.project_sort_info_click').click(function(){/*эта функция вызывается когда произошел выбор значения(или значений) из фильтра*/

    var req_rez={};
    var error;
var data_type_rez=$('.project_time').attr('datetype');
    var project_date=$('.project_time').text();/* это и есть данные для фильтра по дате, которые проверяет функция.Аналогично с другими вариантами */

    /*здесь выводим результата если выбрана только дата*/
    else if(project_date !='' && collection == '' && project_date ==''){
        
        switch(data_type_rez){  //это

              case  "calendar_date":
                 error='нет проектов за выбранную дату';
                 req_rez={date:calendar};
                 break;
             case  "day":
                 error='нет активных проектов за текущий день';
                 req_rez={get_thisdate:'ok'};
                 break;

           
        }
       /****тут далее подобный код с различными вариантами 


/*** и так все возможные комбинации*//

        $.getJSON(get_all_project_url,req_rez,function(data){
                getprog_json(data,error);
     }

По поводу верного результата и ошибок.req_rez
Пример
case  "day":
                 error='нет активных проектов за текущий день';
                 req_rez={get_thisdate:'ok'};
                 break;


Пример простой выборки если выбран фильтр по дате-за 1день,то на сервер кидаем параметр req_rez={get_thisdate:'ok'};На сервере смотри если пришел get_thisdate,значит ищем только за 1 день.Если же более сложный запром например фильтр по дате-за 1день локация -москва

то код такой
error='нет активных проектов за текущий день в выбранном городе';
req_rez={get_thisdate_and_loc:'ok',city:'location'};

Если на сервере пришел параметр get_thisdate_and_loc значит я должен прочитать город из параметра city И выбрать за 1 день..
А если нет данных то я вывожу на клиенте перемeнную error

Последний раз редактировалось greenrow, 25.01.2016 в 01:21.
Ответить с цитированием