Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.95/19: Рейтинг темы: голосов - 19, средняя оценка - 4.95
 Аватар для Братуха
5 / 5 / 5
Регистрация: 15.07.2012
Сообщений: 773

постраничная навигация неправильно выводит меню

14.09.2012, 00:29. Показов 3887. Ответов 50
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток. У меня есть код постраничной навигации
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
// Устанавливаем соединение с базой данных  
 include './libs/mysql.php';  
// Переменная хранит число сообщений выводимых на станице  
$num = 25;  
// Извлекаем из URL текущую страницу  
$page = $_GET['page'];  
// Определяем общее число сообщений в базе данных  
$result = mysql_query("SELECT COUNT(*) FROM post");  
$posts = mysql_result($result, 0);  
// Находим общее число страниц  
$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 post LIMIT $start, $num");  
// В цикле переносим результаты запроса в массив $postrow  
while ( $postrow[] = mysql_fetch_array($result))  
 
echo "<table>";  
for($i = 0; $i < $num; $i++)  
{  
 echo "<tr> 
         <td>".$postrow[$i]['name']."</td> 
         <td>".$postrow[$i]['time']."</td></tr> 
       <tr><td colspan=\"2\">".$postrow[$i]['text']."</td></tr>";  
}  
echo "</table>";
 
 
 
 
// Проверяем нужны ли стрелки назад  
if ($page != 1) $pervpage = '<a href= ./page?page=1><<</a>  
                               <a href= ./page?page='. ($page - 1) .'><</a> ';  
// Проверяем нужны ли стрелки вперед  
if ($page != $total) $nextpage = ' <a href= ./page?page='. ($page + 1) .'>></a>  
                                   <a href= ./page?page=' .$total. '>>></a>';  
 
// Находим две ближайшие станицы с обоих краев, если они есть  
if($page - 2 > 0) $page2left = ' <a href= ./page?page='. ($page - 2) .'>'. ($page - 2) .'</a> | ';  
if($page - 1 > 0) $page1left = '<a href= ./page?page='. ($page - 1) .'>'. ($page - 1) .'</a> | ';  
if($page + 2 <= $total) $page2right = ' | <a href= ./page?page='. ($page + 2) .'>'. ($page + 2) .'</a>';  
if($page + 1 <= $total) $page1right = ' | <a href= ./page?page='. ($page + 1) .'>'. ($page + 1) .'</a>'; 
 
// Вывод меню  
echo $pervpage.$page2left.$page1left.'<b>'.$page.'</b>'.$page1right.$page2right.$nextpage;
Все бы хорошо, но вот выводит ошибку что некоторых переменные не определены. Когда я нахожусь на первой страничке пишет что неопределены page2left , page1left, page1left, на второй страничке пишет эту переменную page2left, ну а на трейтей все хорошо. Пробывал вырезать вот эту строчку
PHP
1
$pervpage.$page2left.$page1left.
думал надо прописать условие,мол если первая страничка не выводить этих переменных в меню, но ничего не вышло, вся надежда на Вас. Зарание Огроменное спасибо. Сейчас посмотрел таже ситуация и когда меню переходит в конец, только ссылки с правой стороны выдают ошибку
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.09.2012, 00:29
Ответы с готовыми решениями:

Постраничная навигация
Нужно по нажатию на кнопку вывести песни определенного жанра. При нажатии на кнопку выводится то количество песен, которое было указано в...

Постраничная навигация
Всем доброго времени суток! Нужна помощь или совет в реализации постраничной навигации в блоге. Есть БД, в ней хранятся записи блога...

Постраничная навигация
Привет, мир! Знатоки SQL + PHP, подскажите принцип работы постраничной навигации. Т.е. Мне не нужны готовые решения, я хочу сам написать...

50
 Аватар для Братуха
5 / 5 / 5
Регистрация: 15.07.2012
Сообщений: 773
28.09.2012, 16:49  [ТС]
Студворк — интернет-сервис помощи студентам
Так и второй запрос мог возвращать пустое значение, но в браузер ничего не выводило, кроме номера таблицы, а в этом выводит ошибку.
0
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
28.09.2012, 16:50
первый запрос не мог возвращать пустое значение.
1
 Аватар для Братуха
5 / 5 / 5
Регистрация: 15.07.2012
Сообщений: 773
28.09.2012, 16:54  [ТС]
Так я что-то запутался можете объяснить?
0
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
28.09.2012, 17:00
PHP
1
$result = mysql_query("SELECT COUNT(*) FROM post");
тут выбирается количество записей.
Результатом будет всегда 1 поле с числом записей в таблице.
Даже для пустой таблицы этот запрос вернёт в этом поле 0.
PHP
1
$posts = mysql_result($result, 0);
из результата выбирается значения из первого поля в результате. То етсь под индексом 0.

Так вот вы написали такой запрос, который не возвращает не одного поля!
1
 Аватар для Братуха
5 / 5 / 5
Регистрация: 15.07.2012
Сообщений: 773
28.09.2012, 17:10  [ТС]
А как вообще можно найти количество полей, как только не таким способом, если я уберу из запроса хоть какое то из условий, значит количество полей будет совсем не то, что мне надо.
0
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
28.09.2012, 17:15
а при чём тут вообще условие? вы просто видимо не правильно записали то что нужно выбрать а не условия.
PHP
1
2
$result = mysqlQuery("SELECT * FROM  irbis_offer, irbis_user, irbis_order WHERE irbis_offer.customer_id=irbis_user.id AND irbis_offer.order_id=irbis_order.order_id AND irbis_order.order_status=2");  
$posts = mysql_result($result, 0);
Вы выбрали сами поля. А вам нужно выбрать их количество.
1
 Аватар для Братуха
5 / 5 / 5
Регистрация: 15.07.2012
Сообщений: 773
28.09.2012, 17:24  [ТС]
А как мне подсчитать количество сообщений без условия, если в одной таблице может быз 3 записи во второй 6 ,а в третей вообще 54. Либо я совсем не понял Вас, какое количество надо получить.
0
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
28.09.2012, 17:31
при чём тут записи в таблицах.
вы выбираете строки из одной или нескольких таблиц, не важно. Вот вам и нужно посчитать количество этих строк.
Для подсчёта используется функция count() в mysql. О чём вы бы знали, если бы просли хотя бы одну статью для новичков, не говоря уже о книге.
1
 Аватар для Братуха
5 / 5 / 5
Регистрация: 15.07.2012
Сообщений: 773
28.09.2012, 17:39  [ТС]
Вот объясните почему вот с таким запросом работает
MySQL
1
SELECT COUNT(*) FROM  `irbis_order` WHERE `order_categ` IN ($cat) AND `order_status` IN (2,3)
а вот с таким
MySQL
1
SELECT * FROM  irbis_offer, irbis_user, irbis_order WHERE irbis_offer.customer_id=irbis_user.id AND irbis_offer.order_id=irbis_order.order_id AND irbis_order.order_status=2
нет. Я например не понимаю они же одотипные. А проблема вот в этом COUNT(*)
0
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
28.09.2012, 17:44
Я вам уже объяснил.
Цитата Сообщение от DrobyshevAlex Посмотреть сообщение
Вам говорят что нет такого элемента в результате, а значит он пустой.
Цитата Сообщение от DrobyshevAlex Посмотреть сообщение
PHP
1
$result = mysql_query("SELECT COUNT(*) FROM post");
тут выбирается количество записей.
Результатом будет всегда 1 поле с числом записей в таблице.
Даже для пустой таблицы этот запрос вернёт в этом поле 0.
PHP
1
$posts = mysql_result($result, 0);
из результата выбирается значения из первого поля в результате. То етсь под индексом 0.
Так вот вы написали такой запрос, который не возвращает не одного поля!
Цитата Сообщение от DrobyshevAlex Посмотреть сообщение
вы выбираете строки из одной или нескольких таблиц, не важно. Вот вам и нужно посчитать количество этих строк.
Для подсчёта используется функция count() в mysql. О чём вы бы знали, если бы просли хотя бы одну статью для новичков, не говоря уже о книге.
0
 Аватар для Братуха
5 / 5 / 5
Регистрация: 15.07.2012
Сообщений: 773
28.09.2012, 17:53  [ТС]
"А проблема вот в этом COUNT(*)" - это был не упрек
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.09.2012, 17:53
Помогаю со студенческими работами здесь

постраничная навигация
Уважаемые форумчане.. не магу разобраться, почему выдает ошибку, раньше всё работало, щас вываливает ошибку Warning: Division...

Постраничная навигация
В общем есть таблица options где хранится число &quot;5&quot; для вывода 5 записей на странице, ошибку в коде не выводит а выводит все записи а не...

Постраничная навигация
Я сделал полностью вывод , но не могу решить с лемитом . /page/1/ Нужно вывести новость от 10 до 20 и тд. если page/2 то 20 - 30 ...

Постраничная навигация
Добрый день. У меня задача такая. Данные выводятся ид БД в таблицу, которая включена в форму... в самой таблице есть поля которые...

постраничная навигация
Всем привет, кто знает как грамотно записать запрос постраничной навигации стены, на странице друга? чтобы выглядело примерно так...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
51
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru