Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP: базы данных
Войти
Регистрация
Восстановить пароль
 
SZV
0 / 0 / 1
Регистрация: 25.12.2016
Сообщений: 90
1

навигация страниц на сайте

01.02.2017, 10:38. Просмотров 192. Ответов 6
Метки нет (Все метки)

Строю навигацию страниц на сайте.

Для начала необходимо вывести по 3 заметки на странице. Вот код
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
<?php   
// Переменная хранит число сообщений выводимых на станице  
$num = 3;  
// Извлекаем из 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))  
?>
Где
data
таблица с данными.
Проблема в том, что у меня выводятся все заметки. Хотя задано только три
PHP
1
$num = 3;
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.02.2017, 10:38
Ответы с готовыми решениями:

Не работает навигация на сайте
Здравствуйте, подскажите где копать: Есть запрос из БД на вывод новостей....

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

Открытие страниц на сайте
Всем добрый день! При написании сайта у меня появилась такая проблема: Нужно...

Непонятное явление выбор страниц на сайте
или я глючу) но не понятно почему так происходит... вот часть кода: &lt;?php...

Пагинация страниц без добавления разрыв страниц
Здравствуйте! Подскажите как сделать нумерацию страниц не используя разрыв...

6
Виталюска
475 / 463 / 229
Регистрация: 26.09.2010
Сообщений: 2,360
01.02.2017, 10:41 2
Цитата Сообщение от SZV Посмотреть сообщение
Проблема в том, что у меня выводятся все заметки.
а вывод где?
1
SZV
0 / 0 / 1
Регистрация: 25.12.2016
Сообщений: 90
01.02.2017, 10:56  [ТС] 3
Точно! У меня ниже вывод и result формируется заново, поэтому вывод происходит по новому result.
Часть кода необходимо убрать
PHP
1
2
3
4
5
$result = mysql_query("SELECT id,title,description,dare,author,mini_img,view FROM data WHERE cat='$cat'",$db);
if (!$result){ 
echo"<p>Запрос на выборку данных из таблицы не прошел. Напишите об этом администратуру <br/> <strong>Код ошибки</strong></p>"; 
exit (mysql_error());
}
А остальную часть кода оставить:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
if (mysql_num_rows($result) > 0 ){
    $myrow = mysql_fetch_array($result);
    do{     
        printf ("<table  align='center' class='post'> 
                         <tbody>
                         
                             <tr>
                               <td class='post_title'><p id='post_name'><img class='mini' aling='left' src='%s'><a href='view_post.php?id=%s'>%s</a></p>
                               <p id='post_adds'>Дата добавления: %s</p>
                               <p id='post_adds'>Автор: %s</p></td>
                             </tr>
                             
                             <tr>
                               <td>%s<p class='post_view'>Просмотров: %s</p></td>
                             </tr>
                         </tbody>
                       </table <br/><br/>",$myrow['mini_img'],$myrow['id'],$myrow['title'],$myrow['dare'],$myrow['author'],$myrow['description'],$myrow['view']); /*ставить в той последовательности, в которой будут выводиться по очередности %s*/    
        }
        while ($myrow = mysql_fetch_array($result));
Тогда вывод будет правильным по 3 заметки, как задано у меня.

Хотя может быть более правильным будет написать код постраничной навигации в отдельном файле, а сюда цеплять через
PHP
1
include
. Хотя... Не знаю.
0
Виталюска
475 / 463 / 229
Регистрация: 26.09.2010
Сообщений: 2,360
01.02.2017, 11:10 4
Цитата Сообщение от SZV Посмотреть сообщение
Хотя может быть более правильным будет написать код постраничной навигации в отдельном файле, а сюда цеплять через
это будет удобней
0
FloppyDisc
Особый статус
602 / 205 / 159
Регистрация: 18.11.2015
Сообщений: 1,043
01.02.2017, 15:22 5
Цитата Сообщение от SZV Посмотреть сообщение
написать код постраничной навигации в отдельном файле
а еще правильней класс для работы с ним
0
miketomlin
Заблокирован
01.02.2017, 19:06 6
Цитата Сообщение от FloppyDisc Посмотреть сообщение
а еще правильней класс для работы с ним
А если ТС не использует ООП?

SZV, да, лучше разделить подготовку данных и шаблон. Пример: Как сделать пагинацию? Правда, вот эти команды можно вынести и в шаблон, т.к. они относятся к строке навигации:
PHP
1
2
3
    $range=6;
    $first=$pn-1-($pn-2)%$range;
    $last=$first+$range<$pc?$first+$range:$pc;
0
FloppyDisc
Особый статус
602 / 205 / 159
Регистрация: 18.11.2015
Сообщений: 1,043
01.02.2017, 21:52 7
Цитата Сообщение от miketomlin Посмотреть сообщение
А если ТС не использует ООП?
Это просто совет, который очень упростил бы жизнь. Ну не использует так нет, его бремя)
0
01.02.2017, 21:52
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.02.2017, 21:52

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

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

Алфавитная навигация
Всем здравствуйте ! прошу помощи в доработке этого скрипта. Суть просьбы :...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru