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

Доработать навигацию на php

18.08.2013, 01:12. Показов 1026. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброе время суток! Вот наткнулся в ютьюбе, на видео урок, по созданию навигации по сайту, автор Дмитрий Валак. В его видео уроки, я так и не понял весь принцип работы данного скрипта. Но кое в чем разобрался!

Помогите доделать скрипт до ума, так чтоб он выводил точные результаты. Несколько последних результатов он просто не выводит. У меня к примеру 25 статей в базе, и 10 последних он не выводит. Думаю здесь допущена ошибка какая-то. И возможно нужно добавить условии, чтоб более точней выводил результат. Подскажите знатоки, что делать?

Стоит мне изменить в строке: $total = (($posts - 1) / $num) + 1; и добавить к примеру не + 1 а + 2 или + 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
26
$HOST = 'localhost';
        $USER = 'root';
        $PASSWORD = '';
        $DB = 'articles';
        
        $connection = mysql_connect($HOST,$USER,$PASSWORD);
        mysql_set_charset('utf8',$connection);
        if(!$connection || !mysql_select_db($DB,$connection)) {
            exit(mysql_error());
        }
 
        $num = 15;
        $page = $_GET['page'];
        $result00 = mysql_query("SELECT id,title,discription,date FROM articles");
        $temp = mysql_fetch_array($result00);
        $posts = $temp[0];
        $total = (($posts - 1) / $num) + 1;
        $total =  intval($total);
        $page = intval($page);
        if(empty($page) or $page < 0) $page = 1;
        if($page > $total) $page = $total;
        $start = $page * $num - $num;
 
        $query = mysql_query("SELECT id,title,discription,date FROM articles ORDER BY id DESC LIMIT $start, $num");
        $row = mysql_fetch_array($query);
        do {
дальше вывод статей

а после вывод самой навигации

______________


Благодарю за внимание!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.08.2013, 01:12
Ответы с готовыми решениями:

Доработать поиск php mysql
Ребята есть поиск, он ищет только когда во все поля вводишь информацию, как сделать так чтобы искало по отдельности, например только по...

Надо доработать навигацию jquery слайдера
Собираюсь поставить у себя на сайте слайдер контента. С яваскриптом не дружу. Нашел в интернете один, поему мнению, простенький jquery...

Нужно доработать PHP скрипт
Доброго времени суток, ситуация такая нужно доработать PHP скрипт, этот код считывает фото с папки на сервере(денвер) и отображает их на...

11
65 / 65 / 18
Регистрация: 10.03.2013
Сообщений: 188
18.08.2013, 11:44
Вот почитайте, я по этому примеру делал
Постраничная навигация
1
Студент
 Аватар для MickeyBlueEyes
121 / 132 / 39
Регистрация: 07.04.2011
Сообщений: 503
18.08.2013, 14:13
+ 2 не добавляйте, тогда кол-во страниц получается больше чем есть, если допустим в базе 100 постов,
то (100 - 1) / 10, выходит 9,9 + 1, и вышло 10,9 если intval то получается 10 страниц, и если добавлять всегда +2 +3 то следовательно и кол-во страниц будет 11, 12, если я правильно понял суть вопроса.
1
25 / 25 / 6
Регистрация: 04.07.2013
Сообщений: 260
18.08.2013, 14:19  [ТС]
вот вылезает ошибка: Parse error: syntax error, unexpected ';', expecting T_FUNCTION in Z:\ .. .php on line 86

PHP
1
2
3
4
5
    
    echo '</td>';
    }
}
?>
указаны последние строки, 83-86. И где же здесь ошибка?

Вот полный код:

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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
<?php
class nosmoky extends ACore_Admin {
    
    public function get_content() {
        
        echo '<td class="left">';
        echo '<p class="add_article">
                <a href="?option=add_article" class="add_for_site">Добавить новый материал</a>
              </p>
              <div class="a_div">
                <ul class="admin_list">';
        
        if($_SESSION['res']) {
            echo $_SESSION['res'];
            unset($_SESSION['res']);
        }
        
        $HOST = 'localhost';
        $USER = 'root';
        $PASSWORD = '';
        $DB = 'articles';
        
        $connection = mysql_connect($HOST,$USER,$PASSWORD);
        mysql_set_charset('utf8',$connection);
        if(!$connection || !mysql_select_db($DB,$connection)) {
            exit(mysql_error());
        }
 
        $num = 25; 
        // Извлекаем из URL текущую страницу 
        $page = $_GET['page']; 
        // Определяем общее число сообщений в базе данных 
        $result = mysql_query("SELECT COUNT(*) FROM post"); 
        $posts = mysql_fetch_row($result); 
        // Находим общее число страниц 
        $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 '<li>'; 
        for($i = 0; $i < $num; $i++) 
        { 
        
        echo '<a href="?option=edit_articles&id_text='.$postrow[$i]['id'].'" class="edit_article">'.$postrow[$i]['title'].'</a> &raquo;';
        echo '<a href="?option=delete_articles&del='.$postrow[$i]['id'].'" onclick="return confirm(\'Вы уверены, что хотите удалить?\')" class="delete_article">Удалить</a>';
        echo '</li>';
        
        // Проверяем нужны ли стрелки назад 
        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;
        
        echo '</td>
            </tr>
          </table>';
        
        
        
        
        echo '</td>';
    }
}
?>
0
Студент
 Аватар для MickeyBlueEyes
121 / 132 / 39
Регистрация: 07.04.2011
Сообщений: 503
18.08.2013, 14:21
Не хватает закрывающего тега для класса, добавить нужно ище } в конец.
1
25 / 25 / 6
Регистрация: 04.07.2013
Сообщений: 260
18.08.2013, 14:34  [ТС]
Цитата Сообщение от MickeyBlueEyes Посмотреть сообщение
Не хватает закрывающего тега для класса, добавить нужно ище } в конец.
Точно! Спасибо большое)

Добавлено через 10 минут
Цитата Сообщение от MickeyBlueEyes Посмотреть сообщение
+ 2 не добавляйте .. то (100 - 1) / 10, выходит 9,9 + 1, и вышло 10,9 если intval то получается 10 страниц ..
а как быть, если у меня часть скрипта не работает? показывает только, $num = 15; а дальше будто скрипт не работает. и создает одну страницу.

Если к примеру, я укажу вывод не 15, а 25, то выводит 21 статью (сейчас уже 21 статья в базе), но если укажу вывод не по 25, а по 1, то вместо 21 страницы вижу лишь 5. В чем может быть проблема?
0
Студент
 Аватар для MickeyBlueEyes
121 / 132 / 39
Регистрация: 07.04.2011
Сообщений: 503
18.08.2013, 14:48
Знакомый скрипт навигации, этот скрипт тоже мне попался когда нужно было навигацию делать, сек.
1
65 / 65 / 18
Регистрация: 10.03.2013
Сообщений: 188
18.08.2013, 14:53
Попробуйте заменит
PHP
1
2
3
4
5
6
7
8
9
while ( $postrow[] = mysql_fetch_array($result)) 
        
        echo '<li>'; 
        for($i = 0; $i < $num; $i++) 
        { 
        
        echo '<a href="?option=edit_articles&id_text='.$postrow[$i]['id'].'" class="edit_article">'.$postrow[$i]['title'].'</a> &raquo;';
        echo '<a href="?option=delete_articles&del='.$postrow[$i]['id'].'" onclick="return confirm(\'Вы уверены, что хотите удалить?\')" class="delete_article">Удалить</a>';
        echo '</li>';
на
PHP
1
2
3
4
5
6
7
8
        echo '<li>';
        while ($postrow = mysql_fetch_array($result)) 
        {
        
            echo '<a href="?option=edit_articles&id_text='.$postrow['id'].'" class="edit_article">'.$postrow['title'].'</a> &raquo;';
            echo '<a href="?option=delete_articles&del='.$postrow['id'].'" onclick="return confirm(\'Вы уверены, что хотите удалить?\')" class="delete_article">Удалить</a>';
        }
        echo '</li>';
1
Студент
 Аватар для MickeyBlueEyes
121 / 132 / 39
Регистрация: 07.04.2011
Сообщений: 503
18.08.2013, 15:24
Это:
PHP
1
$posts = mysql_fetch_row($result);
Нада поменять на это:
PHP
1
  list($posts) = mysql_fetch_row($result);
И сразу же добавить такую проверку:
PHP
1
if($num > $posts) $num = $posts;
И тута:
PHP
1
while($postrow[] = mysql_fetch_assoc($result))
Добавить точку с запятой в конце.
PHP
1
while($postrow[] = mysql_fetch_assoc($result));
И у меня так по одной выводило.

Добавлено через 16 минут
Так что получилось?
1
25 / 25 / 6
Регистрация: 04.07.2013
Сообщений: 260
18.08.2013, 15:29  [ТС]
Sima175, MickeyBlueEyes - спасибо, работает .. но вывод некрасивый! Кто может объяснить, с другим скриптом:

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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<?php
header("Content-Type:text/html;charset=UTF8");
?>
<?
        $HOST = 'localhost';
        $USER = 'root';
        $PASSWORD = '';
        $DB = 'example';
        
        $connection = mysql_connect($HOST,$USER,$PASSWORD);
        mysql_set_charset('utf8',$connection);
        if(!$connection || !mysql_select_db($DB,$connection)) {
            exit(mysql_error());
        }
 
        $num = 5;
        $page = $_GET['page'];
        $result00 = mysql_query("SELECT COUNT(*) FROM articles");
        $temp = mysql_fetch_array($result00);
        $posts = $temp[0];
        $total = (($posts - 1) / $num) + 1;
        $total =  intval($total);
        $page = intval($page);
        if(empty($page) or $page < 0) $page = 1;
        if($page > $total) $page = $total;
        $start = $page * $num - $num;       
                
        $result = mysql_query("SELECT * FROM articles ORDER BY id LIMIT $start, $num");
 
        $query = mysql_query("SELECT id,title,discription,date FROM articles ORDER BY id DESC LIMIT $start, $num");
        $row = mysql_fetch_array($query);
        do {
            
            echo '<li>';
            echo '<a href="?option=edit_articles&id_text='.$row['id'].'" class="edit_article">'.$row['title'].'</a> &raquo;';
            echo '<a href="?option=delete_articles&del='.$row['id'].'" onclick="return confirm(\'Вы уверены, что хотите удалить?\')" class="delete_article">Удалить</a>';
            echo '</li>';
        }
        while($row = mysql_fetch_array($query));
        
        echo '</ul></div>';
        
        echo '<table align="center">
                <tr>
                  <td>';
 
                // Проверяем нужны ли стрелки назад
                if ($page != 1) $pervpage = '<a href=navigation.php?page=1>Первая</a> | <a href=navigation.php?page='. ($page - 1) .'>Предыдущая</a> | ';
                // Проверяем нужны ли стрелки вперед
                if ($page != $total) $nextpage = ' | <a href=navigation.php?page='. ($page + 1) .'>Следующая</a> | <a href=navigation.php?page=' .$total. '>Последняя</a>';
 
                // Находим две ближайшие станицы с обоих краев, если они есть
                if($page - 5 > 0) $page5left = ' <a href=navigation.php?page='. ($page - 5) .'>'. ($page - 5) .'</a> | ';
                if($page - 4 > 0) $page4left = ' <a href=navigation.php?page='. ($page - 4) .'>'. ($page - 4) .'</a> | ';
                if($page - 3 > 0) $page3left = ' <a href=navigation.php?page='. ($page - 3) .'>'. ($page - 3) .'</a> | ';
                if($page - 2 > 0) $page2left = ' <a href=navigation.php?page='. ($page - 2) .'>'. ($page - 2) .'</a> | ';
                if($page - 1 > 0) $page1left = ' <a href=navigation.php?page='. ($page - 1) .'>'. ($page - 1) .'</a> | ';
 
                if($page + 5 <= $total) $page5right = ' | <a href=navigation.php?page='. ($page + 5) .'>'. ($page + 5) .'</a>';
                if($page + 4 <= $total) $page4right = ' | <a href=navigation.php?page='. ($page + 4) .'>'. ($page + 4) .'</a>';
                if($page + 3 <= $total) $page3right = ' | <a href=navigation.php?page='. ($page + 3) .'>'. ($page + 3) .'</a>';
                if($page + 2 <= $total) $page2right = ' | <a href=navigation.php?page='. ($page + 2) .'>'. ($page + 2) .'</a>';
                if($page + 1 <= $total) $page1right = ' | <a href=navigation.php?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>";
                }
        
        echo '</td>
            </tr>
          </table>';
?>
в новом файле, этот скрипт работает как надо, а вот если его вставить в класс, то он капризничает? В чем может быть проблема?
0
18.08.2013, 15:36
1
25 / 25 / 6
Регистрация: 04.07.2013
Сообщений: 260
18.08.2013, 19:47  [ТС]
Спасибо, всем за помощь, я остановился на варианте, https://www.cyberforum.ru/post1275487.html .. всем советую, именно этот вариант!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.08.2013, 19:47
Помогаю со студенческими работами здесь

Rss персер на php подскажите как доработать
Здравствуйте уважаемые пользователи! Долго искал хороший персер, и все таки надеюсь нашел, но он не все выводит, а знаний подправить его...

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

Сверстать навигацию
Добрый вечер - подскажите пож - хоче сверстать навигацию (где текст будет слева а картинка будет справа и все это в обшей фоновой картинке...

Прикрепить постраничную навигацию
Помогите пожалуйста в этом скрипте её прикрепить &lt;?php require 'scripts/connect.php'; $sqlAdd = (!empty($_GET)...

Запрос на постраничную навигацию
Привет всем. У меня на одной страничке,в самом начале, есть вот такой запрос UPDATE `order` SET `order_status` = '4' WHERE...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru