@MbIW

Как сделать постраничную навигацию после поиска через ajax?

Здравствуйте, есть веб сайт после ввода 2 символов начинает поиск, вводим страну(в базе есть англия, германия, франция, испания, италия) и результатом будут города, всё это дело работает через ajax и я теперь не могу понять как сделать постраничный вывод, по какому адресу живут следующие страницы или как вообще это реализовать. Вот код основного сайта
<?php
  require "includes/config.php";
?>

<!DOCTYPE html >
	<html lang="en">
		<head>
			<meta charset="UTF-8"/>
			<title><?php echo $config['title'];?></title>
			<link href="/style/reset.css" rel="stylesheet" />
			<link href="/style/style.css" rel="stylesheet" />			
			<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
			<script src="/search.js"></script>			
		</head>
		<body>
			<input type="text" name="referal" placeholder=" поиск" value="" class="who"  autocomplete="off">
			<ul>
				<li class="search_result">					
				</li>
			</ul>
		</body>
	</html>


вот код страницы обработчика поиска
<?php
  require "includes/config.php";
?>


	<?php
						if(!empty($_POST["referal"])){

				    $referal = trim(strip_tags(stripcslashes(htmlspecialchars($_POST["referal"]))));

				    $countrys = mysqli_query($con,"SELECT * FROM `countrys` WHERE `country` LIKE '%$referal%'");

				    $country = mysqli_fetch_assoc($countrys);
				}
	?>
<ul>
<?php
				$per_page = 5;
				$page = 1;

				if(isset($_GET['page']))
				{
					$page = (int) $_GET['page'];
				}

				$total_country_id_q = mysqli_query($con, "SELECT COUNT(`id`) AS `total_count` FROM `citys` WHERE `country_id`  =  ". $country['id']); 

				$total_country_id = mysqli_fetch_assoc($total_country_id_q);

				$total_country_id = $total_country_id["total_count"]; 
				$total_pages = ceil($total_country_id / $per_page);


				if( $page <= 1 || $page > $total_pages)
				{
					$page = 1;
				}
				$offset = ($per_page * $page) - $per_page;
				//////


				    $citys = mysqli_query($con,"SELECT * FROM `citys` WHERE `country_id` = " . $country['id'] . " LIMIT $offset,$per_page ")
				    or die('страна не найдена.');
				    while ($city = mysqli_fetch_assoc($citys)){
				        echo "<li>" . $city["city"] . "</li>";

				    }

				

/////

?>

</ul>

			<?php
				echo '<div>';
					if($page > 1)
						{
							echo '<a href="?page='.($page - 1).'; "> предыдущая страница</a>';   ////какой адрес здесь прописать
						}
					if($page < $total_pages)
						{
							echo '<a href="?page='.($page + 1).' "> следующая страница</a>';    ///// какой адрес здесь прописать
						}
				echo '</div>';
			?>


а это код ajax
$(function(){
    

$('.who').bind("change keyup input click", function() {
    if(this.value.length >= 2){
        $.ajax({
            type: 'post',
            url: "search.php", 
            data: {'referal':this.value},
            response: 'text',
            success: function(data){
                $(".search_result").html(data).fadeIn();
           }
       })
    }
})
})
  • Вопрос задан
  • 174 просмотра
Пригласить эксперта
Ответы на вопрос 2
bigton
@bigton
Web-программист
1. В PHP лучше не работать с $_POST/GET напрямую, давно есть filter_input
$page = filter_input(INPUT_GET, 'page', FILTER_VALIDATE_INT, ['options' => ['default' => 1]]);

2. Параметры в SQL запросе лучше пропускать через mysqli_real_escape_string()

3. Не уверен, что Тостер предназначен для такого рода вопросов...
Ответ написан
Комментировать
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
вводим страну(в базе есть англия, германия, франция, испания, италия) и результатом будут города, всё это дело работает через ajax
ниче не ясно, дохрена кода, нихрена не понятно. Возвращаете вы что? Список городов принадлежащих стране? Листаете постранично как? Через линки или тоже аяксом?
Ответ написан
Ваш ответ на вопрос

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

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