[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Ajax фильтрация и постраничная навигация
T0L1K.IT
Делал фильтрацию контента при выборе из селектов это заработало. Затем решил сделать постраничную навигацию в выводимых данных(нашел готовый скрипт). И тут возникла проблема: при переключении страниц сбрасывается выведеный контент.
Тут файл в который всё получаем
<script type="text/javascript" type="text/javascript">
$(document).ready(function(){
$('#mq').change(function(){
$('#myqsort').load("smq.php", {mq:$(this).val()},
function(){
}
);
});
});
</
script>
<
title></title>
</
head>


<
body>

<
select name="mq" id="mq" onchange="showOption(this)" >
<
option value="1">Обсуждаемые</option>
<
option value="2">Закрытые</option>
<
option value="3">Без ответа</option>
</
select>

<
div id="myqsort"></div>

это собственно файл где филтруем, извлекаем из бд и создаем навигацию:


mysql_query('SET OPTION CHARACTER SET utf8') or die( mysql_error() );
// Переменная хранит число сообщений выводимых на станице
$num = 2;
// Извлекаем из URL текущую страницу
$page = $_GET['page'];
// Определяем общее число сообщений в базе данных
$result = mysql_query("SELECT * FROM q WHERE user_id=('$id') AND sqsost=('$sq')");
$posts = mysql_num_rows($result);
// Находим общее число страниц
$total = intval(($posts - 1) / $num) + 1;
// Определяем начало сообщений для текущей страницы
$page = intval($page);
// Если значение $page меньше единицы или отрицательно
// переходим на первую страницу
// А если слишком большое, то переходим на последнюю

if(empty($page) or $page < 0) $page = 1;
if($page > $total) $page = $total;
// Вычисляем начиная к какого номера
// следует выводить сообщения

$start = $page * $num - $num;
// Выбираем $num сообщений начиная с номера $start
$result = mysql_query("SELECT * FROM q WHERE user_id=('$id') AND sqsost=('$sq') ORDER BY q_id LIMIT $start, $num");
// В цикле переносим результаты запроса в массив $postrow
while ( $postrow[] = mysql_fetch_array($result))
?>

<?php

echo "<table>";
for($i = 0; $i < $num; $i++)
{
echo "<tr>

<tr><td colspan=
\"2\">".$postrow[$i]['qbody']."</td></tr>";
}
echo "</table>";
?>


<?php

// Проверяем нужны ли стрелки назад
if ($page != 1) $pervpage = '<a href= ./myq.php?page=1><<</a>
<a href= ./myq.php?page='
. ($page - 1) .'><</a> ';
// Проверяем нужны ли стрелки вперед
if ($page != $total) $nextpage = ' <a href= ./myq.php?page='. ($page + 1) .'>></a>
<a href= ./myq.php?page='
.$total. '>>></a>';

// Находим две ближайшие станицы с обоих краев, если они есть
if($page - 2 > 0) $page2left = ' <a href= ./myq.php?page='. ($page - 2) .'>'. ($page - 2) .'</a> | ';
if($page - 1 > 0) $page1left = '<a href= ./myq.php?page='. ($page - 1) .'>'. ($page - 1) .'</a> | ';
if($page + 2 <= $total) $page2right = ' | <a href= ./myq.php?page='. ($page + 2) .'>'. ($page + 2) .'</a>';
if($page + 1 <= $total) $page1right = ' | <a href= ./myq.php?page='. ($page + 1) .'>'. ($page + 1) .'</a>';

// Вывод меню
echo $pervpage.$page2left.$page1left.'<b>'.$page.'</b>'.$page1right.$page2right.$nextpage;

?>



з.ы. Вот похожая тема была: http://phpforum.ru/index.php?showtopic=38974



Спустя 1 день, 1 час, 25 минут, 31 секунда (9.10.2011 - 23:03) T0L1K.IT написал(а):
Я так понимаю постраничную навигацию нужно делать тоже на ajax'е чтоб оно работало?

Спустя 43 минуты, 41 секунда (9.10.2011 - 23:47) caballero написал(а):
конечно
но подумай что будет если юзер начнет листать браузером вперед назад

Спустя 1 час, 14 минут, 26 секунд (10.10.2011 - 01:01) T0L1K.IT написал(а):
У меня на этот случай происходит перезагрузка страницы(защита от открытия страниц в новых вкладках) приложения(делаю приложение для вк). Т.к. поидее юзер не должен делать этого.

Спустя 14 минут, 38 секунд (10.10.2011 - 01:16) caballero написал(а):
Юзер будет делать что ему вздумается
Поэтому без аякса намного надежнее

Спустя 3 минуты, 24 секунды (10.10.2011 - 01:19) Игорь_Vasinsky написал(а):
есть у JQ плагин симпотный
http://slyweb.ru/jquery/jpaginate/

Спустя 17 часов, 54 минуты, 8 секунд (10.10.2011 - 19:13) T0L1K.IT написал(а):
Вообщем получается при селекте нужно чтоб адрес страницы принимал вид /page.php?imayselecta=znachenie&page=1 затем при щелчке по следующий странице /page.php?imayselecta=znachenie&page=2 (3,4 и тд в зависимости от страницы). Я правильно понимаю логику?
Видимо не то, раз не работает(по крайней мере без ajax'а)

Спустя 14 дней, 5 часов, 28 минут, 42 секунды (25.10.2011 - 00:42) T0L1K.IT написал(а):
Снова поднимаю тему.
С фильтрацие и пагинацие разобралося более менее, но всеравно есть вопрос:
Теперь передаю значение через гет запрос , запрос выгядет так
$('#myqsort').load("smq.php",  "page=1&mq="+document.getElementById('mq').value,
function(){
}
);
Мы собственно при выборе отправляем данные что это 1я страница и ид фильтра, но как видно мы подгружаем пагинацию с данными из другого файла. Ссылки теперь выглядет примерно так
<a href= ./smq.php?page='. ($page - 1) .'&mq='.$sq.'><</a>
(номер страницы и соответственно ид выбранного пункта в фильтре). При переходе на вторую страницу и тд переход и отображение информации корректно. Но вот фильтр пропадает тк он расположен в основном файле, а мы практически переходим в файл с пагинацией. Пробовал засануть всё в один файл но там всё гораздо страшней выходит(там информация начинает дублироваться)
Как решить возникшую проблему, может просто сделать для фильтра тоже отдельный файл?

Спустя 48 минут, 2 секунды (25.10.2011 - 01:30) imbalance_hero написал(а):
T0L1K.IT
Какой именно фильтр? Что-то я тебя не понимаю.

Спустя 9 часов, 31 минута, 12 секунд (25.10.2011 - 11:01) Гость_T0L1K.IT написал(а):
вообшем суть в том чтоб при переходе по страницам поле селекта не исчезало. думаю лучше сюда выложить весь ккод чтоб было понятнее

Спустя 5 часов, 58 минут, 20 секунд (25.10.2011 - 17:00) T0L1K.IT написал(а):
Иллюстрация проблемы:
user posted image
Сверху первая страница с филтром и навигацией
Снизу вторая страница но уже без фильтра, хотя фильтрация выполнена коректно.

Спустя 2 дня, 1 час, 36 минут, 20 секунд (27.10.2011 - 18:36) T0L1K.IT написал(а):
Фильтр с пагинацие удалось сделать. Но есть вопрос
на странице находится фильтр, выбраный селект используется для поиска и подсчета строк в бд. Как значение селекта передать при выборе в переменную нужную не перезагружая страницу(переменная тоже на этой странице)?
Фильтр:
<select name="mq" id="mq" >
<option
value="0">Все</option>
<option
value="1">Обсуждаемые</option>
<option
value="2">Закрытые</option>
<option
value="3">Без ответа</option>
<option
value="4">Со ставкой</option>
</select>

Передать сюда:
$sql = "select * from q WHERE mq='переменная с выбранным нами селектом' ";
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.