|
|
|
|
// Находим общее число страниц
$total = intval(($posts - 1) / $num) + 1;
|
Строка из примера вот отседа: http://www.softtime.ru/article/index.php?id_article=33
=-=-=-=-=-=
Этот же операнд используется и в книге когорую преобрёл(PHP практика создания web сайта 2е издание(в отличие от первого только коду больше напихано)) | |
|
|
|
|
|
|
|
для: dimonich2004
(12.01.2010 в 08:45)
| | Может intval возвращает 0?
нужно перед каждой операцией выводить все имеющиеся переменные, чтобы отследить их значения в каждый момент | |
|
|
|
|
|
|
|
для: Петр
(12.01.2010 в 09:07)
| | ВЫДАЁТ ОШИБКУ:
Fatal error: Unsupported operand types | |
|
|
|
|
|
|
|
для: dimonich2004
(12.01.2010 в 08:45)
| | как-то странно, что intval не работает. Впрочем, я всегда пользуюсь (int). В моем варианте строка выглядела бы так:
// Находим общее число страниц
$total = (int)(($posts - 1) / $num) + 1;
|
| |
|
|
|
|
|
|
|
для: kosta_in_net
(12.01.2010 в 09:08)
| | Пробывал... на это действие тож есть ответ у IE =)
Parse error: syntax error, unexpected T_VARIABLE | |
|
|
|
|
|
|
|
для: dimonich2004
(12.01.2010 в 09:10)
| | так это ужо другая проблема: переменная не определена. Посмотри, что там с переменными. Сделай echo 'posts='.$posts.' num='. $num;
и посмотри, будет ли там что-то | |
|
|
|
|
|
|
|
для: kosta_in_net
(12.01.2010 в 09:12)
| | Прошу прощения ругаеццо на другую строку:
попробывал написать так:
Выдаёт Абшибку:
Parse error: syntax error, unexpected T_VARIABLE | |
|
|
|
|
|
|
|
для: dimonich2004
(12.01.2010 в 09:21)
| | ну а echo 'page='.$page; пробовал? | |
|
|
|
|
|
|
|
для: kosta_in_net
(12.01.2010 в 09:23)
| | posts=Array num=3 | |
|
|
|
|
|
|
|
для: kosta_in_net
(12.01.2010 в 09:23)
| | Fatal error: Unsupported operand types in
Вид кода сейчас примерно такой:
$result = mysql_query("SELECT COUNT(*) FROM news");
$posts = mysql_fetch_row($result);
echo 'posts='.$posts.' num='. $num;
// Находим общее число страниц
$total = (int)(($posts - 1) / $num) + 1;
echo 'posts='.$posts.' num='. $num;
// Определяем начало сообщений для текущей страницы
$page = (int)($page);
|
ругаеццо: Fatal error: Unsupported operand types
на вот эту строку:
$total = (int)(($posts - 1) / $num) + 1;
|
| |
|
|
|
|
|
|
|
для: dimonich2004
(12.01.2010 в 09:31)
| | ну так, если posts=Array, с какого перепуга он превратится в число? Очевидно, брать нужно $posts[0] | |
|
|
|
|
|
|
|
для: kosta_in_net
(12.01.2010 в 09:50)
| | Благодарю...
ВОТ КУСОЧЕГ КОДА ЕСЛИ У КОГО-ТО ВОЗНИКНЕТ ПРОБЛЕМ С ПРИМЕРОМ ПОСТРАНИЧНОЙ НАВИГАЦИИ С ЭТОГО САЙТА
$posts = mysql_fetch_row($result);
// Находим общее число страниц
$total = (int)(($posts[0] - 1) / $num) + 1;
// Определяем начало сообщений для текущей страницы
$page = (int)($page);
|
| |
|
|
|
|
|
|
|
для: dimonich2004
(12.01.2010 в 10:00)
| | это плохой способ округления вверх.
При пустой таблице $total окажется равно 1 , а это не так. | |
|
|
|
|
|
|
|
для: Trianon
(12.01.2010 в 10:42)
| | $total - количество страниц. Хотябы одна страница должна быть при страничной выборке?
На счет округления, можно $total = ceil(($posts - 1) / $num); или floor, или round. Если имеется в виду это. Но у человека в примере было через воттак... Ну вот, как бы вот так и решили :) | |
|
|
|
|
|
|
|
для: Trianon
(12.01.2010 в 10:42)
| | При пустой таблице одна страница все равно должна быть | |
|
|
|
|
|
|
|
для: GeorgeIV
(12.01.2010 в 11:14)
| | >При пустой таблице одна страница все равно должна быть
при пустой таблице должно выводиться соответствуеще собщение. | |
|
|
|
|
|
|
|
для: Рома
(12.01.2010 в 12:17)
| | разве сообщение мешает быть странице? Или оно на пустом экране обязано выводиться? У меня в такой ситуации пишется (к примеру):
Записей 0, страница 1 из 1.
Это неверный подход? | |
|
|
|
|
|
|
|
для: GeorgeIV
(12.01.2010 в 11:14)
| | Не надо подменять понятия.
Страницу, как гипертекстовый документ, никто не отменял.
Странице, как контейнеру элементов постраничной навигации, взяться неоткуда. | |
|
|
|
|
|
|
|
для: Trianon
(12.01.2010 в 13:31)
| | Я не знаю, я не вникал в логику всей программы. Просто помог человеку сделать так, чтобы его строка
$total = (int)(($posts[0] - 1) / $num) + 1;
заработала. Но Рома утверждает, что должно выводиться сообщение. У меня оно и выводится. Думаю, и у человека выведится. Если тут виден подвох, поясните, в чем именно. | |
|
|
|
|
|
|
|
для: kosta_in_net
(12.01.2010 в 13:38)
| | нет никакого подвоха, просто нужно грамотно обрабатывать все возможные ситуации. | |
|
|
|
|
|
|
|
для: Рома
(12.01.2010 в 14:05)
| | И какой способ грамотный? | |
|
|
|
|
|
|
|
для: kosta_in_net
(12.01.2010 в 13:38)
| | Корректное округление вверх идет по схеме $total = (int)(($posts[0] + $num - 1) / $num); | |
|
|
|
|
|
|
|
для: Trianon
(12.01.2010 в 14:18)
| | между прочим, человек взял код отсюда http://www.softtime.ru/article/index.php?id_article=33 ;) | |
|
|
|
|
|
|
|
для: kosta_in_net
(12.01.2010 в 14:29)
| | А я-то чем могу помочь. the fact does not create in me a sense of obligation. | |
|
|
|
|
|
|
|
для: Trianon
(12.01.2010 в 16:01)
| | просто обратил внимание, что там код не идиален... | |
|
|
|
|
|
|
|
для: kosta_in_net
(12.01.2010 в 13:38)
| | СПАСИБ второй раз... =)
=======
А по поводу пустого сообщения....
-я просто написал условие при котором если в выборка пуста то меню и не выводиццо... а выводиццо просто сообщение типа (извените нечего не найдено =) )
и нечего Димагогить =) [спасиб всем кто помог разобраццо] | |
|
|
|