Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.03.2009, 23:20   #1
Linel
Форумчанин
 
Аватар для Linel
 
Регистрация: 21.02.2009
Сообщений: 372
По умолчанию Разбиение информации на страницы.

Если объём информации велик, то для отображения пользователю её обычно разбивают на части (в моём случае-страницы). Например, существует база данных, в которой хранятся сообщения пользователей. Как осуществить вывод этих сообщений на нескольких страницах (чтобы на каждой странице было n-ое количество сообщений)?
No name. Just Linel.
Linel вне форума Ответить с цитированием
Старый 31.03.2009, 00:03   #2
Deight
Бредовый
Форумчанин
 
Аватар для Deight
 
Регистрация: 15.11.2008
Сообщений: 285
По умолчанию

Посмотреть phpmyadmin, я почти весь sql из него узнал.
Код:
Select * from ~table~ limit 0 , 10
будет считывать первые 10 записей, принцеп понятен? Можно в get передовать номер страницы и умножать на n(в данном случае 10), только обработайте если она задана неверно.
Чем точнее и проще задан вопрос, тем проще на него получить точный ответ.
Deight вне форума Ответить с цитированием
Старый 31.03.2009, 01:36   #3
Jensi
beneto.ru
Форумчанин
 
Регистрация: 09.03.2009
Сообщений: 174
Радость

Это называется постраничной навигацией, вот, я себе делал раньше:
PHP код:
<?
$per_page 
20// Кол-во записей на страницу

// Фрагмент запроса, который отвечает за то, какие записи мы будем тащить из базы
$from_where="FROM `fotoshop_lessons`";

// и получим общее количество записей
$res=mysql_query("SELECT count(id) ".$from_where);
$row=mysql_fetch_row($res);
$total_rows=$row[0];

// узнаем общее количество страниц
$num_pages=ceil($total_rows/$per_page);

// Защищаемся от поддельных url
if ($_GET['page'] > $num_pages$_GET['page'] = 1;
if (!isset(
$_GET['page']) or empty($_GET['page']) or $_GET['page'] < 0$_GET['page'] = 1;

// Получаем номер страницы и значение для лимита
if (isset($_GET['page'])) $CUR_PAGE=($_GET['page']); else $CUR_PAGE=1;
$start=abs(($CUR_PAGE-1)*$per_page);

// Выполняем запрос и получаем данные для вывода
// Я в данном случае сортирую по дате, вы можете сортировать как вам нужно.
$query="SELECT * $from_where ORDER BY date DESC LIMIT $start,$per_page";
$res=mysql_query($query);
while (
$row=mysql_fetch_array($res)) $DATA[++$start]=$row;

// Определяем адрес страницы без переменной page
$uri=strtok($_SERVER['REQUEST_URI'],"?")."?";
if (
count($_GET)) {
  foreach (
$_GET as $k => $v) {
    if (
$k != "page"$uri.=urlencode($k)."=".urlencode($v)."&";
  }
}
  
// Заполняем массив со ссылками
for($i=1;$i<=$num_pages;$i++) $PAGES[$i]=$uri.'page='.$i;

?>
<b><? $total_rows  ?></b><br><br>
<? foreach ($DATA as $i => $row): ?>
<?
printf
"<table id='lesson_table' valign='top' align='center'>
         <tr>
         <td id='lesson_title'>
         <p id='lessons_name'><a href='show_lessons_fotoshop.php?id=%s'>%s</a></p> 
         <p id='date_lessons' >Дата добавления урока:<em style='color:#F76345;'> %s</em></p>
         <p id='author_lessons' >Автор: %s</p></td></tr> 
         <tr>
         <td><p id='description_lessons'>Описание: <br>%s</p></td>
         </tr> "
,$row['id'],  $row['title'], $row['date'], $row['author'], $row['description'] );
    
 
?>   
<? endforeach ?>
<br>
Страницы:

<!-- Проверяем нужны ли стрелки назад и в начало  -->

<?php
$perv 
$_GET['page'];
if (
$perv != 1$pervpage '<a href= lessonsFoto.php?page=1>В начало</a>  
                               <a href= lessonsFoto.php?page='
. ($perv 1) .'><</a> '; echo $pervpage;
?>

<!-- Выводим циферки -->

<? foreach ($PAGES as $i => $link): ?>
<? 
if ($i == $CUR_PAGE): ?>
<b><?=$i?></b>
<? else: ?>
<a href="<?=$link?>"><?=$i?></a>
<? endif ?>
<? 
endforeach ?>

<!-- Проверяем нужны ли стрелки вперед и в конец  -->

<?php
if ($perv != $num_pages$nextpage ' <a href= lessonsFoto.php?page='.(++$perv).'>></a>  
                                   <a href= lessonsFoto.php?page='
.$num_pages.'>В конец</a>'; echo $nextpage;
?>
p.s.: код не переделывал,а прям с сайта считай снял,там изменишь всё на свои данные
Jensi вне форума Ответить с цитированием
Старый 31.03.2009, 08:35   #4
Linel
Форумчанин
 
Аватар для Linel
 
Регистрация: 21.02.2009
Сообщений: 372
По умолчанию

Оу, спасибо большое. Попробую разобраться )))
No name. Just Linel.
Linel вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разбиение записей Лубышев Microsoft Office Access 0 17.03.2009 08:27
Динамическое изменение URL страницы в JavaScript без перезагрузки страницы ilusha JavaScript, Ajax 7 25.02.2009 09:59
ввод информации с клавиутуры в двумерный масив, запись информации с масива в файл x_omega_x Помощь студентам 1 29.12.2008 02:30
Разбиение на части MAcK Общие вопросы .NET 4 18.09.2008 13:56
Как сделать разрыв страницы печати по условию и узнать номер страницы Leanna Microsoft Office Excel 2 21.01.2008 06:59