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 :: Версия для печати :: Фильтр на Js не сортирует данные из mysql
Форумы портала PHP.SU » PHP » SQL и Архитектура БД » Фильтр на Js не сортирует данные из mysql

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

1. kirill.k2709 - 23 Декабря, 2019 - 18:44:16 - перейти к сообщению
Всем привет! По уроку сделал такой фильтр. На HTML он хорошо функционирует. Но когда я попытался подключить его к БД, он при любых манипуляциях убирает только одну статью(каждый раз разную), хотя по логике должен убирать 2. Я прошу вас, подсказать , что я делаю не так? Проблема в Sql запросах или в js скрипте? Привожу все необходимые данные.

Это index.php тут, структура фильтра и его скрипт.

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.         require_once 'connect.php';
  4.         require_once 'function.php';
  5. ?>
  6. <!DOCTYPE html>
  7. <html lang="en">
  8. <head>
  9.         <meta charset="UTF-8">
  10.         <title>Document</title>
  11. </head>
  12.         <body>
  13.                 <select id="flat">
  14.                         <option value="">Все</option>
  15.                 <?PHP $filterflat = get_filterflat(); ?>
  16.                 <?PHP foreach ($filterflat as $post): ?>
  17.                 <option value="<?=$post["id"]?>"><?=$post["rooms"]?></option>
  18.                 <?PHP endforeach; ?>
  19.             </select>
  20.             <select id="metro">
  21.                 <option value="">Все</option>
  22.                 <?PHP $filtermetro = get_filtermetro(); ?>
  23.                 <?PHP foreach ($filtermetro as $post): ?>
  24.                 <option value="<?=$post["id"]?>"><?=$post["name"]?></option>
  25.                 <?PHP endforeach; ?>
  26.             </select>
  27.             <?PHP $posts = get_posts(); ?>
  28.             <?PHP foreach ($posts as $post): ?>
  29.         <div id="items">
  30.                         <div class="item" data-color="<?=$post["flatid"]?>" data-shape="<?=$post["metroid"]?>">
  31.                     <div class="infoFlat">
  32.                         <h3><?=$post["titleflat"]?></h3>
  33.                         <h3><?=$post["titlemetro"]?></h3>
  34.                         <h3><?=$post["price"]?></h3>
  35.                         <p class="b1"><?=$post["date"]?></p>
  36.                     </div>
  37.                     <div class="itemText">
  38.                         <p><?=$post["texts"]?></p>
  39.                     </div>
  40.                 </div>
  41.             </div>  
  42.             <?PHP endforeach; ?>
  43.             <script>
  44.         var flat = document.getElementById('flat');
  45.         var metro = document.getElementById('metro');
  46.         var items_el = document.getElementById('items');
  47.  
  48.         var filter = function() {
  49.             var items = items_el.getElementsByClassName('item');
  50.             for (var i = 0; i < items.length; i++) {
  51.                 if ((flat.value == 'all' || flat.value == items[i].dataset.color) &&
  52.                     (metro.value == 'all' || metro.value == items[i].dataset.shape)) {
  53.                     items[i].style.display = 'block';
  54.                 } else {
  55.                     items[i].style.display = 'none';
  56.                 }
  57.             }
  58.         };
  59.  
  60.         flat.addEventListener("change", filter);
  61.         metro.addEventListener("change", filter);      
  62. </script>
  63.                 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
  64.  
  65.     </body>
  66. </html>
  67.  



Это function.php, здесь запросы к БД.

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3.         function get_posts() { // Как и скрипт выводит все статьи сразу
  4.         global $link;
  5.         $sql = " SELECT * FROM orders_posts ORDER BY rand()";
  6.         $result = mysqli_query($link, $sql);
  7.         $posts = mysqli_fetch_all($result, MYSQLI_ASSOC);
  8.         return $posts;
  9.     }
  10.  
  11.     function get_filterflat() { // 1.select Выводит все option`ы a именно ('все','1-к квратира','2-к квратир','3-к квратир','Другое')
  12.         global $link;
  13.         $sql = "SELECT * FROM filterflat";
  14.         $result = mysqli_query($link, $sql);
  15.         $filterflat = mysqli_fetch_all($result, MYSQLI_ASSOC);
  16.         return $filterflat;
  17.     }
  18.  
  19.     function get_filtermetro() { // 2.select выврдит станции метро (бульвар Рокоссовского , Курская и т.д.)
  20.         global $link;
  21.         $sql = "SELECT * FROM filtermetro";
  22.         $result = mysqli_query($link, $sql);
  23.         $filtermetro = mysqli_fetch_all($result, MYSQLI_ASSOC);
  24.         return $filtermetro;
  25.     }
  26.  
  27.     function get_allFilters() { // Фильтрация статей по select`ам
  28.         global $link;
  29.         $sql = "SELECT * FROM orders_posts WHERE `flatid` = '".$_POST["flat"]."'";
  30.         $result = mysqli_query($link, $sql);
  31.         $allfilters = mysqli_fetch_all($result, MYSQLI_ASSOC);
  32.         return $allfilters;
  33.     }
  34.  
  35. ?>

--
-- Структура таблицы `filterflat`
--

CODE (SQL):
скопировать код в буфер обмена
  1. CREATE TABLE `filterflat` (
  2.   `id` int(10) UNSIGNED NOT NULL,
  3.   `rooms` varchar(255) NOT NULL,
  4.   `textid` int(11) NOT NULL
  5. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;


--
-- Дамп данных таблицы `filterflat`
--

CODE (SQL):
скопировать код в буфер обмена
  1. INSERT INTO `filterflat` (`id`, `rooms`, `textid`) VALUES
  2. (1, '1-к квартира', 1),
  3. (2, '2-к квартира', 2),
  4. (3, '3-к квартира', 3);


-- -------------------------------- ------------------------

--
-- Структура таблицы `filtermetro`
--

CODE (SQL):
скопировать код в буфер обмена
  1. CREATE TABLE `filtermetro` (
  2.   `id` int(10) UNSIGNED NOT NULL,
  3.   `name` varchar(255) NOT NULL
  4. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;


--
-- Дамп данных таблицы `filtermetro`
--

CODE (SQL):
скопировать код в буфер обмена
  1. INSERT INTO `filtermetro` (`id`, `name`) VALUES
  2. (1, 'Бульвар Рокоссовского'),
  3. (2, 'Курская');



-- Структура таблицы `orders_posts`
--

CODE (SQL):
скопировать код в буфер обмена
  1. CREATE TABLE `orders_posts` (
  2.   `id` int(10) UNSIGNED NOT NULL,
  3.   `metroid` int(11) NOT NULL,
  4.   `flatid` int(11) NOT NULL,
  5.   `titlemetro` varchar(50) NOT NULL,
  6.   `titleflat` varchar(50) NOT NULL,
  7.   `price` int(10) NOT NULL,
  8.   `texts` text NOT NULL,
  9.   `date` date NOT NULL
  10. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;


--
-- Дамп данных таблицы `orders_posts`
--

CODE (SQL):
скопировать код в буфер обмена
  1. INSERT INTO `orders_posts` (`id`, `metroid`, `flatid`, `titlemetro`, `titleflat`, `price`, `texts`, `date`) VALUES
  2. (1, 1, 1, 'Бульвар Рокоссовского', '1к', 37000, 'Снимем 1-комнатную квартиру на длительный срок. Платежеспособные молодые люди, состоящие в официальном браке. Супруга - дизайнер интерьера в архитектурном бюро на ул. Халтуринская, 6А, супруг - специалист по системному анализу и управлению в крупной IT-компании. Без вредных привычек, детей и животных. Рассматривают квартиру с косметическим ремонтом, с мебелью и бытовой техникой, этаж выше первого. Бюджет до 37 тыс. Регистрация не нужна. Страховой депозит оплачивают в полном объёме.', '0000-00-00'),
  3. (2, 1, 1, 'Бульвар Рокоссовского', '1к', 37000, 'Молодая семейная пара (29/33 года), без детей, но с маленькой собачкой породы гладкошерстный пинчер. Гарантируют, что питомец приучен ко всему. Согласны прописать в договоре все моменты, связанные с проживанием животного в квартире. Снимут 1-комнатную квартиру попроще. Устроит вариант чистой квартиры, укомплектованной мебелью и техникой. Бюджет до 32 тыс. Регистрация не нужна.', '0000-00-00'),
  4. (3, 1, 2, 'Бульвар Рокоссовского', '2к', 45000, 'Снимем 2-комнатную квартиру для семейной пары славян с дочкой 13 лет. Граждане РФ, прописка МО, без вредных привычек, платежеспособные. Территориальная привязка к школе N 1797 на ул. Глебовская, 10Б. Необходима квартира с раздельными комнатами, косметическим ремонтом, укомплектованная мебелью и бытовой техникой. Бюджет до 45 тыс. Ищем как можно ближе к школе по адресу ул. Бойцовая, 6, корп. 8а. Регистрация не нужна. Страховой депозит оплачивают в полном объёме.', '0000-00-00'),
  5. (4, 1, 2, 'Бульвар Рокоссовского', '2к', 45000, 'Клиенты: семья москвичей с двумя детьми - 9 и 14 лет, без животных. Квартира нужна на полтора-два года - строят свой дом в новой Москве. Рассматривают двушку или трёшку с бюджетом до 50 тыс, можно пустую. Регистрация не нужна. Страховой депозит оплачивают в полном объёме.', '0000-00-00');
  6.  


Подскажите пожалуйста, в чем ошибка и как исправить?

 

Powered by ExBB FM 1.0 RC1