Здравствуйте всем на сайте. Пытаюсь сделать сортировку с пагинацией от Bootpag и не получается привязать перелистование страниц к выбранной сортировке....
Вот у меня есть такой скрипт для Bootpag:
$(document).ready(function() {
$("#results").load("fetch_pages.php"); //начальная страница
$(".pagination").bootpag({
total: <?= $pages; ?>,
page: 1,
maxVisible: 5
}).on("page", function(e, num){
e.preventDefault();
$("#results").prepend('<div class="loading-indication"><img src="/ajax-loader.gif" /> Loading...</div>');
$("#results").load("fetch_pages.php", {'page':num}).hide().fadeIn(1000);
});
});
и вот такой скрипт для сортировки:
$(document).ready(function () {
$(".sort span").click(function () {
var id = $(this).attr('id');
$("#fon").css({'display':'block'});
$("#load").fadeIn(500,function () {
$.ajax({
url:'/',
data:'sort_id='+id,
type:'GET',
success: function (html) {
$("#tovar").html(html).hide().fadeIn(1000);
$("#fon").css({'display':'none'});
}
});
});
});
});
в php я привязываю подмену sql запроса в зависемости от нажатой ссылки с переменной id... вот такой функцией:
function test($link, $id = FALSE) {
$item_per_page = 8;
if(isset($_POST["page"])){
$page_number = filter_var($_POST["page"], FILTER_SANITIZE_NUMBER_INT, FILTER_FLAG_STRIP_HIGH);
if(!is_numeric($page_number)){die('Invalid page number!');} //incase of invalid page number
}else{
$page_number = 1;
}
$position = (($page_number-1) * $item_per_page);
$sql = "SELECT * FROM product WHERE brand = 'вентс' LIMIT $position, $item_per_page ";
/* функция получения строк по гет */
if($id) {
if($id == 'namea') {
$position=12;
$sql = "SELECT * FROM product WHERE brand = 'вентс' ORDER BY rashod_vozduha ASC LIMIT $position, $item_per_page";
}
else if ($id == 'named') {
$sql = "SELECT * FROM product WHERE brand = 'вентс' ORDER BY rashod_vozduha DESC LIMIT $position, $item_per_page ";
}
else if ($id == 'pricea') {
$sql = "SELECT * FROM product WHERE brand = 'вентс' ORDER BY cena ASC LIMIT $position, $item_per_page ";
}
else if ($id == 'priced') {
$sql = "SELECT * FROM product WHERE brand = 'вентс' ORDER BY cena DESC LIMIT $position, $item_per_page";
}
}
$results = mysqli_query($link, $sql);
for($i = 0;$i < mysqli_num_rows($results); $i++) {
$rr[] = mysqli_fetch_array($results);
}
if(!$results){ echo "<p>Какая то ошибка с настройками...</p>"; }
return $rr;
}
if($_GET['sort_id']){
$id = strip_tags($_GET['sort_id']);
$rr = test($link, $id);
foreach($rr as $item) {
printf('
<li>
<a href = "description-vents&model=%s"; id="title">%s<br/>%s</a>
<img style="position: relative;" src="https://ensy.com.ua/product/%s" >
<div id="price" >%s грн.</div>
</li> ', $item['model'], $item['brand'],$item['model'] ,$item['name'], $item['cena'] );
}
exit();
} else { $rr = test($link); }
и в конце вывожу результаты фенкции циклом:
<ul id="tovar" >
<?php foreach ($rr as $item) :?>
<li>
<a href = "description-vents&model=<?= $item['model'] ?>"; id="title"><?= "<small>" . $item['brand'] . "</small><br/>".$item['model'] ?></a>
<img style="position: relative;" src="https://ensy.com.ua/product/<?= $item['name']; ?>" >
<div id="price" ><?php echo (int)$item['cena']. " грн. "; ?></div>
</li>
<?php endforeach; ?>
</ul>
В результате у меня получается сортировка.... но при перелистовании страниц выборка идет не в соотвествии сортировки, а в том порядке как занесено в БД.... я налаживаю на тестовом сайте и можно посмотреть тут как работает сейчас:
http://test.ensy.com.ua/