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

Как настроить фильтр по определенной категории?

Здравствуйте.
Есть страница проекты, переходишь на страницу, кликаешь на посмотреть квартиры и открывается страница с квартирами, которая принадлежит этому проекту. Там есть фильтр и его подружить с выборкой не могу. Можете посмотреть, пожалуйста?

<?php			
			$query1 ="SELECT * FROM proect WHERE id='$id' ";
$result1 = mysqli_query($link1, $query1) or die("Ошибка " . mysqli_error($link1)); 

if (mysqli_num_rows($result1) > 0)
{?>  
				<div class="row justify__content__between filter_data">
					
				</div>
<?php	
}						
 ?>


$(document).ready(function(){

    filter_data();

    function filter_data()
    {
        $('.filter_data').html('<div id="loading" style="" ></div>');
        var action = 'fetch_data';
        var aportament = get_filter('aportament');
        var dom = get_filter('dom');
        var etaj = get_filter('etaj');
        var sekcii = get_filter('sekcii');
        $.ajax({
            url:"fetch_data.php",
            method:"POST",
            data:{action:action, aportament:aportament, dom:dom, etaj:etaj, sekcii:sekcii},
            success:function(data){
                $('.filter_data').html(data);
            }
        });
    }

    function get_filter(class_name)
    {
        var filter = [];
        $('.'+class_name+':checked').each(function(){
            filter.push($(this).val());
        });
        return filter;
    }

    $('.common_selector').click(function(){
        filter_data();
    });


});


<?php

$id = $_GET["id"];

if(isset($_POST["action"]))
{
 $query = "
  SELECT * FROM aportament WHERE proect_id='$id'
 ";

 if(isset($_POST["aportament"]))
 {
  $aportament_filter = implode("','", $_POST["aportament"]);
  $query .= "
   AND aportament IN('".$aportament_filter."')
  ";
 }
 if(isset($_POST["dom"]))
 {
  $dom_filter = implode("','", $_POST["dom"]);
  $query .= "
   AND dom IN('".$dom_filter."')
  ";
 }
 if(isset($_POST["etaj"]))
 {
  $etaj_filter = implode("','", $_POST["etaj"]);
  $query .= "
   AND etaj IN('".$etaj_filter."')
  ";
 }
 
  if(isset($_POST["sekcii"]))
 {
  $sekcii_filter = implode("','", $_POST["sekcii"]);
  $query .= "
   AND sekcii IN('".$sekcii_filter."')
  ";
 }

 $statement = $connect->prepare($query);
 $statement->execute();
 $result = $statement->fetchAll();
 $total_row = $statement->rowCount();
 $output = '';
 if($total_row > 0)
 {
  foreach($result as $row1)
  {
   $output .= '
   
   <div class="col-45 kart__block">
						<h2 class="kart__title">'. $row1['title'] .'</h2>
						<span class="kart__metraj">'. $row1['metr'] .'</span>
						<img class="kart__img" src="uploads_images/'. $row1['image'] .'" alt=""/>
						<p class="kart__txt">'. $row1['price'] .'</p>
						<ul class="kart__list">
							<li>дом '. $row1['dom'] .'</li>
							<li><img src="img/Ellipse.svg"/></li>
							<li>этаж '. $row1['etaj'] .'</li>
							<li><img src="img/Ellipse.svg"/></li>
							<li>секция '. $row1['sekcii'] .'</li>
						</ul>
						<ul class="kart__button">
							<li class="button__item"><a class="green__link">Купить</a></li>
							<li class="button__item"><a class="border__link">Забронировать</a></li>
						</ul>
					</div>	
   ';
  }
 }
 else
 {
  $output = '<h3>No Data Found</h3>';
 }
 echo $output;
}
?>
  • Вопрос задан
  • 48 просмотров
Подписаться 1 Простой 1 комментарий
Пригласить эксперта
Ответы на вопрос 2
coderisimo
@coderisimo
Боюсь, вопрос слишком комплексный :). Попробую дать самые общие рекомендации, ИМХОшные.

1) У вас здесь плохо с безопасностью. Почитайте про "Подготавливаемые запросы." Прямо в официальной доке.
Много переписывать не придется, а ситуация улучшится.
2) Посмотрите в консоли браузера - отправляется ли запрос с информацией о категории на сервер.
3) Убедитесь, что запрос (с информацией о категории) приходит на сервер и доступен в части php-кода , которая должна им заниматься
4) Посмотрите, как выглядит $query перед запросом в БД (который формируется php), Есть ли в нем все необходимое. Протестируйте его запустив напрямую.

Каждый из этих пунктов - отдельная задача и, возможно, отдельный вопрос на тостере. Если пройдете все их - определенно решите задачу (или приблизитесь к решению) и немного прокачаете навыки программирования.

Удачи.
Ответ написан
Комментировать
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
Вы вызываете fetch_data.php методом POST, но в самом файле используете $_GET['id'], серьёзно? И защиты от MySQL инъекций - полный нуль.

По TikTok-роликам учитесь?
Ответ написан
Ваш ответ на вопрос

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

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