Пагинация результатов, выведенных формой в цикле

На сайте есть форма поиска товаров, которая выводит на страницу с пагинацией данные в цикле. Косяк: показывается количество страниц, но результаты выводятся только на первую страницу, на последующих - ничего нет. Как решить?
P.S. Есть другая страница с пагинацией, на которую выводятся данные в цикле НЕ ФОРМОЙ, а просто кодом с заранее известными, постоянными критериями поиска. На этой странице все работает отлично. Используется тот же самый код. Способы поиска разные - код вывода один, думаю в этом и проблема. Что именно изменить в коде, как решить?

Мы должны угадывать как это всё реализовано?)

Мне казалось не обязательно сразу мусорить кодом, если в общих чертах ситуация может быть понятной, ведь скорей всего, проблема возникает из-за того, что данные отправляются формой один раз и на страницах 2+ они уже не доступны. Впрочем, вот код:

		<?php
			ini_set('display_errors', 'Off');
			$userid = $_SESSION['user']['id'];
			$ge = $_POST['ge'];
			$aOt = $_POST['aOt'];
			$aDo = $_POST['aDo'];
			$plas = $_POST['plas'];
			$tph = $_POST['tph'];
			if(!empty($tph)){ $tph = '1';
			$tph = (int)$tph;}
			if (empty($tph)){ $tph = '0';
			$tph = (int)$tph;}
			$ton = $_POST['ton'];
			if(!empty($ton)){ $ton = 'on';}
			else if (empty($ton)){ $ton = '%';}
			$trand = $_POST['trand']; 
			if(empty($trand)){ $trand = '%';}
			else if(!empty($trand)){ $trand = date("U");
			$trand = (int)$trand;
			$trand2 = 43200;
			$trand = $trand - $trand2;}
			
		
			$stmt = $mysqli->prepare("SELECT * FROM `users` WHERE `ge` LIKE ? AND `ag`>=? AND `ag`<=? AND `plas` LIKE ? AND `ph` >= ? AND `of` LIKE ? AND `rand`  >= ? ") or die(mysqli_error($mysqli));	
			$stmt->bind_param('siisisi', $ge,$aOt,$aDo,$plas, $tph, $ton, $trand);
			$stmt->execute();
			if($stmt->error)die('ОШИБКА СОЕДИНЕНИЯ: '.$stmt->error);
			$results = $stmt->get_result();
			$totalRows = $results->num_rows; //количество всех записей в таблице
			$rowsPerPage = 18; //сколько записей выводится на страницу
			$totalPages = ceil($totalRows/$rowsPerPage);//количество страниц
			$iCurr = (empty($_POST['page']) ? 1 : intval($_POST['page']));//номер текущей страницы
			$offset = ($iCurr - 1) * $rowsPerPage;//базовое смещение для лимита
			$stmt = $mysqli->prepare("SELECT * FROM `users` WHERE  `ge` LIKE ? AND `ag`>=? AND `ag`<=? AND `plas` LIKE ? AND `ph` >= ? AND `of` LIKE ? AND `rand`  >= ? ORDER BY `data` DESC LIMIT $offset, $rowsPerPage") or die(mysqli_error($mysqli));
			$stmt->bind_param('siisisi', $ge,$aOt,$aDo,$plas, $tph, $ton, $trand);
			$stmt->execute();
			if($stmt->error)die('ОШИБКА СОЕДИНЕНИЯ: '.$stmt->error);
			$check_us = $stmt->get_result();
			if ($check_us->num_rows < 1 ) echo '<p style="text-align: center; color: #fff">СОВПАДЕНИЙ НЕ НАЙДЕНО<br><span style="color: #c6c">попробуйте изменить критерии поиска</span></p>';
			else
			while($result = mysqli_fetch_assoc($check_us))
			{
		?>
		
		<div class="form">
		
			<?php if(!empty($result['avatar'])): ?>
								<img src="/uploads/Photos_Open/<?php echo $result['avatar']; ?>" width="120px">
							<? endif ?>
							<?php if(empty($result['avatar'])): ?>
								<img src="/img/zastavkana.png">
							<? endif ?>
						
						<div class="overlay2">		
						<?php if(!empty($result['na'])) echo $result['na'] . ', ' ?>
						<?php if(!empty($result['ag'])) echo $result['ag']; ?><br/>
						<?php if(!empty($result['plas'])) echo $result['plas']; ?>
					</div>
						
						<form  action="/handlers/hand_author_shersh.php" method="POST">
								<button type="submit" class="overlay88">	
								<select name="author_id" style="display: none">
									<option value="<?php echo $result['id']; ?>"></option>
									</select>
						</form>	
	
</div>
						<? } ?>
						
						<div class="pag8">
						<?php
							for ($i = 1; $i <= $totalPages; $i++){
								if ($iCurr == $i){
									echo "<a href=site_rez_poisk.php?page=$i><span class=\"pag9\">&nbsp;$i&nbsp;</span></a>";
													}
							else {
								echo "<a href=site_rez_poisk.php?page=$i><span class=\"pag10\">&nbsp;$i&nbsp;</span></a>";
									}
																	}
						?>

Параметры поиска обычно отправляют GET, а не POST, и тогда все параметры в URL.

Иначе ж даже ссылкой на поиск не поделиться.

Например, гугл.
https://www.google.com/search?q=php

Увы, но просто изменение метода на GET в форме и обработчике ничего не дает. Результаты поиска видны только на первой странице.

А может такое быть, если форма ставится на страницу инклудом?

Ну так определяйте в какой части проблема.
Как отлаживать маленькие программы – Блог Петра Калинина

Если в URL есть все нужные параметры, то видимо что-то не так с их доставанием или использованием.

И в адресе страниц

должны же быть все параметры, а не только страница.

image

Как вариант, можно например достать текущий URL, распарсить query, в массиве установить номер страницы, собрать query.
https://www.php.net/manual/en/function.parse-url.php
https://www.php.net/manual/en/function.parse-str.php
https://www.php.net/manual/en/function.http-build-query.php


Я добавил get-параметры через переменную в ссылку пагинации, но не работает. Что не так?

кнопка Код нажата не была )


Если проблема именно в этом куске кода (то есть как минимум работает до перехода по страницам), то тут адрес некорректный

параметры же через & разделяется, ? только в начале.
What is a URL? - Learn web development | MDN

И после первой страницы получится фигня типа ...&page=1&page=42 если тупо вставлять $_SERVER['QUERY_STRING'].

Поэтому и надо

Работает) Спасибо).