10:58 

php навигация по страницам

Сильвана Ветрокрылая~
Anytime you call my name.
Перестраиваю весь свой сайт на php. С базой данных работать научилась, текст вывожу без проблем.
Единственная проблема, с которой столкнулась - постраничная навигация (вывод текста, например статей в определенном порядке и кол-ве на 1 странице).
В инете много где находила и пробовала различные варианты, но обычно либо не происходило вобще ничего, либо с жуткими ошибками.
Есть у кого-то возможность проконсультировать?

@темы: Вопросы, PHP

Комментарии
2011-12-04 в 14:53 

--==SS==--
Sanctus Satanas
Сильвана Ветрокрылая~, да, там везде будет жаловаться.
«articles.php?'&page=1» — лишний апостроф вкрался между «?» и «&». На следующих строчках то же самое.

2011-12-04 в 15:07 

Сильвана Ветрокрылая~
Anytime you call my name.
блин. чет нифига. я сделала как надо, и все равно он жалуется.

pastebin.com/d8vjWEBd

2011-12-04 в 16:05 

--==SS==--
Sanctus Satanas
Сильвана Ветрокрылая~, на 95-й строке та же фигня в конце.

2011-12-04 в 16:25 

Сильвана Ветрокрылая~
Anytime you call my name.
ооооооо я мега не внимательная. и у меня заработала эта хрень!!!!!!!!!!!!!! огромное спасибо, просто огромнейшее!!!! у меня нет слов, как вы мне помогли!!! я с этим кодом бы в жизни не разобралась!!!!!!!!!! :heart:

2011-12-04 в 16:28 

Сильвана Ветрокрылая~
Anytime you call my name.
а еще вопрос. статьи то без проблем будут вылазить в любом порядке, это не существенно. а вот новости я хочу сделать, чтобы вылазили именно по датам. я знаю, что там нужно всего одну строку прописать в выводе. но какую?

2011-12-04 в 22:27 

--==SS==--
Sanctus Satanas
Сортировку по датам.
Запрос получится примерно такой:
SELECT что-нибудь FROM откуда-нибудь WHERE ляляля = тралялля ORDER BY поле_даты DESC

2011-12-16 в 12:39 

--==SS==--
Sanctus Satanas
Получилось-то что-нибудь? )

2011-12-16 в 14:17 

Сильвана Ветрокрылая~
Anytime you call my name.
да =))
charmed4.net
новости делаются по датам и по 6 шт на страничке) удобно и клево)) :heart:

2011-12-17 в 12:12 

Вот тут есть подробное описание пагинатора. Правда он немного сложноват для начинающих...

URL
2011-12-28 в 10:53 

Сильвана Ветрокрылая~
Anytime you call my name.
а вобще при выводе кол-ва страниц возникает баг.
www.charmed4.net/books.php
книги вмещаются все не 1 странице, но код выводит, чтое сть вторая страница. и если на нее кликнуть - естественно выдает ошибку. не могу понять, как искоренить его :fire:

2012-01-30 в 19:48 

--==SS==--
Sanctus Satanas
Только сейчас заметил. ^^

но код выводит, чтое сть вторая страница
Ну тогда снова кусок этого кода — в студию. )

2012-01-31 в 01:57 

Сильвана Ветрокрылая~
Anytime you call my name.
гыгы) я и сама уже забыла))
pastebin.com/J66nF9zX

по-моему именно этот кусок и отвечает за вывод

2012-01-31 в 03:32 

--==SS==--
Sanctus Satanas
Ага, отвечает этот, но в нём проблемы и нет. :) Судя по всему, там в $total попадает число 2. Проверьте запросы на выборку данных и подсчёт записей - если там есть WHERE, то условия в них должны быть одинаковыми.

2012-01-31 в 16:00 

Сильвана Ветрокрылая~
Anytime you call my name.
да вроде нету

pastebin.com/rKh7SqwG

2013-08-01 в 17:29 

А не подскажете алгоритм создания пагинации?

URL
2013-08-02 в 00:46 

--==SS==--
Sanctus Satanas
Сильвана Ветрокрылая~, ух ты, оказывается, я снова пропустил тогда это сообщение. ^_^
В общем, проблема очень простая: некорректно считается число страниц. Чтобы подсчитать правильно, нужно взять общее число записей, разделить на число записей на страницу и округлить вверх (т.к. 1,1 страницы это, собственно, две страницы, а не одна). Округление вверх делается функцией ceil().
Итого если брать ваш скрипт по последней ссылке, то получится:

$total = ceil($posts / $num); // правильно считаем число страниц
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1; // номер текущей страницы, по умолчанию - 1
 
// если страница больше максимальной, остановимся на максимальной
if ($page > $total) {
$page = $total;
}
 
// страница не может быть меньше первой
if ($page <= 0) {
$page = 1;
}
 
$start = ($page - 1) * $num;
 
// а это такая микрооптимизация: если запрос идёт по большой таблице, но у нас
// под условие подпадает не так много записей, то можно остановиться на последней
if ($posts > $num) {
$num = $posts;
}

2013-08-02 в 00:54 

Сильвана Ветрокрылая~
Anytime you call my name.
Сильвана Ветрокрылая~, ух ты, оказывается, я снова пропустил тогда это сообщение. ^_^
омг О_о сообщению больше года! и вы вдруг снова в строю и снова отвечаете О_О

я удивлена. к сожалению, не имею больше времени на поддержку сайта. но вы мне в прошлый раз вроде бы очень помогли и вобще вы клевый =)))

2013-08-02 в 00:57 

Сильвана Ветрокрылая~
Anytime you call my name.
насколько я помню, это проблема моя с тем, что у меня даже если записи влезают на странице, все равно выдает вторую страницу якобы? но пустую

2013-08-02 в 01:00 

--==SS==--
Sanctus Satanas
Сильвана Ветрокрылая~, да просто "Гость" написал, а я подписан на топик. ) Ну и сам я вроде живой ещё так-то вообще. &)
Я просто сейчас проверил — а страничка та до сих пор жива и на ней до сих пор тот же самый баг, что показывается две страницы, хотя на самом деле одна. )))

2013-08-02 в 01:13 

Сильвана Ветрокрылая~
Anytime you call my name.
Я просто сейчас проверил — а страничка та до сих пор жива и на ней до сих пор тот же самый баг, что показывается две страницы, хотя на самом деле одна. ))
ага, сайт на месте, все по-старому =)) просто совсем нет сил и желания этим заниматься. хотя на самом деле просто лень. хоть и интересно все это. :weep3:

     

Сообщество PHP программистов

главная