|
|
|
| Помогите пожалуйста сделать навигацию,вида
(1),2,3...20
Вторая стр:
1,(2),3,4...20
3я стр:
1,2,(3),4,5...20
4я стр:
1,2,3,(4),5,6...20
5я стр:
1 ... 3 4 (5) 6 7 ... 20
6я стр:
1 ... 4 5 (6) 7 8 ... 20
7я стр:
1 ... 5 6 (7) 8 9 ... 20
И тд...
Очень надо...
пс: если можно то переделать,эту http://softtime.ru/scripts/pager.php
навигацию,под ту что я написал. | |
|
|
|
|
|
|
|
для: d1xi
(11.02.2007 в 14:25)
| | Не знаю, может, так...
<?
$total = 20; // всего
$page = intval ($_GET['page']);
$page = ($page>=1 and $page<=$total)
? $page : 1;
$m2 = $page - 2;
$p2 = $page + 2;
$m2 = ($m2>=1)
? $m2 : 1;
$p2 = ($p2<=$total)
? $p2 : $total;
$pages[] = 1;
if ($m2>1) {
if (($m2-1) > 1)
$pages[] = '...';
else
$pages[] = ($m2+1) / 2;
}
for ($i=$m2; $i<=$p2; $i++)
$pages[] = $i;
if ($p2 < $total) {
if (($p2+1) < $total)
$pages[] = '...';
else
$pages[] = ($p2+$total) / 2;
}
$pages[] = $total;
print implode (' ', $pages);
?>
|
очень смутно представляю как это написать четче...
короче типа этого мне кажется
где то уже писал такое | |
|
|
|
|
|
|
|
для: bronenos
(11.02.2007 в 17:30)
| | Как бы этот код дополнить
<?php
// Имя файла
$filename = "text.txt";
// Число позиций на странице
$pnumber = 3;
// Открываем файл для чтения
$bufer = file_get_contents($filename);
// Находим все строки при помощи регулярного выражения
preg_match_all("#([\d]+) ([^\n]+)(\n|$)#U",
$bufer,
$out,
PREG_PATTERN_ORDER);
// Формируем промежуточный массив
for($i = 0; $i < count($out[1]); $i++)
{
$temp[] = trim($out[2][$i]);
}
// Проверяем передан ли номер текущей страницы
if(isset($_GET['page'])) $page = $_GET['page'];
else $page = 1;
// Число страниц
$total = count($temp);
$number = (int)($total/$pnumber);
if((float)($total/$pnumber) - $number != 0) $number++;
$start = (($page - 1)*$pnumber + 1);
$end = $page*$pnumber + 1;
if($end > $total) $end = $total;
// Выводим содержимое страниц
for($i = $start; $i < $end; $i++)
{
echo $temp[$i]."<br>";
}
// Постраничная навигация
for($i = 1; $i <= $number; $i++)
{
// Если это произвольная страница
if($i != $number)
{
if($page == $i)
{
echo "[".(($i - 1)*$pnumber + 1)."-".$i*$pnumber."] ";
}
else
{
echo "<a href=$_SERVER[PHP_SELF]?page=".$i.">[".
(($i - 1)*$pnumber + 1)."-".$i*$pnumber."]</a> ";
}
}
// Если это последняя страница заменяем последнюю цифру
// максимальным числом позиций в массиве $temp
else
{
if($page == $i)
{
echo "[".(($i - 1)*$pnumber + 1)."-".($total - 1)."] ";
}
else
{
echo "<a href=$_SERVER[PHP_SELF]?page=".$i.">[".
(($i - 1)*$pnumber + 1)."-".($total - 1)."]</a> ";
}
}
}
?>
|
Мне это пошло бы тоже,но если записей в базе 300,то ссылок будет оч много!
Как бы меньше сделать? | |
|
|
|
|
|
|
|
для: d1xi
(11.02.2007 в 20:43)
| | Есть функция file - чтение строк в массив. Считываешь строки в массив, а потом массив разбиваешь функцией array_slice | |
|
|
|
|
|
|
|
для: d1xi
(11.02.2007 в 20:43)
| | у меня на сайте так стоит...
<?
print "<form name='chpage'><select name='page' onChange='document.chpage.submit();'>";
for ($i=0; $i<$total; $i++)
{
$sed = ($_GET['page']==$i) ? 'selected' : '';
print "<option value='$i' $sed>".($i+1)."</option>\n";
}
print "</select></form>";
?>
|
| |
|
|
|
|
|
|
|
для: bronenos
(11.02.2007 в 21:08)
| | Не так не пойдет!!!
Нужно без применения ява-скриптов!
И к тому же,у меня идут не записи,а файлы! | |
|
|
|