Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Выборки из базы данных
Форумы портала PHP.SU » » Вопросы новичков » Выборки из базы данных

Страниц (1): [1]
 

1. Kelly - 10 Сентября, 2011 - 02:10:51 - перейти к сообщению
Добрый день. У меня возникла сложность с такой вещью как "фильтр" как допустим в интернет магазинах. Подскажите примеры реализации если не сложно. Через поиск найти сам не могу потому-что не знаю как это на самом деле называется. Буду благодарен за любую помощь
2. LIME - 10 Сентября, 2011 - 09:55:23 - перейти к сообщению
да очень просто делается
при выборе допустим чекбокса цвет "красный"
в строку запроса добавляем к "WHERE" еще одно условие допустим "AND `color`='red'"
3. Kelly - 11 Сентября, 2011 - 12:12:32 - перейти к сообщению
Насколько я понял в WHERE проверяем IFом существование допустим той же переменной color и если она есть то добавляем ее в условие ?
4. Slavenin - 12 Сентября, 2011 - 00:00:59 - перейти к сообщению
я делал так, при выборе какого-либо фильтра js идет опрос всех доступных фильров со значениями

CODE (javascript):
скопировать код в буфер обмена
  1. function mas_filtr()
  2.   {
  3.     pkd = document.getElementById('i_pkgd').value;
  4.     sts = document.getElementById('i_status').value;
  5.     num = document.getElementById('i_number').value;
  6.     cont = document.getElementById('i_cont').value;
  7.     drv = document.getElementById('i_driver').value;
  8.     date = document.getElementById('i_date_waiting').value;
  9.    
  10.     param = '';
  11.     (pkd == 'all') ? param += ' pkgd like \'%%\'' : param += ' pkgd = \'' + pkd + '\'';
  12.     (sts == 'all') ? param += ', status like \'%%\'' : param += ', status = \'' + sts + '\'';
  13.     (num == 'all') ? param += ', num_car like \'%%\'' : param +=  ', num_car = \'' + num + '\'';
  14.     (cont == 'all') ? param += ', num_container like \'%%\'' : param += ', num_container = \'' + cont + '\'';
  15.     (drv == 'all') ? param += ', driver like \'%%\'' : param += ', driver = \'' +  drv + '\'';
  16.     (date == 'all') ? param += ', date_waiting like \'%%\'' : param += ', date_waiting like \'' +  date + '%\'';
  17.    
  18.     sendAnsServ('search.php?filtr=' + param, '3');//функция ajax
  19.   }

затем на строне сервера все это собирлось в
PHP:
скопировать код в буфер обмена
  1.  function filtrSearch($param)
  2.   {
  3.     $sql = "SELECT a.ID, c.name as stat, num_car, num_container, driver, date_waiting, a.date_chek, b.name as name FROM t_voyage as a
  4.         LEFT JOIN t_pkgd as b
  5.         ON a.pkgd = b.ID
  6.         LEFT JOIN t_status as c
  7.         ON a.status = c.ID ";
  8.     $param = explode(",", $param);
  9.    
  10.     if(count($param) == 1)
  11.     {
  12.       $sql .= " WHERE " .$param[0];
  13.     }
  14.    
  15.     if(count($param) > 1)
  16.     {
  17.       $i = 0;
  18.       while($param[$i])
  19.       {
  20.         if($i == 0)
  21.         {
  22.           $sql .= " WHERE " .$param[0];
  23.         }
  24.         else
  25.         {
  26.           $sql .= " AND " .$param[$i];
  27.         }  
  28.         $i++;
  29.       }
  30.     }
  31.    
  32.     $sql .= " GROUP by date_waiting DESC";
  33. //дальше запрос отправлялся в базу и разбирался
  34. }

 

Powered by ExBB FM 1.0 RC1