|
|
|
| помогите есть проблема. вот скрипт.
<?
$dir_rec = dir(".");
$i = 0;
while($entry = $dir_rec->read())
{
if (substr($entry,0,6)=="index-")
{
$names[$i]=substr($entry,0);
$i++;
}
}
$dir_rec->close();
natsort($names);
$names = array_reverse($names);
// Число позиций на странице
$pnumber = 3;
// Формируем промежуточный массив
// Проверяем передан ли номер текущей страницы
if(isset($_GET['page'])) $page = $_GET['page'];
else $page = 1;
// Число страниц
$total = count($names);
$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 "<a href='$names[$i]'>$names[$i]</a><br /><br />";
}
echo "</p></td></tr><tr><td height=\"50px\" valign=\"top\"><p>";
// Постраничная навигация
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> ";
}
}
else
{
if($page == $i)
{
echo "[".(($i - 1)*$pnumber + 1)."-".($total - 1)."] ";
}
else
{
### проверка ###
if((($i - 1)*$pnumber + 1)>($total - 1)) break;
echo "<a href=$_SERVER[PHP_SELF]?page=".$i.">[".(($i - 1)*$pnumber + 1)."-".($total - 1)."]</a> ";
}
}
}
?>
|
проблема в том, что в каталоге 11 файлов, а ссылка проставляется только на 10 первых. на последней странице текст
Notice: Undefined offset: 11 in y:\home\tester\www\1.php on line 45
Notice: Undefined offset: 11 in y:\home\tester\www\1.php on line 45
тоесть это строка
echo "<a href='$names[$i]'>$names[$i]</a><br /><br />";
как вылечить это? файлы в каталоге имеют имена index-1.php, index-2.php и так далее. тоесть теряется последний файл массива. как его вернуть. проверил, когда в каталоге 8 файлов выводится только 7 первых. | |
|
|
|
|
|
|
|
для: relikt
(31.05.2007 в 08:47)
| | Счет нужно начинать с нуля:
for($i = 0; $i <$number; $i++) | |
|
|
|
|
|
|
|
для: coloboc66
(31.05.2007 в 09:20)
| | не то. в результате выводится две страницы [1-7] [8-9] на них выводятся ссылки на 10 и 9 файлы и теряются все остальные.
здесь постраничная навигация и поэтому если использовать ваше предложение во втором цикле, то получится, что счёт нужно вести с нулевой страницы. да, там появится ссылка на 11 страницу, но эта ссылка будет одна. так же выводится много ошибок
Notice: Undefined offset: -2 in y:\home\tester\www\1.php on line 41
Notice: Undefined offset: -2 in y:\home\tester\www\1.php on line 41
Notice: Undefined offset: -1 in y:\home\tester\www\1.php on line 41
Notice: Undefined offset: -1 in y:\home\tester\www\1.php on line 41 | |
|
|
|
|
|
|
|
для: relikt
(31.05.2007 в 09:26)
| | Может быть ?
for($i = $start; $i <= $end; $i++)
или
for($i = $start-1; $i < $end; $i++)
Скорее всего второй вариант.. | |
|
|
|
|
|
|
|
для: kasmanaft
(31.05.2007 в 09:44)
| | неа, выводится ссылка начиная с 10 по 7, далее на странице с 7 по 4. тоесть последняя ссылка аовторяется на стедующей странице. 11 так и не появляется. далее на последней странице выводится
Notice: Undefined offset: 11 in y:\home\tester\www\1.php on line 41
Notice: Undefined offset: 11 in y:\home\tester\www\1.php on line 41
ok второй вариан катит, появилась ссылка на 11, но повторяются последние ссылки на следующих страницах. | |
|
|
|
|
|
|
|
для: relikt
(31.05.2007 в 09:50)
| | - | |
|
|
|
|
|
|
|
для: kasmanaft
(31.05.2007 в 09:57)
| | решил проблему так
for($i = $start-1; $i < $end-1; $i++)
но пропала самая последняя ссылка на index-1.php
нашёл
$total = count($names) + 1;
всем спасибо, кто ответил на мой вопрос. | |
|
|
|