Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: постраничная навигация на php
Просто скопировал оттуда скрипты, подставил свои данные...
Пришлось исправить некоторые ошибки, которые там были - нашёл на этом же форуме.
Но всё равно не работает. Информацию из базы выводит и даже меню внизу создаёт, но когда нажимаю на вторую, третью... страницы, то вылезает ошибка 404.
Покинул форум
Сообщений всего: 1459
Дата рег-ции: Авг. 2008 Откуда: Крым
Помог: 11 раз(а)
В бщем вопрос такой, Вы умеете например методом GET получить номер текущей страницы? Потом сколько сообщений должно быть на странице определить? А следом посчитать количество страниц в базе?
Если все это можете то проблем не возникнет. Если не знаете, то конкретно разбирайте поставленые вопросы выше.
Не хочу давать вам готовый свой класс, вам стоит самому научится.
Сама картинка такая:
Когда у нас есть количество страниц в базе и мы хотим например выводить 10 сообщений на страницу, то мы просто количество сообщений делим на 10 и округляем в большую сторону. Получаем так число страниц в навигации.
И далее просто пользуемся оператором for и выводим необходимые ссылки.
Из базы MySQL выведем страницы с помощью команды SELECT , но чтоб нам вывести необходимые собщения для определенной страницы, то нам необходимо использовать LIMIT , а в его параметрах указывать первое число, как: (текущая страница умноженная на количество выводимых страниц и отнимаем количество выводимых страниц (например: текущая страница 2 а выводим по 10 новостей, то получается - ((2*10)-10))=10) - т.е. мы указываем что выводить нужно с 10 позиции, а второй параметр LIMIT - указываем сколько строк выводить т.е. в данном случае 10 .
Shoorman
Отправлено: 22 Апреля, 2010 - 02:11:34
Новичок
Покинул форум
Сообщений всего: 2
Дата рег-ции: Апр. 2010
Помог: 0 раз(а)
ALEN пишет:
В бщем вопрос такой, Вы умеете например методом GET получить номер текущей страницы? Потом сколько сообщений должно быть на странице определить? А следом посчитать количество страниц в базе?
Если все это можете то проблем не возникнет. Если не знаете, то конкретно разбирайте поставленые вопросы выше.
Не хочу давать вам готовый свой класс, вам стоит самому научится.
Сама картинка такая:
Когда у нас есть количество страниц в базе и мы хотим например выводить 10 сообщений на страницу, то мы просто количество сообщений делим на 10 и округляем в большую сторону. Получаем так число страниц в навигации.
И далее просто пользуемся оператором for и выводим необходимые ссылки.
Из базы MySQL выведем страницы с помощью команды SELECT , но чтоб нам вывести необходимые собщения для определенной страницы, то нам необходимо использовать LIMIT , а в его параметрах указывать первое число, как: (текущая страница умноженная на количество выводимых страниц и отнимаем количество выводимых страниц (например: текущая страница 2 а выводим по 10 новостей, то получается - ((2*10)-10))=10) - т.е. мы указываем что выводить нужно с 10 позиции, а второй параметр LIMIT - указываем сколько строк выводить т.е. в данном случае 10 .
Так я и использую все те приёмы, о которых вы пишете: get, for, select, limit. И формула для limit такая же. Проблема, видимо, где-то в использовании именно get. Попробовал покрутить так и эдак, перечитал её использование, но никак не получается...
Попробовал даже другие скрипты из инета использовать - большинство основано на таком же принципе. Но ничего не получается. Одинаковая ошибка...
Vivasvat
Отправлено: 08 Октября, 2010 - 09:21:29
Новичок
Покинул форум
Сообщений всего: 2
Дата рег-ции: Окт. 2010
Помог: 0 раз(а)
Раз у тебя вылезает ошибка 404, то как я думаю ты вообще не попадаешь на страницу со скриптом, может ты не отредактировал в отображении постраничной навигации на какие страницы у тебя должен быть переход? Напиши нам, что у тебя в строке браузера, и название страницы со скриптом.
SergAntDnepr
Отправлено: 12 Октября, 2010 - 22:26:17
Новичок
Покинул форум
Сообщений всего: 24
Дата рег-ции: Февр. 2010
Помог: 0 раз(а)
Подскажите пожалуйста, а что в этом скрипте надо подправить чтобы заметки из базы данных выводились не с первой по последнюю, а с последней по первую??? Наверное где то здесь следует что-то изменить:
// Вычисляем начиная к какого номера
// следует выводить сообщения
$start = $page * $num - $num;
// Выбираем $num сообщений начиная с номера $start
$result = mysql_query("SELECT * FROM table WHERE confirm = '' LIMIT $start, $num");
Uchkuma
Отправлено: 12 Октября, 2010 - 22:42:00
Участник
Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010 Откуда: Киров
$result=mysql_query("SELECT * FROM table WHERE confirm = '' ORDER BY id DESC LIMIT $start, $num");
Вместо id может быть другое поле, по которому надо сортировать. (Добавление)
Заметки будут отсортированы наоборот, а нумерация страниц останется с первой по последнюю.
SergAntDnepr
Отправлено: 12 Октября, 2010 - 23:07:54
Новичок
Покинул форум
Сообщений всего: 24
Дата рег-ции: Февр. 2010
Помог: 0 раз(а)
Uchkuma, ОГРОМНОЕ Спасибо! Заработало!!!
ByLex
Отправлено: 27 Сентября, 2011 - 19:40:57
Новичок
Покинул форум
Сообщений всего: 5
Дата рег-ции: Окт. 2009
Помог: 0 раз(а)
так же воспользовался статьей.....но почему то когда по ссылкам начинаешь переходить, то товары не меняются....т.е. если на первый был товар шланг, то перейдя на вторую страницу так и остается этот шланг и все остальные какие были на первой странице....помогите разобраться? Что я не так делаю
$result=mysql_query("DELETE from grandi_catalog WHERE id = $id_ed");
}
function print_section(){
global$id_sec;
$resultat=mysql_query("SELECT id,name,idheaders,type1,type2,type3,string1,string2,hide,number1,number2,number3,number4,new FROM grandi_catalog WHERE idp = $id_sec and isprod=1 ORDER BY sort");
// Выбираем $num сообщений начиная с номера $start
// :KLUDGE: tmh 040928: Сложный запрос
// Возможно будет замедлять работу системы
// Проверить на объеме данных от 10000 до 100000 строк
// При необходимости оптимизировать таблицу и наложить соответсвующие индексы.
global$id_sec;
$res=mysql_query("SELECT id,name,idheaders,type1,type2,type3,string1,string2,hide,number1,number2,number3,number4,new FROM grandi_catalog WHERE idp = $id_sec and isprod=1 ORDER BY sort LIMIT $start, $num");
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.