Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Постраничная навигация, страничка раз, страничка два...продано 
:(
    Опции темы
jeans1986
Дата 25.9.2007, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 165
Регистрация: 31.3.2007

Репутация: нет
Всего: нет



Кака сделать или где скачать постарничную навигацию? ВОт пример постраничноё навигации котрая мне нужна:
Код

1 2 3 4 5 6 7 8 9 10 (...)
(...) 11 12 13 14 15 16 17 18 19 20 (...)
* (...) - следующие или предыдущие 10 страниц


Заранее благодарю.
PM MAIL   Вверх
PARROT
Дата 25.9.2007, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Поиском не пробовали?


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
awers
  Дата 25.9.2007, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1465
Регистрация: 22.3.2006
Где: Россия, Таганрог

Репутация: 21
Всего: 31



Шутка:
Код

<?php
echo "<a href='?page=1'>1</a> <a href='?page=2'>2</a> <a href='?page=3'>3</a> <a href='?page=4'>4</a> <a href='?page=next10'>next</a>";
?>

хи хи хи ... 

Ту Автор: научись описывать задачу и юзать поиск.

Это сообщение отредактировал(а) awers - 25.9.2007, 15:32
PM MAIL WWW ICQ Skype   Вверх
sw04
Дата 26.9.2007, 00:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 372
Регистрация: 22.1.2007
Где: Ufa

Репутация: нет
Всего: 18



http://forum.vingrad.ru/forum/topic-147552.html
ps стоит учесть, что работает только с пхп больше или равными 5 версии.


--------------------
<удалено администрацией>
PM   Вверх
MoLeX
Дата 26.9.2007, 06:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



jeans1986, необходимо дописать проверку и доработать под свои условия:

Код

<?php
// кол-во новостей, статей и т.д. на странице
$perpage = "10";
function link_bar($page, $pages_count)
{
    for ($j = 1; $j <= $pages_count; $j++) 
    {
        if ($j == $page) 
        {
            echo ' <b>'.$j.'</b> ';
        } 
        else 
        {
            echo "<b><a href=index.php?page=".$j." title='Перейти на следующую страницу'>".$j."</a></b>";
        }
        
        if ($j != $pages_count) echo '&nbsp;&nbsp;|&nbsp;&nbsp;';
    }
    return true;
}

if (empty($_GET['page']) || ($_GET['page'] <= 0)) 
{
    $page = 1;
} 
else 
{
    $page = (int) $_GET['page'];
}
$count = mysql_numrows(mysql_query("SELECT * FROM Name_BD")) or die("error 1");
$pages_count = ceil($count / $perpage);
if ($page > $pages_count) $page = $pages_count;
$start_pos = ($page - 1) * $perpage;
echo "<center><b>";
link_bar($page, $pages_count);
echo "</b></center>";


$sql_inquiry = mysql_query("SELECT * FROM Name_BD ORDER BY `id` DESC LIMIT $start_pos, $perpage") or die("error 2");
while ($answer = mysql_fetch_array($sql_inquiry)) 
{    
    // а тут сам вывод
    echo "&nbsp;".$answer['id']."&nbsp;\n";
}
?>



Это сообщение отредактировал(а) MoLeX - 26.9.2007, 06:24


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
wolfmessing
Дата 16.10.2007, 09:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 24.4.2007

Репутация: нет
Всего: 1



Круто, я раз 12 наверно переписывал свой скрипт, всё ни как не мог принцып понять (то это не нравилось, то другое), а тут всё просто и понятно, правда кроме одного:

Код

$page = (int) $_GET['page'];

(int) -- эт чо? функция или ...  smile  smile 
PM MAIL WWW ICQ   Вверх
MoLeX
Дата 16.10.2007, 09:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



Код

(int) == (integer)



--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
wolfmessing
Дата 16.10.2007, 10:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 24.4.2007

Репутация: нет
Всего: 1



Мм.. Ну что integer это я понял просто не разу ещё не видел что бы так её писали! smile 

Ок спс, буду знать smile 
PM MAIL WWW ICQ   Вверх
flashaa
Дата 16.10.2007, 10:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 796
Регистрация: 7.3.2006

Репутация: 19
Всего: 25



Код

$count = mysql_numrows(mysql_query("SELECT * FROM Name_BD")) or die("error 1");


Cелектировать ВСЕ данные, чтобы посчитать их кол-во. Однако, буржуйский запрос smile
Думаю, следует заменить на это:

Код

$count = mysql_result(mysql_query("SELECT COUNT(*) AS cnt FROM Name_BD"), 0, 'cnt' ) or die();

PM MAIL   Вверх
MoLeX
  Дата 16.10.2007, 10:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



Уважаемый, чем тебе этот запрос не понравился? более подробно не можешь?


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
mishaSL
Дата 16.10.2007, 10:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1046
Регистрация: 10.1.2007
Где: Санкт-Петербург

Репутация: 19
Всего: 54



Цитата(MoLeX @  16.10.2007,  10:26 Найти цитируемый пост)
Уважаемый, чем тебе этот запрос не понравился? более подробно не можешь? 


MoLeX, если вам необходимо узнать только кол-во записей в таблице, то лучше(в плане производительности) будет использовать "SELECT COUNT(*) FROM `table`"


--------------------
Лучший способ научиться программированию - это посмотреть как это делают другие...
PM MAIL   Вверх
MoLeX
  Дата 16.10.2007, 10:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



Н-да, вы правы. Просто писалось это когда я тока с БД начал знакомиться  и большее не использовался этот код так для теста и был создан


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
sw04
Дата 16.10.2007, 11:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 372
Регистрация: 22.1.2007
Где: Ufa

Репутация: нет
Всего: 18



возьмем цитату из подписи mishaSL:

Цитата(mishaSL @  16.10.2007,  13:40 Найти цитируемый пост)

Лучший способ научиться программированию - это посмотреть как это делают другие...

не лучше посмотреть пример, находящийся у нас в статьях?


--------------------
<удалено администрацией>
PM   Вверх
wolfmessing
Дата 16.10.2007, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 24.4.2007

Репутация: нет
Всего: 1



 smile  странно но у мя БД отказываеца воспринимать такой запрос

Код

"SELECT COUNT(*) FROM `table`"

ей проще када "SELECT  * FROM `table`"

 smile  хз мож из за класса 
Код

      function query($query){
            $query_res = @mysql_query($query);
            return $query_res;
      }
      
      function num_rows($query_res){
            $result = @mysql_num_rows($query_res);
            return $result;      
      }


но тут ни что такого замудрёного нету smile 

Это сообщение отредактировал(а) wolfmessing - 16.10.2007, 11:59
PM MAIL WWW ICQ   Вверх
wolfmessing
Дата 16.10.2007, 13:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 24.4.2007

Репутация: нет
Всего: 1



Чутка модернизировал  smile  smile 

Код

<?php
// кол-во новостей, статей и т.д. на странице
$perpage = "10";
function link_bar($page, $pages_count)
{
    for ($j = 1; $j <= $pages_count; $j++) 
    {
        if ($j == $page) 
        {
            echo ' <b><font color="green">'.$j.'</font> </b> ';
        } 
        else 
        {
            echo "<b><a href=index.php?page=".$j." title='Перейти на следующую страницу'>".$j."</a></b>";
        }
        
        if ($j != $pages_count) echo '&nbsp;&nbsp;|&nbsp;&nbsp;';
    }
    return true;
}

if (empty($_GET['page']) || ($_GET['page'] <= 0)) 
{
    $page = 1;
} 
else 
{
    $page = (int) $_GET['page'];
}
$count = mysql_numrows(mysql_query("SELECT * FROM Name_BD")) or die("error 1");
$pages_count = ceil($count / $perpage);
if ($page > $pages_count) $page = $pages_count;
$start_pos = ($page - 1) * $perpage;

/******************************************************************/
echo "<center><b>";
 
      if(($page != 1) && ($page > 0) ){
            $back = $page - 1;
            echo '<b><a href="'.$_SERVER['PHP_SELF'].'?page='.$back.'">íàçàä &nbsp;</a></b>';}
            link_bar($page, $pages_count);
            
      if(($page + 1)<= $pages_count){
            $foward = $page + 1;
            echo '<b><a href="'.$_SERVER['PHP_SELF'].'?page='.$foward.'">&nbsp; ôïåð¸ä</a></b>';}
            
echo "</b></center>";
/******************************************************************/

$sql_inquiry = mysql_query("SELECT * FROM Name_BD ORDER BY `id` DESC LIMIT $start_pos, $perpage") or die("error 2");
while ($answer = mysql_fetch_array($sql_inquiry)) 
{    
    // а тут сам вывод
    echo "&nbsp;".$answer['id']."&nbsp;\n";
}
?>

теперь получаеца так    
Цитата
назад  1  |   2   |  3  |  4  фперёд


Что могу сказать  smile  Респект MoLeX  smile 
PM MAIL WWW ICQ   Вверх
MoLeX
  Дата 16.10.2007, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



wolfmessing, не зачто. для этого форумы и существуют чтобы люди помогали друг другу  smile 


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
wolfmessing
Дата 18.10.2007, 08:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 24.4.2007

Репутация: нет
Всего: 1



Есть ещё 1 вариант, но он на рнр.су и т.д. на многих форумах был...

Правда код не много громоский, но то что получилось мне в принципе нравица


предыдущие 5  ... <<назад   |   4   |   5   | [6] |   7   |  8   |   вперёд >> ... следующие 5 

вот собсна код заместо функции
Код

 echo "<center>";
/*****************************************************/
//Назад(левая часть)
$lim = 5;
$back_lim = $page - $lim; 

      if($back_lim >= 1){   
            echo '<a href="'.$_SERVER['PHP_SELF'].'?page='.$back_lim.'">
            <font size="2" color="red">предыдущие '.$lim.' &nbsp;</font></a>';
            echo '...';      
      }

      $back = $page - 1;
      if($back >= 1){   
            echo '<a href="'.$_SERVER['PHP_SELF'].'?page='.$back.'">
            <font size="2" color="blue">
            <<назад &nbsp;&nbsp;|&nbsp;&nbsp;
            </font></a>';
      }

      $back1 = $page - 1;
      $back2 = $page - 2;
      
      if($back2 >= 1){
      echo '<a href="'.$_SERVER['PHP_SELF'].'?page='.$back2.'">
            <font size="2" color="grey">
            '.$back2.' &nbsp;&nbsp;|&nbsp;&nbsp;
            </font></a>';
      }
      if($back1 >= 1){
            echo '<a href="'.$_SERVER['PHP_SELF'].'?page='.$back1.'">
            <font size="3" color="grey">
            '.$back1.' &nbsp;&nbsp;|&nbsp;&nbsp;
            </font></a>';
      }
/*****************************************************/
//Середина [X]
      
if ($page){
      echo '<font size="4" color="green">['.$page.']</font>';
}

//if (!$pages_count) echo '&nbsp;&nbsp;|&nbsp;&nbsp;';

/*****************************************************/      
      //Вперёд (правая часть)
      $foward1 = $page + 1;
      $foward2 = $page + 2;

      if($foward1 <= $pages_count){
            echo '<a href="'.$_SERVER['PHP_SELF'].'?page='.$foward1.'">
            <font size="3" color="grey">
             &nbsp;&nbsp;|&nbsp;&nbsp; '.$foward1.'
            </font></a>';
      }
      if($foward2 <= $pages_count){
      echo '<a href="'.$_SERVER['PHP_SELF'].'?page='.$foward2.'">
            <font size="2" color="grey">
             &nbsp;&nbsp;|&nbsp;&nbsp;'.$foward2.'
            </font></a>';
      }
      /************************************************/
      $foward = $page + 1;
      if($foward <= $pages_count){    
            echo '<a href="'.$_SERVER['PHP_SELF'].'?page='.$foward.'">
            <font size="2" color="blue">
            &nbsp;&nbsp;|&nbsp;&nbsp; вперёд>>
            </font></a>';
      }
      /****************************************************/
$foward_lim = $page + $lim;            
if($foward_lim <= $pages_count){   
            echo '...';
            echo '<a href="'.$_SERVER['PHP_SELF'].'?page='.$foward_lim.'">
            <font size="2" color="red">следующие '.$lim.' &nbsp;</font></a>';      
      }
/*****************************************************/            
 echo "</center>";
 

 smile  только больно не бейте  smile 

PM MAIL WWW ICQ   Вверх
MoLeX
Дата 18.10.2007, 09:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



Будим, но тока за то что старую тему ворошишь =). А так просто более удобней.  smile 


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
Unnamed67
Дата 31.5.2009, 20:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 18.5.2009

Репутация: нет
Всего: нет



MoLeX спасибо огромное за скрипт!!! Помогло оченЬ!!! Работает все отличнО! smile 
wolfmessing скажи пожалуйста как потом после того как вывел навигацию сформировать запрос на вывод данных, я имею ввиду какие переменные вписывать в Limit. И если несложно объясните мне как к базе эту постраницную навигацию подключить



Это сообщение отредактировал(а) Unnamed67 - 31.5.2009, 21:33
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0651 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.