ФорумФорум  КалендарьКалендарь  ЧаВоЧаВо  ПоискПоиск  ПользователиПользователи  ГруппыГруппы  РегистрацияРегистрация  Вход  
Поиск
 
 

Результаты :
 
Rechercher Расширенный поиск
Последние темы
» Подтверждение о прочтении
автор worker8281 Сб Дек 27, 2014 1:05 pm

» Проблема с сессией
автор Murphy Ср Дек 03, 2014 5:20 pm

» Нужнга настройка SugarCRM
автор iliandr777 Пн Ноя 10, 2014 2:28 pm

» Отображение записей (адресатов) в списках адресатов
автор FatherMother Пн Авг 25, 2014 12:21 pm

» Нужен совет. Модуль с множеством одинаковых субпанелей.
автор Павел Пн Июл 28, 2014 12:55 pm

» Нужна помощь с опенкартом
автор manux86 Вс Фев 02, 2014 10:45 am

» вопрос работы насчет СУГАР на сервере
автор Meiir2 Пт Янв 31, 2014 8:46 am

» Интеграция с Google календарем от компании "Куб Три"
автор Dmitry.bereza Ср Авг 14, 2013 10:29 am

» настройка воронки продаж
автор EkaterinaGolovina Чт Июн 13, 2013 12:14 pm

Август 2018
ПнВтСрЧтПтСбВс
  12345
6789101112
13141516171819
20212223242526
2728293031  
КалендарьКалендарь
Баннеры
Яндекс цитирования статистика
Поддержка проекта
41001634550309

Поделиться | 
 

 Постраничная навигация на PHP

Перейти вниз 
АвторСообщение
Admin
Admin


Сообщения : 74
Очки : 71
Дата регистрации : 2010-08-23

СообщениеТема: Постраничная навигация на PHP   Пт Сен 10, 2010 3:18 am

Пожалуй одна из самых распростанённых задач для веб-программистов. Большинство новичков сталкиваются с ней, я не был исключением. Попытаемся же разобраться с логикой скрипта и реализовать его. Приступим?

Первое, что нам нужно для этого иметь – это базу данных с несколькими десятками строк, например статей или комментариев к ним (что угодно). Мы будем рассматривать базу данных MySQL, она является самой популярной на данный момент. Естественно используемый язык – это PHP.

Есть? Отлично! Продолжаем…

1. Создаём для примера файл primer.php;
2. Создаём Базу данных primer (можете не создавать, если у вас уже есть подходящая);
3. Создаём таблицу primer вот такой структуры (опять же, если нет другой);
Код:

CREATE table primer (
id int auto_increment primary key key,
name varchar(100) NOT NULL,
text longtext NOT NULL
);

4. Набиваем её информацией. Я сделаю 20 записей, мне не день Wink
5. Набираемся терпения – сейчас будем кодить.

Сам код довольно небольшой и несложный, поэтому вылажу его сразу весь, пометки Вам помогут разобраться без проблем.

Запихиваем нижележаций код в primer.php и пытаемся понять как же он работает:
Код:

<?

 $server = 'localhost'; // ИМЯ СЕРВЕРА
 $user = 'root'; // ПОЛЬЗОВАТЕЛЬ - НЕ ИСПОЛЬЗУЙТЕ ROOT ДЛЯ ВАШЕЙ ЖЕ БЕЗОПАСНОСТИ
 $pass = ''; // ПАРОЛЬ ПОЛЬЗОВАТЕЛЯ

 $db = 'primer'; // БАЗА ДАННЫХ
 $table = 'primer'; // НАЗВАНИЕ ТАБЛИЦЫ

 $chislo = 5; // ЧИСЛО СООБЩЕНИЙ НА СТРАНИЦЕ

 // ДЛЯ УДОБСТВА ОБОЗНАЧИМ ПЕРЕМЕННУЮ С ТЕКСТОМ ОШИБКИ
 $text_error = '<br />Ошибочка вышла!';

 // СОЕДЕНИМСЯ С MySQL
 $connect = mysql_connect ($server, $user, $pass);
 if (!$connect) {
 echo $text_error;
 exit;
 }

 // СОЕДЕНИЯЕМСЯ С БАЗОЙ ДАННЫХ
 $select = mysql_select_db($db);
 if (!$select) {
 echo $text_error;
 exit;
 }

 // СОЗДАЁМ ЗАПРОС
 $result = mysql_query("SELECT * from $table ORDER by id desc");
 // СЧИТАЕМ КОЛЛИЧЕСТВО ЗАПИСЕЙ В ТАБЛИЦЕ - У МЕНЯ ИХ 20
 $num_rows = mysql_num_rows($result);

 // А ТЕПЕРЬ СЧИТАЕМ НА СКОЛЬКО СТРАНИЦ НАМ РАЗБИТЬ ЗАПИСИ И ВЫДЕЛЯЕМ ЦЕЛОЕ ЧИСЛО
 $num_rows = round($num_rows/$chislo); // 20 ДЕЛИМ НА 5. СКОЛЬКО? :)


 // ЗДЕСЬ МЫ ПРОВЕРЯЕМ НА КАКОЙ СТРАНИЦЕ СЕЙЧАС ПОЛЬЗОВАТЕЛЬ
 if (isset($_GET['str'])) {
 $nav = $_GET['str'];
 }
 else {
 $nav = 0;
 }
 $nav = intval($nav); // ДЛЯ ЗАЩИТЫ ОТ НЕХОРОШИХ ДЯДЕНЕК МЫ ВЫДЕЛИМ ЦЕЛУЮ ЧАСТЬ $GET['str']
 echo 'Навигация: ';

 // А ТЕПЕРЬ ВЫВОДИМ НОМЕРА СТРАНЦ
 for ($i=1; $i<$num_rows; $i++) {
 if ($i != $nav) {
 echo '<a href="'.$PHP_SELF.'?str='.$i.'">'.$i.'</a> ';
 }
 else {
 // АКТИВНУЮ СТРАНИЦУ ДЕЛАЕМ НЕ ГИПЕРССЫЛКОЙ
 echo '<span>'.$i.'</span> ';
 }
 }

 echo '<hr />'; // ОТДЕЛИМ НАВИГАЦЮ ОТ КОНТЕНТА ДЛЯ НАГЛЯДНОСТИ

 // НАЧИНАЕМ ВЫВОДИТЬ САМУ ИНФОРМАЦИЮ ПОСТРАНИЧНО :)
 if (!isset($_GET['str'])) {
 $str = 0;
 }
 else {
 $str = $_GET['str']*$chislo - $chislo;
 }
 $nomer = $str + 5;
 // ФОРМИРУЕМ ЗАПРОС НУЖНОЙ НАМ ЧАСТИ ИНФОРМАЦИИ
 $result = mysql_query("SELECT * from $table ORDER by id asc limit $str, $nomer");
 // ИНАЧЕ ВЫВОДИМ ОШИБКУ
 if (!$result) {
 echo $text_error;
 exit;
 }

 echo '<div style="width: 40%;">';
 while ($row = mysql_fetch_array($result)) {
 echo '<p>'.$row['id'].' - <strong>'.$row['name'].'</strong>
 <br />
 '.substr($row['text'],0,100).'.. <a href="text.php?nomer='.$row['id'].'">>></a></p>';
 }
 echo '</div>';

 mysql_close($connect);

?>
Вот и всё, скрипт постраничного вывода у нас готов!
Вернуться к началу Перейти вниз
Посмотреть профиль http://easy-sugarcrm.forum2x2.ru
 
Постраничная навигация на PHP
Вернуться к началу 
Страница 1 из 1

Права доступа к этому форуму:Вы не можете отвечать на сообщения
 :: PHP - статьи, советы-
Перейти: