Задать вопрос
@kirill270999

Как достать данные из mysql, используя фильтр на js?

Здравствуйте! Есть такой фильтр на js. Он выбирает статьи по определенным параметрам.
<select id="flat">
          <?php $filterflat = get_filterflat(); ?>
          <?php foreach ($filterflat as $post): ?>
          	<option value="<?=$post["id"]?>"><?=$post["rooms"]?></option>
          <?php endforeach; ?>
        </select>
        <select id="metro">
          <?php $filtermetro = get_filtermetro(); ?>
          <?php foreach ($filtermetro as $post): ?>
          <option value="<?=$post["stationid"]?>"><?=$post["station"]?></option>
          <!-- <option value="taganka">Таганская</option>
          <option value="kurskay">Курская</option>
          <option value="poveleckay">Повелецкая</option> -->
          <?php endforeach; ?>
        </select>
        <?php $posts = get_posts(); ?>
        <?php foreach ($posts as $post): ?>
        <div id="items">
          	<div class="item" data-color="<?=$post["id"]?>" data-shape="<?=$post["stationid"]?>">
            	<div class="infoFlat">
            		<h3> <?=$post["titleflat"]?> </h3>
            		<h3><?=$post["titlemetro"]?></h3>
            		<h3><?=$post["price"]?>.</h3>
            		<p class="b1"><?=$post["date"]?></p>
            	</div>
            	<div class="itemText">
            		<p><?=$post["text"]?></p>
            	</div>
          </div>
        </div>	
        <?php endforeach; ?>

Сейчас он выводит посты из БД. мне нужно чтобы он фильтровал их вытаскивая так же из БД.

Скрипт фильтра
var flat = document.getElementById('flat');
    var metro = document.getElementById('metro');
    var items_el = document.getElementById('items');
 
    var filter = function() {
        var items = items_el.getElementsByClassName('item');
        for (var i = 0; i < items.length; i++) {
            if ((flat.value == 'all' || flat.value == items[i].dataset.color) &&
                (metro.value == 'all' || metro.value == items[i].dataset.shape)) {
                items[i].style.display = 'block';
            } else {
                items[i].style.display = 'none';
            }
        }
    };
 
    flat.addEventListener("change", filter);
    metro.addEventListener("change", filter);

function.php
function get_posts() {
    global $connection;
    $sql = " SELECT * FROM orders_posts ORDER BY rand()";
    $result = mysqli_query($connection, $sql);
    $posts = mysqli_fetch_all($result, MYSQLI_ASSOC);
    return $posts;
  }

  function get_filterflat() {
    global $connection;
    $sql = "SELECT * FROM filterflat";
    $result = mysqli_query($connection, $sql);
    $filterflat = mysqli_fetch_all($result, MYSQLI_ASSOC);
    return $filterflat;
  }

  function get_filtermetro() {
    global $connection;
    $sql = "SELECT * FROM filtermetro";
    $result = mysqli_query($connection, $sql);
    $filtermetro = mysqli_fetch_all($result, MYSQLI_ASSOC);
    return $filtermetro;
  }

  function get_allFilters() {
    global $connection;
    $sql = "SELECT filterflat.id, filtermetro.stationid, : orders_posts.id FROM filterflatINNER JOIN filtermetro ON filterflat.id=filtermetro.stationid";

  }

filterflat - таблица , в которой содержится столбцы id , rooms;
filtermetro - таблица , в которой содержится столбцы stationid , station;
orders_posts - таблица , в которой содержится столбцы id, titlemetro, titleflat, price, text, date;
Первый критерий станции метро. К примеру (БУЛЬВАР РОКОССОВСКОГО или ПРЕОБРАЖЕНСКАЯ ПЛОЩАДЬ)
Второй критерий кол.комнат в квартире. К примеру (1-к квартира или 2-к квартира.)
подскажите пожалуйста, как это реализовать?????
  • Вопрос задан
  • 323 просмотра
Подписаться 2 Простой 12 комментариев
Пригласить эксперта
Ответы на вопрос 1
TTATPuOT
@TTATPuOT
https://code.patriotovsky.ru/
Передаёте данные обработчику на бекенде. Например, на PHP. Дальше из PHP обращаетесь в базу, получаете результат и отвечаете фронтенду. На фронтенде выводите результаты фильтрования.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы