[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Постраничная навигация
aleksey12
Господа, я новичок в php. Перерыл множество вариантов, но так и не удалось сделать постраничную навигацию. Все, что получилось это вывести записи из БД. Хотелось бы, чтобы отображалось следующим образом < 1 2 3 4 >, < 1 ... 3 4 5 ... 10 >
Кому не сложно подскажите пожалуйста, а то всю голову уже сломал.
<? 
$db = mysql_connect ('localhost','user','12345');
mysql_select_db('news',$db);
mysql_query("set names utf8");
$result = mysql_query('SELECT id,data,title,anons FROM `news` ORDER BY `data` DESC',$db);
$myrow = mysql_fetch_array($result);
do {
printf ("<div class='page_news_date'>%s</div>
<div class='page_name_news'><a class='page_name_news_ssilka' href='read_news.php?id=%s'>%s</a></div>
<div class='page_news_anons'>%s</div>"
, $myrow['data'],$myrow['id'],$myrow['title'],$myrow['anons'] );
}
while ($myrow = mysql_fetch_array($result));
?>
Zzepish
do-while сразу в топку!
Куча if-else)

И mysql устарел. Юзай mysqli
Миша
По мне логика такая:

Получаем количество записей.
По алгоритму записываем какие страницы нужны.
Выводим записи текущей страницы.

_____________
Принимаю заказы, писать в ЛС
kaww
Цитата (aleksey12 @ 18.02.2016 - 10:59)
Перерыл множество вариантов

А этот пробовал http://goo.gl/fFFtXb
Astin
Цитата (aleksey12 @ 18.02.2016 - 14:59)
Господа, я новичок в php. Перерыл множество вариантов, но так и не удалось сделать постраничную навигацию. Все, что получилось это вывести записи из БД. Хотелось бы, чтобы отображалось следующим образом  < 1 2 3 4 >, < 1 ... 3 4 5 ... 10 >
Кому не сложно подскажите пожалуйста, а то всю голову уже сломал.
<pre class="sh_sourceCode" rel="php"><span class="sh_keyword"><?</span>
<span class="sh_variable">$db</span> <span class="sh_symbol">=</span> <span class="sh_function">mysql_connect</span> <span class="sh_symbol">(</span><span class="sh_string">'localhost'</span><span class="sh_symbol">,</span><span class="sh_string">'user'</span><span class="sh_symbol">,</span><span class="sh_string">'12345'</span><span class="sh_symbol">);</span>
<span class="sh_function">mysql_select_db</span><span class="sh_symbol">(</span><span class="sh_string">'news'</span><span class="sh_symbol">,</span><span class="sh_variable">$db</span><span class="sh_symbol">);</span>
<span class="sh_function">mysql_query</span><span class="sh_symbol">(</span><span class="sh_string">"set names utf8"</span><span class="sh_symbol">);</span>
<span class="sh_variable">$result</span> <span class="sh_symbol">=</span> <span class="sh_function">mysql_query</span><span class="sh_symbol">(</span><span class="sh_string">'SELECT id,data,title,anons FROM `news` ORDER BY `data` DESC'</span><span class="sh_symbol">,</span><span class="sh_variable">$db</span><span class="sh_symbol">);</span>
<span class="sh_variable">$myrow</span> <span class="sh_symbol">=</span> <span class="sh_function">mysql_fetch_array</span><span class="sh_symbol">(</span><span class="sh_variable">$result</span><span class="sh_symbol">);</span>
<span class="sh_control">do</span> <span class="sh_cbracket">{</span>
<span class="sh_function">printf</span> <span class="sh_symbol">(</span><span class="sh_string">"<div class='page_news_date'>%s</div>
<div class='page_name_news'><a class='page_name_news_ssilka' href='read_news.php?id=%s'>%s</a></div>
<div class='page_news_anons'>%s</div>"</span><span class="sh_symbol">,</span> <span class="sh_variable">$myrow</span><span class="sh_symbol">[</span><span class="sh_string">'data'</span><span class="sh_symbol">],</span><span class="sh_variable">$myrow</span><span class="sh_symbol">[</span><span class="sh_string">'id'</span><span class="sh_symbol">],</span><span class="sh_variable">$myrow</span><span class="sh_symbol">[</span><span class="sh_string">'title'</span><span class="sh_symbol">],</span><span class="sh_variable">$myrow</span><span class="sh_symbol">[</span><span class="sh_string">'anons'</span><span class="sh_symbol">]  );</span>
<span class="sh_cbracket">}</span>
<span class="sh_control">while</span> <span class="sh_symbol">(</span><span class="sh_variable">$myrow</span> <span class="sh_symbol">=</span> <span class="sh_function">mysql_fetch_array</span><span class="sh_symbol">(</span><span class="sh_variable">$result</span><span class="sh_symbol">));</span>
<span class="sh_keyword">?></span></pre>

aleksey12 Вот тебе готовый пример, хочешь можешь что либо добавить, а можешь и не добавлять.
<?php 
// Устанавливаем соединение с сервером
$db = mysql_connect ('localhost','user','12345');
mysql_select_db('news',$db);
mysql_query("set names utf8");

// Переменная хранит число сообщений выводимых на станице
//В данном случае максимум 20 сообщений

$num = 20;
// Извлекаем из URL текущую страницу
$pags = $_GET['pags'];
// Получаем общее число сообщений в базе данных
$query = "SELECT COUNT(*) FROM `news`";
$sql = mysql_query($query) or die("Ошибка данных!");
$posts = mysql_result($sql, 0);

// Находим общее число страниц
$total = (($posts - 1) / $num) + 1;
// Присваиваем целое число, чтоб не получилась ссылка
// типа .../index.php?pags=3.44444

$total = intval($total);
//Здесь определяем начало сообщений для нашей страницы
$pags = intval($pags);
// Если переменная $page меньше единицы или отрицательно переходим
// на первую страницу,а если слишком большое, то переходим на последнюю

if(empty($pags) or $pags < 0) $pags = 1;
if($pags > $total) $pags = $total;

// Здесь вычисляем с какого номера будем выводить сообщения
$start = $pags * $num - $num;

// Теперь получаем данные нужные нам для вывода
$query = "SELECT *, `id`, `data`, `title`, `anons` FROM `news` ORDER BY `data` DESC LIMIT $start, $num";
//Если неправильный запрос то ошибка
$sql = mysql_query($query) or die("Ошибка данных!");

////// Ниже выводим навигацию//////

// Здесь проверяем нужны ли стрелки назад
if ($pags != 1) $pervpags = '<a class="nav" href=index.php?&pags=1>Первая</a><a class="nav" href=index.php?&pags='. ($pags - 1) .'>Предыдущая</a> ';

// А здесь проверяем нужны ли стрелки вперед
if ($pags != $total) $nextpags = ' <a class="nav" href=index.php?&pags='. ($pags + 1) .'>Следующая</a><a class="nav" href=index.php?&pags=' .$total. '>Последняя</a>';

// Находим две ближайшие станицы с обоих краев, если они есть
if($pags - 4 > 0) $pags4left = ' <a class="nav2" href= ./index.php?pags='. ($pags - 4) .'>'. ($pags - 4) .'</a> ';
if($pags - 3 > 0) $pags3left = ' <a class="nav2" href= ./index.php?pags='. ($pags - 3) .'>'. ($pags - 3) .'</a> ';
if($pags - 2 > 0) $pags2left = ' <a class="nav2" href= ./index.php?pags='. ($pags - 2) .'>'. ($pags - 2) .'</a> ';
if($pags - 1 > 0) $pags1left = '<a class="nav2" href= ./index.php?pags='. ($pags - 1) .'>'. ($pags - 1) .'</a> ';

if($pags + 4 <= $total) $pags4right = ' <a class="nav2" href= ./index.php?pags='. ($pags + 4) .'>'. ($pags + 4) .'</a>';
if($pags + 3 <= $total) $pags3right = ' <a class="nav2" href= ./index.php?pags='. ($pags + 3) .'>'. ($pags + 3) .'</a>';
if($pags + 2 <= $total) $pags2right = ' <a class="nav2" href= ./index.php?pags='. ($pags + 2) .'>'. ($pags + 2) .'</a>';
if($pags + 1 <= $total) $pags1right = ' <a class="nav2" href= ./index.php?pags='. ($pags + 1) .'>'. ($pags + 1) .'</a>';

// Выводим наше меню
if ($total > 1) {
echo $pervpags.$pags4left.$pags3left.$pags2left.$pags1left.'<span class="link">'.$pags.'</span>'.$pags1right.$pags2right.$pags3right.$pags4right.$nextpags;
}
?>


Ничего сложного aleksey12 , теперь тебе осталось изменить ссылку index.php на свою
или оставить так.

Вот тебе еще стили для этой навигации
a {
font-size:18px;
font-weight:bold;
color:#000066;
text-decoration:none;
}
a:hover {
color:#cc0000;
}
.nav {
padding:0 6px 0 6px;
}
.nav2 {
background-color:#e1e1e1;
border-radius:5px;
-moz-border-radius:5px;
-o-border-radius:5px;
-webkit-border-radius:5px;
padding:2px 6px 2px 6px;
}
.nav2:hover {
background-color:#f4f4f4;
padding:2px 6px 2px 6px;
}
.link {
font-size:18px;
font-weight:bold;
color:#cc0000;
}


Ну вот вроде бы и все B) aleksey12 , тебе бы посидеть и разобрать код, если не
понимаешь можно иногда в мануалы посмотреть. Я тоже не совсем в ПХП шарю, но что
могу сделать и разобрать сам делаю, но пока конечно без форума порой сложновато.

Короче, Учиться, Учиться и еще раз учиться! :)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.