Как использовать разбиение на страницы в поисковом фильтре
я создал фильтр поиска, и он отлично работает, и я также создал разбиение на страницы, и он также отлично работает. проблема в том, что если я хочу реализовать разбиение на страницы в фильтре поиска, он не работает, когда я нажимаю кнопку next, а скорее показывает пустые результаты, даже когда я нажимаю кнопку prev, но когда я ищу, он отображает данные, а когда я нажимаю кнопку next, он уничтожает данные..
Что я уже пробовал:
<form method="POST" action="search_christian_songs.php"> <div class="form-group input-group"> <input class="form-control mr-sm-2" required="" name="search" type="text" placeholder="Search" aria-label="Search"> <span class="input-group-btn"> <button class="button" name="submit-submit" type="submit"> Search </button> </span> </div> </form> </div> <div class="col-sm-8"> <div class="blog_left_sidebar"> <aside class="single_sidebar_widget popular_post_widget"> <?php if (isset($_GET['page_no']) && $_GET['page_no']!="") { $page_no = $_GET['page_no']; } else { $page_no = 1; } $total_records_per_page = 3; $offset = ($page_no-1) * $total_records_per_page; $previous_page = $page_no - 1; $next_page = $page_no + 1; $adjacents = "2"; $result_count = mysqli_query($conn,"SELECT COUNT(*) As total_records FROM african_songs "); $total_records = mysqli_fetch_array($result_count); $total_records = $total_records['total_records']; $total_no_of_pages = ceil($total_records / $total_records_per_page); $second_last = $total_no_of_pages - 1; // total page minus 1 if (isset($_POST['search'])) { $search = mysqli_real_escape_string($conn, $_POST['search'] ); $query = ("SELECT * FROM christian_songs WHERE Title LIKE '%$search%' LIMIT $offset, $total_records_per_page "); $result = mysqli_query($conn, $query); $queryResult = mysqli_num_rows($result); echo "<h2 class='widget_title'> There are ".$queryResult." results found! </h2>"; if ($queryResult > 0) { while ($row = mysqli_fetch_assoc($result)) { $id = $row['id']; echo " <div class='media post_item'> <img src=".$row['image']." alt='post'> <div class='media-body'><ul class='list cat-list'><li> <a href='download_christian_songs.php?id=$id'> <h5>".($row['Title'])."</h5></a> <p> ".($row['date'])."</p></li> </div></ul> </div>"; } } } else{ echo "<div class='alert alert-warning'>You Have No Record!</div>"; } ?> <br> <h3>Page <?php echo $page_no." of ".$total_no_of_pages; ?></h3> <div class="page_nav"> <ul class="d-flex flex-row align-items-start justify-content-start"> <?php // if($page_no > 1){ echo "<li><a href='?page_no=1'>First Page</a></li>"; } ?> <li <?php if($page_no <= 1){ echo "class='disabled'"; } ?>> <a <?php if($page_no > 1){ echo "href='?page_no=$previous_page'"; } ?>>Prev</a> </li> <?php if ($total_no_of_pages <= 3){ for ($counter = 1; $counter <= $total_no_of_pages; $counter++){ if ($counter == $page_no) { echo "<li class='active'><a>$counter</a></li>"; }else{ echo "<li><a href='?page_no=$counter'>$counter</a></li>"; } } } elseif($total_no_of_pages > 10){ if($page_no <= 4) { for ($counter = 1; $counter < 8; $counter++){ if ($counter == $page_no) { echo "<li class='active'><a>$counter</a></li>"; }else{ echo "<li><a href='?page_no=$counter'>$counter</a></li>"; } } echo "<li><a>...</a></li>"; echo "<li><a href='?page_no=$second_last'>$second_last</a></li>"; echo "<li><a href='?page_no=$total_no_of_pages'>$total_no_of_pages</a></li>"; } elseif($page_no > 4 && $page_no < $total_no_of_pages - 4) { echo "<li><a href='?page_no=1'>1</a></li>"; echo "<li><a href='?page_no=2'>2</a></li>"; echo "<li><a>...</a></li>"; for ($counter = $page_no - $adjacents; $counter <= $page_no + $adjacents; $counter++) { if ($counter == $page_no) { echo "<li class='active'><a>$counter</a></li>"; }else{ echo "<li><a href='?page_no=$counter'>$counter</a></li>"; } } echo "<li><a>...</a></li>"; echo "<li><a href='?page_no=$second_last'>$second_last</a></li>"; echo "<li><a href='?page_no=$total_no_of_pages'>$total_no_of_pages</a></li>"; } else { echo "<li class='active'><a href='?page_no=1'>1</a></li>"; echo "<li><a href='?page_no=2'>2</a></li>"; echo "<li><a>...</a></li>"; for ($counter = $total_no_of_pages - 6; $counter <= $total_no_of_pages; $counter++) { if ($counter == $page_no) { echo "<li class='active'><a>$counter</a></li>"; }else{ echo "<li><a href='?page_no=$counter'>$counter</a></li>"; } } } } ?> <li <?php if($page_no >= $total_no_of_pages){ echo "class='disabled'"; } ?>> <a <?php if($page_no < $total_no_of_pages) { echo "href='?page_no=$next_page'"; } ?>>Next</a> </li> <?php if($page_no < $total_no_of_pages){ echo "<li><a href='?page_no=$total_no_of_pages'>Last</a></li>"; } ?> </ul>
Richard Deeming
Ваш код уязвим для SQL-инъекция[^]. НИКОГДА используйте конкатенацию строк для построения SQL-запроса. ВСЕГДА используйте параметризованный запрос.
PHP: SQL-инъекция - руководство пользователя[^]