Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/9: Рейтинг темы: голосов - 9, средняя оценка - 5.00
kostya_

ПОСТРАНИЧНАЯ НАВИГАЦИЯ

02.05.2011, 17:50. Показов 1915. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Имеется 3 файла

1. m_categories.php

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function categories_get($id, $start, $num)
{
        $query = "SELECT id_article, title, content,description, date, view, img, author, cat FROM articles WHERE cat='$id' ORDER BY id_article DESC LIMIT $start, $num";
        $result = mysql_query($query);
        
            // Извлечение из БД.
    $n = mysql_num_rows($result);
    $get = array();
 
    for ($i = 0; $i < $n; $i++)
    {
        $row = mysql_fetch_assoc($result);      
        $get[] = $row;
    }
    
    return $get;
}





2.c_category.php

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
<?php
//Подключение к БД
include_once('startup.php');
 
//Подключение в модели
include_once('m_categories.php');
 
$id = $_GET['id'];
 
 
$num = 1;
// Извлекаем из URL текущую страницу
@$page = $_GET['page'];
// Определяем общее число сообщений в базе данных
$result00 = mysql_query("SELECT COUNT(*) FROM articles WHERE cat='$id'");
$temp = mysql_fetch_array($result00);
$posts = $temp[0];
// Находим общее число страниц
$total = (($posts - 1) / $num) + 1;
$total =  intval($total);
// Определяем начало сообщений для текущей страницы
$page = intval($page);
// Если значение $page меньше единицы или отрицательно
// переходим на первую страницу
// А если слишком большое, то переходим на последнюю
if(empty($page) or $page < 0) $page = 1;
  if($page > $total) $page = $total;
// Вычисляем начиная с какого номера
// следует выводить сообщения
$start = $page * $num - $num;
// Выбираем $num сообщений начиная с номера $start       
        
 
 
// Извлечение статей по категорям
$articles = categories_get($id, $start, $num);
 
 
// Кодировка.
header('Content-type: text/html; charset=windows-1251');
// Вывод в шаблон.
include('article_cat.php');
 
?>




3. article_cat.php


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
<? foreach ($articles as $article): ?>
 
 <h3><?=$article['title']?></h3>
 <a href="c_article.php?id=<?=$article['id_article']?>"> <img src="img/<?=$article['img']?>"></a>
 <p><strong>Описание : </strong><?=$article['description']?></p>
 <strong>Автор : </strong> <?=$article['author']?> 
 <strong>Дата : </strong> <?=$article['date']?> 
 <strong>Просмотров : </strong> <?=$article['view']?> 
 <a href="c_article.php?id=<?=$article['id_article']?>"> Далее >> </a>
 
 <? endforeach ?>
 
<?php 
 
// Проверяем нужны ли стрелки назад
if ($page != 1) $pervpage = '<a href=c_category.php?cat='.$cat.'&page=1>Первая</a> | <a href=c_category.php?cat='.$cat.'&page='. ($page - 1) .'>Предыдущая</a> | ';
// Проверяем нужны ли стрелки вперед
if ($page != $total) $nextpage = ' | <a href=c_category.php?cat='.$cat.'&page='. ($page + 1) .'>Следующая</a> | <a href=c_category.php?cat='.$cat.'&page=' .$total. '>Последняя</a>';
 
// Находим две ближайшие станицы с обоих краев, если они есть
if($page - 5 > 0) $page5left = ' <a href=c_category.php?cat='.$cat.'&page='. ($page - 5) .'>'. ($page - 5) .'</a> | ';
if($page - 4 > 0) $page4left = ' <a href=c_category.php?cat='.$cat.'&page='. ($page - 4) .'>'. ($page - 4) .'</a> | ';
if($page - 3 > 0) $page3left = ' <a href=c_category.php?cat='.$cat.'&page='. ($page - 3) .'>'. ($page - 3) .'</a> | ';
if($page - 2 > 0) $page2left = ' <a href=c_category.php?cat='.$cat.'&page='. ($page - 2) .'>'. ($page - 2) .'</a> | ';
if($page - 1 > 0) $page1left = '<a href=c_category.php.php?cat='.$cat.'&page='. ($page - 1) .'>'. ($page - 1) .'</a> | ';
 
if($page + 5 <= $total) $page5right = ' | <a href=c_category.php?cat='.$cat.'&page='. ($page + 5) .'>'. ($page + 5) .'</a>';
if($page + 4 <= $total) $page4right = ' | <a href=c_category.php?cat='.$cat.'&page='. ($page + 4) .'>'. ($page + 4) .'</a>';
if($page + 3 <= $total) $page3right = ' | <a href=c_category.php?cat='.$cat.'&page='. ($page + 3) .'>'. ($page + 3) .'</a>';
if($page + 2 <= $total) $page2right = ' | <a href=c_category.php?cat='.$cat.'&page='. ($page + 2) .'>'. ($page + 2) .'</a>';
if($page + 1 <= $total) $page1right = ' | <a href=c_category.php?cat='.$cat.'&page='. ($page + 1) .'>'. ($page + 1) .'</a>';
 
// Вывод меню если страниц больше одной
 
if ($total > 1)
{
Error_Reporting(E_ALL & ~E_NOTICE);
echo "<div class=\"pstrnav\">";
echo $pervpage.$page5left.$page4left.$page3left.$page2left.$page1left.'<b>'.$page.'</b>'.$page1right.$page2right.$page3right.$page4right.$page5right.$nextpage;
echo "</div>";
}
?>

Всё работает но когда я нажимаю ссылку на следующую страницу возникает ошибка :

Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in Z:\home\localhost\www\site\m_categories. php on line 34

Warning: Cannot modify header information - headers already sent by (output started at Z:\home\localhost\www\site\m_categories. php:34) in Z:\home\localhost\www\site\c_category.ph p on line 47




Подскажите пожалуйста в чём ошибка
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.05.2011, 17:50
Ответы с готовыми решениями:

постраничная навигация
здравствуйте, вот скрипт постраничной навигации всё хорошо кроме одного, страницы не листаются. помогите найти проблему. &lt;?php ...

Постраничная навигация
Здравствуйте это конечно вопрос не новый но ничего подходящего пока не нашел для себя,.. помогите сделать постранично В папке есть...

Постраничная навигация
Ребят подскажите пожалуйста уже который день мучаюсь, есть у нас таблица в бд dannie_cat_article у нее есть 4 поля это id, text, date,...

4
 Аватар для ostgals
886 / 681 / 101
Регистрация: 23.01.2009
Сообщений: 1,582
02.05.2011, 18:53
Цитата Сообщение от kostya_ Посмотреть сообщение
Подскажите пожалуйста в чём ошибка
Неверно составленный запрос.
Замените в m_categories.php
PHP
1
$result = mysql_query($query);
на
PHP
1
$result = mysql_query($query) or die(mysql_error());
и посмотрите какая ошибка выведется.
0
kostya_
02.05.2011, 19:35
Да, действительно выдаётя ошибка :

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-1, 1' at line 1

Подскажите пожайлуста как её исправить
601 / 569 / 104
Регистрация: 07.11.2010
Сообщений: 2,004
02.05.2011, 19:56
глянуть что там у тебя за запрос и исправить
0
 Аватар для ostgals
886 / 681 / 101
Регистрация: 23.01.2009
Сообщений: 1,582
02.05.2011, 22:06
Цитата Сообщение от kostya_ Посмотреть сообщение
Подскажите пожайлуста как её исправить
Скорее всего ошибка в логике. Вот здесь:
PHP
1
$start = $page * $num - $num;
При $page = 0 (значение по умолчанию) и $num = 1 (жестко прописано в скрипте)
получается, что $start = -1.

Далее $start попадает в sql-запрос как первый параметр для LIMIT. Поскольку LIMIT не принимает для параметра отрицательные числа, то возникает ошибка.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.05.2011, 22:06
Помогаю со студенческими работами здесь

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

Постраничная навигация
Есть скрипт, для говнокрафта minecraft banlist&quot;а, не подскажете, как сделать постраничную навигацию? &lt;link rel='stylesheet'...

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

Постраничная навигация
Всем привет,есть такая задача: &lt;?php foreach ($list as $item) : ?&gt; &lt;?php echo '&lt;div class=&quot;mtn-time&quot;&gt;'.date('H:i',...

Постраничная навигация
Добрый день! Помогите доработать пожалуйста скрипт постраничной навигации. Суть такая: у меня стоит фильтр где посититель выбирает в...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД 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
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru