ФорумПрограммированиеPHP для идиотов → Постраничная навигация

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

  • tartar

    Сообщения: 186 Репутация: N Группа: Кто попало

    Spritz 23 июня 2010 г. 13:21

    Привет!

    Есть скрипт

    Первая часть:
    <?
    // Переменная хранит число сообщений выводимых на станице
    $num = 10;
    // Извлекаем из URL текущую страницу
    $page = $_GET['page'];
    // Определяем общее число сообщений в базе данных
    $posts = mysql_query("SELECT COUNT(*) FROM servers");
    $posts = mysql_result ($posts,0);

    // Находим общее число страниц
    $total = intval(($posts - 1) / $num) + 1;
    // Определяем начало сообщений для текущей страницы
    $page = intval($page);
    // Если значение $page меньше единицы или отрицательно
    // переходим на первую страницу
    // А если слишком большое, то переходим на последнюю
    if(empty($page) or $page < 0) $page = 1;
    if($page > $total) $page = $total;
    // Вычисляем начиная к какого номера
    // следует выводить сообщения
    $start = $page * $num - $num;

    // Выбираем $num сообщений начиная с номера $start
    $result = mysql_query("SELECT * FROM servers ORDER BY vote DESC LIMIT $start, $num");
    // В цикле переносим результаты запроса в массив $postrow
    while ( $postrow[] = mysql_fetch_array($result))

    ?>


    2 часть:



    for($i = 0; $i < $num; $i++)
    {

    echo "
    </strong> ".$postrow[$i]['name']." </strong></p> <p> ".$postrow[$i]['description']." </p>

    ";


    }


    Спустя 9 сек.
    3 часть:
    <?php 
    // Проверяем нужны ли стрелки назад
    if ($page != 1) $pervpage = '<a href= .?page=1><<</a>
    <a href= .?page='. ($page - 1) .'><</a> ';
    // Проверяем нужны ли стрелки вперед
    if ($page != $total) $nextpage = ' <a href= .?&page='. ($page + 1) .'>></a>
    <a href= .?page=' .$total. '>>></a>';

    // Находим две ближайшие станицы с обоих краев, если они есть
    if($page - 2 > 0) $page2left = ' <a href= .?page='. ($page - 2) .'>'. ($page - 2) .'</a> | ';
    if($page - 1 > 0) $page1left = '<a href= .?page='. ($page - 1) .'>'. ($page - 1) .'</a> | ';
    if($page + 2 <= $total) $page2right = ' | <a href= .?page='. ($page + 2) .'>'. ($page + 2) .'</a>';
    if($page + 1 <= $total) $page1right = ' | <a href= .?page='. ($page + 1) .'>'. ($page + 1) .'</a>';

    // Вывод меню
    echo $pervpage.$page2left.$page1left.'<b class=navigation>'.$page.'</b>'.$page1right.$page2right.$nextpage;

    ?>



    Использываю этот скрипт для проекта топ сайтов , но как сделать например места ?
    вот как они выводится

    Sait Hz | описание: hzhz | Голосов 100
    ———————-
    Sait Hz 2 | описание: hzhz 2 | Голосов 30

    << 1 | 2 | 3 >>

    хотел бы узнать как сделать чтоб было

    1 место | Sait Hz | описание: hzhz | Голосов 100
    ———————-
    2 место | Sait Hz 2 | описание: hzhz 2 | Голосов 30

    << 1 | 2 | 3 >>

    И ещё если в 1 часть скрипта поставить $num = 10;
    а в базе только 2 сайта то он выводит тех двоих и ещё 8 пустых.
  • tartar

    Сообщения: 186 Репутация: N Группа: Кто попало

    Spritz 23 июня 2010 г. 13:36, спустя 15 минут 42 секунды

    >_<
  • md5

    Сообщения: 11948 Репутация: N Группа: в ухо

    Spritz 23 июня 2010 г. 13:38, спустя 1 минуту 22 секунды

    а 4 части не было?
    все умрут, а я изумруд
  • VaseninM

    Сообщения: 2416 Репутация: N Группа: Адекваты

    Spritz 23 июня 2010 г. 13:40, спустя 2 минуты 2 секунды

    Пиздато. Юзай пыхостатьи.
  • md5

    Сообщения: 11948 Репутация: N Группа: в ухо

    Spritz 23 июня 2010 г. 13:40, спустя 22 секунды

    ага, в статьях глянь постраничную навигацию
    все умрут, а я изумруд
  • tartar

    Сообщения: 186 Репутация: N Группа: Кто попало

    Spritz 23 июня 2010 г. 13:41, спустя 1 минуту 19 секунд

    постраничную ок , а как быть с местами ?
  • md5

    Сообщения: 11948 Репутация: N Группа: в ухо

    Spritz 23 июня 2010 г. 13:43, спустя 1 минуту 35 секунд

    начинай нумеровать с ($page-1)*$nums_per_page+1
    гениально? — ебануться!
    все умрут, а я изумруд
  • tartar

    Сообщения: 186 Репутация: N Группа: Кто попало

    Spritz 23 июня 2010 г. 13:47, спустя 3 минуты 32 секунды

    md5, :D Спасибо за быстрый ответ :)
  • tartar

    Сообщения: 186 Репутация: N Группа: Кто попало

    Spritz 23 июня 2010 г. 14:46, спустя 59 минут 31 секунду

    md5,

    Изменил так всё стало как нужно мне.


    $i = ($nums * $page) - $nums;
    while ($row = mysql_fetch_assoc($sql))
    {
    $i++;

    echo "Место: $i | Сайт: ".$row['name']." | Голосов: ".$row['vote']." ";

    }



    Спасибо за Ваш скрипт , читабельный смог разобратся! :)
  • Faster

    Сообщения: 1159 Репутация: N Группа: Кто попало

    Spritz 23 июня 2010 г. 15:12, спустя 26 минут 4 секунды

    комменты рулят.
  • md5

    Сообщения: 11948 Репутация: N Группа: в ухо

    Spritz 23 июня 2010 г. 16:04, спустя 52 минуты 14 секунд

    tartar, я безумно рад!
    все умрут, а я изумруд
  • krasun

    Сообщения: 1370 Репутация: N Группа: Джедаи

    Spritz 23 июня 2010 г. 16:22, спустя 17 минут 47 секунд

    используй Zend_Paginator
  • Sinkler

    Сообщения: 8096 Репутация: N Группа: в ухо

    Spritz 23 июня 2010 г. 16:27, спустя 5 минут 2 секунды

    да как-то для такой мелочи зендовский пагинатор…
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 23 июня 2010 г. 16:37, спустя 9 минут 49 секунд

    зендщики как зомби, пытаются заразить всегда своим зендом
    Спустя 32 сек.
    Zend_Echo нету?)
    adw/0
  • Sinkler

    Сообщения: 8096 Репутация: N Группа: в ухо

    Spritz 23 июня 2010 г. 16:40, спустя 3 минуты 24 секунды


    зендщики как зомби, пытаются заразить всегда своим зендом
    Спустя 32 сек.
    Zend_Echo нету?)

    лол +1 )))

Пожалуйста, авторизуйтесь, чтобы написать комментарий!