|
|
|
| Изобретаю велосипед, но как по мне изобретение велосипеда хорошо обучает :)
Всё хорошо, но не могу придумать как осуществить следующее:
Имеем переменные:
$showPages = 4; // кол-во страниц которые будут отображены в навигации
// т.е. в данном случае [1 2 3 4]
// если мы уже на какойто странице выше первой тогда нужно вывести и слева и справа от текущей страницы [3 4 5 6]
// т.е. ВСЕГО должно быть отображено 4 номера страниц.
$page; // текущая страница
$maxpage; // последняя страница
|
перелопатил всё в голове но никак не могу придумать :)
<?
for($i = max($page-$showPages, 1); $i <= min($page+$showPages-1, $maxpage); $i++)
echo $i'<br>';
|
| |
|
|
|
|
|
|
|
для: sl1p
(09.10.2010 в 21:30)
| |
<?
$a = max($page - (int)(($showPages-1)/2), 1);
$b = min($page + (int)($showPages/2), $maxpage);
for($i = $a ; $i <= $b; $i++) ...
|
| |
|
|
|
|
|
|
|
для: Trianon
(09.10.2010 в 22:09)
| | находясь на первой выводит 3 страницы
на последней 2 =( | |
|
|
|
|
|
|
|
для: sl1p
(09.10.2010 в 22:25)
| | Я идею дал.
допиливайте.
мне чтоли за Вас изобретать? | |
|
|
|
|
|
|
|
для: Trianon
(09.10.2010 в 22:33)
| | Ваш пример я уже пробовал с делением на 2 :)
какраз допиливалку и прошу помочь доделать :)) | |
|
|
|
|
|
|
|
для: sl1p
(09.10.2010 в 22:36)
| | что-то я не очень понял, что вас не устраивает.
3 страницы потому что слева нет ни одной.
Формулируйте условие более определенно. | |
|
|
|
|
|
|
|
для: Trianon
(09.10.2010 в 22:51)
| | хорошо, скажем всего 6 страниц.
если мы находимся на первой должен быть вывод такой:
1 2 3 4
выводит же только
1 2 3
ну и на последней
3 4 5 6
=>>>
5 6
т.е. всегда должно быть 4 страницы в навигации :) независимо от того на какой странице мы находимся.
зы. имеется ввиду 4 страницы учитывая текущую страницу | |
|
|
|
|
|
|
|
для: sl1p
(09.10.2010 в 22:58)
| | и как расположены эти $showPages номеров относительно страницы с номером $page ?
Уж договаривайте тогда до конца. | |
|
|
|
|
|
|
|
для: sl1p
(09.10.2010 в 21:30)
| |
<?php
$threads = (int) $info[2];
$start = @(int) $_GET["start"];
$start = ($start >= 0 and $start < $threads) ? $start : 0;
// ...
$pages = ceil($threads / $threads_per_page);
// если у нас список тем больше чем на одну страницу печатаем ссылки
// для постраничной навигации и выводим форму для быстрого перехода
if ($pages > 1) {
$array = array();
$page = ceil(($start + 1) / $threads_per_page);
$links = ceil($pages / $links_per_page);
$link = ceil($page / $links_per_page);
$page_start = $link * $links_per_page - $links_per_page;
$page_end = $page_start + $links_per_page;
$page_end = ($page_end < $pages + 1) ? $page_end : $pages;
$first = $page_start * $threads_per_page;
$last = $pages * $threads_per_page - $threads_per_page;
if ($link > 1) {
$start = $first - $threads_per_page * $links_per_page;
$array[] = "<a href='{$_SERVER["PHP_SELF"]}?inc=$inc&id=$forum_id&start=0&show=$show'>«««первая страница</a>";
$array[] = "<a href='{$_SERVER["PHP_SELF"]}?inc=$inc&id=$forum_id&start=$start&show=$show'>«пред. </a>";
}
for ($i = $page_start; $i < $page_end; ++$i) {
$start = $i * $threads_per_page;
if ($page == $i + 1) {
$array[] = "<b>$page</b>";
}
else {
$array[] = "<a href='{$_SERVER["PHP_SELF"]}?inc=$inc&id=$forum_id&start=$start&show=$show'>".($i + 1)."</a>";
}
}
if ($link < $links) {
$start = $page_end * $threads_per_page;
$array[] = "<a href='{$_SERVER["PHP_SELF"]}?inc=$inc&id=$forum_id&start=$start&show=$show'>след.»</a>";
$array[] = "<a href='{$_SERVER["PHP_SELF"]}?inc=$inc&id=$forum_id&start=$last&show=$show'>последняя страница»»»</a>";
}
echo "<br><br><div style='text-align: center;'>\n";
echo implode(" , ", $array)."\n";
echo "<form action='{$_SERVER["PHP_SELF"]}' method='get'>\n";
echo "<p>\n";
echo "<input type='hidden' name='inc' value='$inc'>\n";
echo "<input type='hidden' name='id' value='$forum_id'>\n";
echo "Страница: <select name='start'>\n";
for ($i = 1; $i <= $pages; ++$i) {
$start = ($i - 1) * $threads_per_page;
echo "<option value='$start'";
if ($page == $i) {
echo "selected";
}
echo "> $i </option>\n";
}
echo "</select>\n";
echo "<input type='hidden' name='show' value='$show'>\n";
echo "<input type='submit' value='Перейти'>\n";
echo "</p>\n";
echo "</form>\n";
echo "</div>\n";
}
}
else {
echo "<tr><td align='center'><br><br>Форум пуст.<br><br><br><br></td></tr>\n";
}
echo "</table>\n";
require "templates/footer.php";
|
| |
|
|
|
|
|
|
|
для: Красная_шляпа
(09.10.2010 в 23:17)
| | и? там реализовано то что мне надо? | |
|
|
|
|
|
|
|
для: sl1p
(10.10.2010 в 00:04)
| | странный способ изобретать велосипед.
это как сначала решить что колёса обязательно должны быть квадратные. Нормальный велосипед у Вас уже не получится :) | |
|
|
|