Я пытаюсь реализовать ajax pagination для картинок с картинками, но, похоже, я хорошо понимаю это, и я что-то пропустил.
Так что это мой HTMLPHP и AJAX pagination
<div class="row">
<div class="loading-div"><img src="ajax-loader.gif" ></div>
<div id="results"></div>
</div>
и в голове страницы
<script type="text/javascript">
$(document).ready(function() {
$("#results").load("fetch_pages.php"); //load initial records
$("#results").on("click", ".pagination a", function (e){
e.preventDefault();
$(".loading-div").show(); //show loading element
var page = $(this).attr("data-page"); //get page number from link
$("#results").load("fetch_pages.php",{"page":page}, function(){ //get content from PHP page
$(".loading-div").hide(); //once done, hide loading element
});
});
});
</script>
И РНР часть
if(isset($_POST) && isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
//continue only if $_POST is set and it is a Ajax request
if(isset($_GET['album_id']) && is_numeric($_GET['album_id'])){
$album_id = $_GET['album_id'];
include("config.inc.php"); //include config file
//Get page number from Ajax POST
if(isset($_POST["page"])){
$page_number = filter_var($_POST["page"], FILTER_SANITIZE_NUMBER_INT, FILTER_FLAG_STRIP_HIGH); //filter number
if(!is_numeric($page_number)){die('Invalid page number!');} //incase of invalid page number
}else{
$page_number = 1; //if there's no page number, set it to 1
}
//get total number of records from database for pagination
$results = $mysqli_conn->query("SELECT COUNT(*) FROM images");
$get_total_rows = $results->fetch_row(); //hold total records in variable
//break records into pages
$total_pages = ceil($get_total_rows[0]/$item_per_page);
//get starting position to fetch the records
$page_position = (($page_number-1) * $item_per_page);
//SQL query that will fetch group of records depending on starting position and item per page. See SQL LIMIT clause
$results = $mysqli_conn->query("SELECT * FROM images WHERE image_album = '$album_id' ORDER BY image_id ASC LIMIT $page_position, $item_per_page");
//Display records fetched from database.
while($row = $results->fetch_assoc()) {
echo '<div class="col-md-4 col-ms-6">
<div class="g-item">
<img src="../images/gallery/thumb/'.$row['image_name'].'">
<a data-rel="lightbox" class="overlay" href="../images/gallery/thumb/'.$row['image_name'].'">
<span>+</span>
</a>
</div> <!-- /.g-item -->
</div> <!-- /.col-md-4 -->';
}
echo '<div align="center">';
echo paginate_function($item_per_page, $page_number, $get_total_rows[0], $total_pages);
echo '</div>';
}
} else { echo "no items in this album"; }
То, что я пытаюсь достичь, когда пользователь нажимает на категории (which already is working fine
), чтобы загрузить новую страницу с изображениями из этой категории (альбома), а затем несколько превью и разбиение на страницы. Когда я удаляю часть с $ _GET, это работает, но мне нужно получить album_id, чтобы показывать только те изображения. Вот кнопка на главной странице
gallery.php?album_id='.$row['album_id'].'
Tutorial, что я следую за это from here
Там нет ошибок и нет изображений на странице ..
Спасибо за ваш ответ. Я точно не понимаю, как отправить album_id. Я имею в виду, что у альбомов есть альбом 'album_id = 1, album_id = 2'. Поэтому, если я нажму на album_id = 1, откроется страница gallery.php, а затем, как передать идентификатор сценарию? – Select
Просто добавьте идентификатор альбома в свой массив данных. Что-то вроде '{" page ": page," album_id ": myalbumid} –
Где должен быть скрипт' js' на первой странице индекса или второй, где будут загружены изображения в 'gallery.php'? Кроме того, я пробовал что-то вроде '{" page ": page", "album_id": album_id} 'и, похоже, не прав, а в' fetch_pages.php' я добавил '$ album_id = $ _POST [' album_id ']; 'поскольку это POST. – Select