Эта тема на forum.dklab.ru


smalluser: Автоматическое определение ссылок на файлы в директории - (Перв, Пред, След, Посл.)
Добрый день!
Очень необходима помощь профессионалов. (Для моих мозгов эта задача не по силам) :(
Взгляните на код:

<?// Directory where pages located:
define('PAGES_BASE_DIR', './'); //With trailing slash

$files = glob(realpath(PAGES_BASE_DIR) . '/[0-9]*.php');
natsort($files);
$current = array_search($_SERVER['SCRIPT_FILENAME'], $files);
echo '<a href="' . PAGES_BASE_DIR . pathinfo($files[0], PATHINFO_BASENAME) . '">Первая</a>';
if ($current !== false){// Found in array
if ($current > 0){//Not first
echo '&nbsp;&nbsp;&nbsp; <a href="' . PAGES_BASE_DIR . pathinfo($files[$current - 1], PATHINFO_BASENAME) . '">Предыдущая</a>';
}
if ($current < count($files) - 1){// Not last
echo '&nbsp;&nbsp;&nbsp; <a href="' . PAGES_BASE_DIR . pathinfo($files[$current + 1], PATHINFO_BASENAME) . '">Следующая</a>';
}
}
echo '&nbsp;&nbsp;&nbsp; <a href="' . PAGES_BASE_DIR . pathinfo($files[count($files) - 1], PATHINFO_BASENAME) . '">Последняя</a>';?>

Есть некоторое количество страниц (001.php, 002.php, 003.php ..... 012.php.
Вышеуказанный код подключаю инклюдом к этим страницам и соответственно получается навигация по страницам. Могу добавлять любое количество новых страниц, не заботясь о ссылках на предыдущие и т.д. Все работает.
Есть два вопроса:
1. Ссылки "Предыдущая" и "Следующая" не отображаются совсем, если перед (или после) загруженной страницы нет других.
Хотелось бы, что бы надписи "Предыдущая" и "Следующая" все же отображались, но были просто недоступны для нажатия. Во всяком случае так логичнее.
2. Ссылки "Первая" и "Последняя" отображаются в любом случае и всегда доступны, даже если уже загружена первая (или последняя) страница. Хотелось бы, что бы при загрузке первой и последней страницы ссылки "Первая" и "Последняя" все же были не доступны, но видны (как и в первом случае).
3. И вопрос, который мне вообще не понятен: при проверке этого кода под Денвером, всегда отображаются только ссылки "Первая" и "Последняя". Даже если я загружаю страницу из середины списка, ссылок "Предыдущая" и "Следующая" просто нет. Но при этом никаких ошибок не выдается. А при загрузке скрипта на хостинг все 4 ссылки отображаются нормально.
Буду очень признателен за помощь. Разумеется больше всего волнует вопрос №1. Но буду рад, если поможите и в остальном.
Спасибо всем.
Ivan1986:

<?// Directory where pages located:
define('PAGES_BASE_DIR', './'); //With trailing slash

$files = glob(realpath(PAGES_BASE_DIR) . '/[0-9]*.php');
natsort($files);
$current = array_search($_SERVER['SCRIPT_FILENAME'], $files);
if ($current!=0) echo '<a href="' . PAGES_BASE_DIR . pathinfo($files[0], PATHINFO_BASENAME) . '">';
echo 'Первая';
if ($current!=0) echo '</a>';
if ($current !== false){// Found in array
if ($current > 0){//Not first
echo '&nbsp;&nbsp;&nbsp; <a href="' . PAGES_BASE_DIR . pathinfo($files[$current - 1], PATHINFO_BASENAME) . '">Предыдущая</a>';
}
else
echo '&nbsp;&nbsp;&nbsp; Предыдущая';
if ($current < count($files) - 1){// Not last
echo '&nbsp;&nbsp;&nbsp; <a href="' . PAGES_BASE_DIR . pathinfo($files[$current + 1], PATHINFO_BASENAME) . '">Следующая</a>';
}
else
echo '&nbsp;&nbsp;&nbsp; Следующая';
}
echo '&nbsp;&nbsp;&nbsp; ';
if ($current!=count($files) - 1) echo '<a href="' . PAGES_BASE_DIR . pathinfo($files[count($files) - 1], PATHINFO_BASENAME) . '">';
echo 'Последняя';
if ($current!=count($files) - 1) echo '</a>';
?>

Ловите. Оптимизиции никакой не проводил, не охото :)
По поводу третьего - не знаю, нужно отлаживать на денвере. У меня linux а значит ситуация как на хостинге :)
smalluser:
Спасибо, Ivan1986!
Я уж перестал надеятся на помощь.
Сейчас попробую код, но надеюсь, что все будет нормально.
Еще раз спасибо за помощь!!

Эта тема на forum.dklab.ru