@MbIW

Как создать пагинатор?

есть две таблицы "countrys" со столбцами id и country, id для каждой страны своё, и вторая таблица "citys" со столбцами id, city и countri_id, последний это id страны. Так же есть сайт с drop down menu в котором список стран, при нажатии на страну
<div class="container">                                        
			  <div class="dropdown">
			    <button type="button" class="btn btn-primary dropdown-toggle" data-toggle="dropdown">
			      страны
			    </button>
			    <div class="dropdown-menu">
			    	<?php
						$countrys=mysqli_query($con,"SELECT * FROM `countrys`");
					?>
					<?php
						while(($country=mysqli_fetch_assoc($countrys)))
					{	
						?>
						<a class='dropdown-item-text' href='/citys.php?id=<? echo $country["id"]; ?>'><?php echo $country["country"] ?></a>
					   <?   		
			      	}
					?>
			    </div>
			  </div>
			</div>
, переходит на сайт со списком всех городов этой страны, сайт сравнивает полученный ID по GET и выдает список нужных городов
<ul>
			<?php 
			
			$citys = mysqli_query($con, "SELECT * FROM `citys` WHERE `country_id` = " . (int) $_GET['id'] . " LIMIT $offset,$per_page ");

				while(($city = mysqli_fetch_assoc($citys)))

				{
						echo "<li>" .  $city["city"] . "</li>";
					}
			?>
		</ul>
а как теперь сделать не весь список, а скажем только по 5 городов на страницу не понимаю. Сделал другую ссылку с полным списком городов и в нем постраничный вывод всё норм
<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` ");
			$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` ORDER BY `id` LIMIT $offset,$per_page ");

				while(($city = mysqli_fetch_assoc($citys)))

				{
						echo "<li>" .  $city["city"] . "</li>";
					}
				////
			?>
		</ul>
		<?php
		echo '<div>';
			if($page > 1)
				{
					echo '<a href="/city.php?page='.($page - 1).' ">предыдущая страница </a>';
				}
			if($page < $total_pages)
				{
					echo '<a href="/city.php?page='.($page + 1).' "> следующая страница</a>';
				}
		echo '</div>';
		?>
, а как теперь в него засунуть еще и выбор страны не понимаю
  • Вопрос задан
  • 123 просмотра
Решения вопроса 1
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
есть две таблицы "countrys"
в смысле countries? И это, запятые экономить не надо, навряд ли у вас 2 таблицы countries.

и вторая таблица "citys"
в смысле cities?

и countri_id, последний это id страны
в смысле country_id?

список нужных городов а как теперь сделать не весь список, а скажем только по 5 городов на страницу не понимаю.
ЗАПЯТЫЕ!!!

по 5 городов на страницу
во первых - не вижу ни кода, ни запроса которым вы пытались это сделать.

Сделал другую ссылку с полным списком городов и в нем постраничный вывод всё норм, а как теперь в него засунуть еще и выбор страны не понимаю
ну так а какая разница, тот же селект, просто добавляется условие where country_id = и номер страны.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
xEpozZ
@xEpozZ
Веб-разработчик
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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