Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Постраничная навигация
aleksey12  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 4
Пользователь №: 42380
На форуме: 10 месяцев, 17 дней
Карма:




Господа, я новичок в 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));
?>
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Zzepish  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Аццкая хрень
******

Профиль
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 5475
Пользователь №: 32538
На форуме: 4 года, 6 месяцев, 6 дней
Карма: 49




do-while сразу в топку!
Куча if-else)

И mysql устарел. Юзай mysqli


--------------------
Правда тоже ложь, но с иным углом.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Медведь  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 2482
Пользователь №: 37963
На форуме: 3 года, 3 месяца, 22 дня
Карма: 27




По мне логика такая:

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


--------------------

Заходил 29.09.2016
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
kaww  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1755
Пользователь №: 20757
На форуме: 6 лет, 10 месяцев
Карма: 184




Цитата (aleksey12 @ 18.02.2016 - 10:59)
Перерыл множество вариантов

А этот пробовал http://goo.gl/fFFtXb
PMПисьмо на e-mail пользователю
    -1   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Astin  
[x]    Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 592
Пользователь №: 42519
На форуме: 9 месяцев, 20 дней
Карма: 7




Цитата (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 , тебе бы посидеть и разобрать код, если не
понимаешь можно иногда в мануалы посмотреть. Я тоже не совсем в ПХП шарю, но что
могу сделать и разобрать сам делаю, но пока конечно без форума порой сложновато.

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

Это сообщение отредактировал Astin - 25.02.2016 - 02:43
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса