• Страница 1 из 1
  • 1
Модератор форума: Dimitro, LightInDarkness  
Модернизация постраничной навигации без базы!
friwa28
Скаут
Добрый вечер!
Попрошу модернизировать код постраничной навигации!
Она выглядит так ( в начало [1] [2][3] в конец)
Хотелось бы так или как нибудь на вашу усмотрение!
Вот код:

Code
<?php
function textpart($text, $count=100) {
     $number = @ $_GET['number'];
     #
     if($count > 0) {
         $text = wordwrap($text,$count, "[page]");
     }
     $str = explode("[page]", $text);
     // Выясняем сколько страниц
     $count = count($str);
     //Выводим страницу
     empty ($number) ? $number = 1 : $number < 1 ? $number = 1 : "";
     echo $str[($number)];
     // Если текущая страница первая, то выводим продолжить
     for ($i = 1; $i < $count; $i++) {
         // Проверяем текущая ли это страница
         for ($i = 1; $i < $count; $i++) {
             if ($i == $number) {
                 if ($i == ($count -1) and $count > 2) {
                     echo " <b>[$i]</b>";
                     echo " <a href='?number=" . ($count - $i) . "'> в начало</a>";
                 }
                 elseif ($i == ($count - ($count -1)) and $count > 2) {
                     echo " <a href='?number=" . ($count -1) . "'>в конец </a>";
                     echo " <b>[$i]</b>";

                 }
                 elseif ($i == $number) {
                     echo " <b>[$i]</b>";
                 }
             } else {
                 echo " <a href='?number=$i'>[$i]</a>";

             }
         }
     }
}
$str = file_get_contents("text.txt");
textpart($str,0);
?>


Вот содержимое text.txt:
Code

[page]<div class="post">
<div class="post_header"><a href="#">Добро пожаловать!</a></div>
<div class="post_body" align="left"><p> новость 1
<br />
</p>
                   <div class='news-post-down'>
                       <p>
                         <strong>Написал: friwa | 00.00.2011</strong>
                   
                       </p>
                   </div>
                    </div>
<div class="post">
<div class="post_header"><a href="#">Добро пожаловать!</a></div>
<div class="post_body" align="left"><p>новость
<br />
</p>
                   <div class='news-post-down'>
                       <p>
                         <strong>Написал: friwa | 00.00.2011</strong>
                   
                       </p>
                   </div>
                    </div>


Тег [page] ограничивает количество страниц.
В данный момент на странице две новости!

За помощь +сану=)
Сообщение # 1 написано 28.11.2012 в 21:00
RazArt
Тазовод
Code
if ($i == ($count -1) and $count > 2) { //если первая страница
                       echo " <b>[$i]</b>";
                       echo " <a href='?number=" . ($count - $i) . "'> в начало</a>";
                   }
                   elseif ($i == ($count - ($count -1)) and $count > 2) { //если последняя страницастраница
                       echo " <a href='?number=" . ($count -1) . "'>в конец </a>";
                       echo " <b>[$i]</b>";

                   }
                   elseif ($i == $number) { //если в середине
                       echo " <b>[$i]</b>";
                   }

так вот код, в чем проблема?
DumpMe v1.0 - система автоматического переноса персонажей

Вышла в свет первая стабильная версия. Писать в скайп - razart8
Сообщение # 2 отредактировано RazArt - Четверг, 29.11.2012, 05:17
friwa28
Скаут
У меня на страничке показывает так:
[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18]

а мне нужно хотябы так

[1]... [3] [4] .... [7]
Сообщение # 3 написано 29.11.2012 в 07:32
std_string
Центурион
Ну так... Отсчитывай n страниц от текущей для показа, выводи. Затем выводи многоточие. Снова отсчитывай.
Сможешь получить нечто вроде:
[1] [2] [3] ... [10] [11] [12] [В конец]
Разработка сайтов различной сложности, дешево. Скайп в профиле.
Сообщение # 4 написано 29.11.2012 в 08:06
friwa28
Скаут
А можеш кодом выставить?
Сообщение # 5 написано 29.11.2012 в 12:44
Кот_ДаWINчи
Чемпион
в своих проектах я использовал универсальную функцию по генерации навигационной линейки:

Code

function ShowPageNavigator($LinkText, $Page, $AllPages)
      {
      $Page = intval($Page);
      $AllPages = intval($AllPages);
      if ($Page > $AllPages)
          $Page = 1;
      $text = '<table border="0" cellpadding="5" cellspacing="3"><tr>';
      if ($AllPages < 16)
          {
          for ($i = 1; $i <= $AllPages; $i++)
              {
              if ($i == $Page)
                  $text .= '<td class=NaviCurrent>' . $i . '</td>';
              else
                  $text .= '<td class=NaviButton><a href="' . $LinkText . $i . '" target="_self">' . $i . '</a></td>';
              }
          }
      else
          {
          if ($Page < 6)
              {
              for ($i = 1; $i <= 6; $i++)
                  {
                  if ($i == $Page)
                      $text .= '<td class=NaviCurrent>' . $i . '</td>';
                  else
                      $text .= '<td class=NaviButton><a href="' . $LinkText . $i . '" target="_self">' . $i . '</a></td>';
                  }
              $text .= '<td>...</td>';
              $text .= '<td class=NaviButton><a href="' . $LinkText . ($AllPages - 2) . '" target="_self">' . ($AllPages - 2) . '</a></td>';
              $text .= '<td class=NaviButton><a href="' . $LinkText . ($AllPages - 1) . '" target="_self">' . ($AllPages - 1) . '</a></td>';
              $text .= '<td class=NaviButton><a href="' . $LinkText . $AllPages . '" target="_self">' . $AllPages . '</a></td>';
              }
          else if ($Page > ($AllPages - 5))
              {
              $text .= '<td class=NaviButton><a href="' . $LinkText . '1" target="_self">1</a></td>';
              $text .= '<td class=NaviButton><a href="' . $LinkText . '2" target="_self">2</a></td>';
              $text .= '<td class=NaviButton><a href="' . $LinkText . '3" target="_self">3</a></td>';
              $text .= '<td>...</td>';
              for ($i = ($AllPages - 5); $i <= $AllPages; $i++)
                  {
                  if ($i == $Page)
                      $text .= '<td class=NaviCurrent>' . $i . '</td>';
                  else
                      $text .= '<td class=NaviButton><a href="' . $LinkText . $i . '" target="_self">' . $i . '</a></td>';
                  }
              }
          else
              {
              $text .= '<td class=NaviButton><a href="' . $LinkText . '1" target="_self">1</a></td>';
              $text .= '<td class=NaviButton><a href="' . $LinkText . '2" target="_self">2</a></td>';
              $text .= '<td class=NaviButton><a href="' . $LinkText . '3" target="_self">3</a></td>';
              $text .= '<td>...</td>';
              $text .= '<td class=NaviButton><a href="' . $LinkText . ($Page - 1) . '" target="_self">' . ($Page - 1) . '</a></td>';
              $text .= '<td class=NaviCurrent>' . $Page . '</td>';
              $text .= '<td class=NaviButton><a href="' . $LinkText . ($Page + 1) . '" target="_self">' . ($Page + 1) . '</a></td>';
              $text .= '<td>...</td>';
              $text .= '<td class=NaviButton><a href="' . $LinkText . ($AllPages - 2) . '" target="_self">' . ($AllPages - 2) . '</a></td>';
              $text .= '<td class=NaviButton><a href="' . $LinkText . ($AllPages - 1) . '" target="_self">' . ($AllPages - 1) . '</a></td>';
              $text .= '<td class=NaviButton><a href="' . $LinkText . $AllPages . '" target="_self">' . $AllPages . '</a></td>';
              }
          }
      $text .= '</tr></table>';
      return $text;
      }


для форматирования добавляем в CSS:

Code

td.NaviButton {
      border: 1px solid #aaaaaa;
      background-color: #cccccc;
}
td.NaviCurrent {
      border: 1px solid black;
      background-color: #bbbbff;
}


Пример использования:

echo ShowPageNavigator("http://www.server.ru/news.php?page=", 10, 18);

выведет линейку для десятой страницы новостей а всего страниц - 18.

Если страниц 15 или меньше то показывает все номера страниц, если больше 15, в виде:

[1] [2] [3] ... [9] [10] [11] ... [16] [17] [18]

Но это только сама линейка. отбора самих записей по страницам здесь нет.
мне фиолетово какой у меня рейтинг, можете поставить хоть минус миллион...
Не в плюсах счастье...
Помогаю тем, кто хочет чтобы ему помогли, а не сделали за него.
Сообщение # 6 отредактировано Кот_ДаWINчи - Пятница, 30.11.2012, 19:02
RazArt
Тазовод
Кот_ДаWINчи, такое лучше в шаблонизатор выносить...
DumpMe v1.0 - система автоматического переноса персонажей

Вышла в свет первая стабильная версия. Писать в скайп - razart8
Сообщение # 7 написано 01.12.2012 в 07:34
Кот_ДаWINчи
Чемпион
а где я написал что это используется в ядре скрипта? wink
мне фиолетово какой у меня рейтинг, можете поставить хоть минус миллион...
Не в плюсах счастье...
Помогаю тем, кто хочет чтобы ему помогли, а не сделали за него.
Сообщение # 8 написано 01.12.2012 в 10:44
  • Страница 1 из 1
  • 1
Поиск: