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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Помогите, правильно сделать запрос

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
julia_namaste
Отправлено: 03 Мая, 2016 - 17:46:17
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Март 2016  


Помог: 0 раз(а)




Здравсвуйте, я делаю фильтр товаров по параметрам.

С тем кодом, что сейчас, фильтрация работает правильно, только если выбрать и метал и вставку. А если выбираю что-то одно, то ничего не находит. Скажите в чем ошибка. Или подскажите как сделать.

PHP:
скопировать код в буфер обмена
  1.  
  2.         <?PHP  
  3.  
  4.                 if ($_GET["value_param"])
  5.                 {
  6.                         $check_metal = implode(',',$_GET["value_param"]);
  7.                         $check_rock = implode(',',$_GET["value_param"]);
  8.                 }
  9.  
  10.                 $start_price = (int)$_GET["start_price"];
  11.                 $end_price = (int)$_GET["end_price"];
  12.                
  13.                 if (!empty($check_metal) OR !empty($end_price) OR !empty($check_rock))
  14.                 {
  15.                         if (!empty($check_metal)) $query_metal = " AND metal_param  IN($check_metal)";
  16.                         if (!empty($check_rock)) $query_rock = " AND rock_param  IN($check_rock)";
  17.                         if (!empty($end_price)) $query_price = " AND price BETWEEN $start_price AND $end_price";
  18.                 }
  19.                
  20.                
  21.                 //вывод товара
  22.                 $result = mysql_query("SELECT * FROM products WHERE visible='1' $query_price $query_metal $query_rock ORDER BY id_products DESC",$db) or die(mysql_error());
  23.                
  24.                 //проверка наличия товаров
  25.                 if (mysql_num_rows($result) > 0)
  26.                 {
  27.                         $row = mysql_fetch_array($result);
  28.                         do {
  29.                        
  30.                         echo '
  31.                         <li>
  32.                         <p class="title-view"><a href=""><b>'.$row["title"].'</b></a></p>
  33.                                
  34.                         <a class="add-basket-view"></a>
  35.                         <p class="price-view"><strong>'.$row["price"].' руб.</strong> </p>
  36.                         </li>';
  37.                         }
  38.                 while ($row = mysql_fetch_array($result));
  39.                 }
  40.                 else
  41.                         {
  42.                         echo '<p>Категория не доступна или товаров данной категории нет </p>';
  43.                         }
  44.                                 echo '</ul>';
  45.                        
  46.                 ?>     
  47.  



без if (!empty($check_rock)) $query_rock = " AND rock_param IN($check_rock)"; все работало хорошо.
 
 Top
Viper
Отправлено: 03 Мая, 2016 - 18:39:54
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




результат
PHP:
скопировать код в буфер обмена
  1. echo "SELECT * FROM products WHERE visible='1' $query_price $query_metal $query_rock ORDER BY id_products DESC";
когда не работает - в студию

(Отредактировано автором: 03 Мая, 2016 - 18:40:26)



-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
julia_namaste
Отправлено: 03 Мая, 2016 - 18:49:39
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Март 2016  


Помог: 0 раз(а)




Viper пишет:
результат
PHP:
скопировать код в буфер обмена
  1. echo "SELECT * FROM products WHERE visible='1' $query_price $query_metal $query_rock ORDER BY id_products DESC";
когда не работает - в студию



делала. Вывод это
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * FROM products WHERE visible='1' AND price BETWEEN 400 AND 10000 AND metal_param IN(1) AND rock_param IN(1) ORDER BY id_products DESC
 
 Top
Viper
Отправлено: 03 Мая, 2016 - 20:08:58
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




julia_namaste пишет:
А если выбираю что-то одно
потому что AND.


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


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



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB