X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Навигация на странице по файлам директории
smalluser
smalluser
Topic Starter сообщение 10.5.2009, 23:12; Ответить: smalluser
Сообщение #1


Добрый вечер!
Помогите пожалуйста решить проблему:
Есть несколько файлов (file01.php, file02.php, file03.php ..., file22.php)
Можно ли создать в отдельном файле блок навигации (для последующего подключения его инклюдом к этим файлам), чтобы в каждом из вышеперечисленных файлов автоматически определялись ссылки переходов на: "Первый", "Предыдущий", "Следующий" и "Последний" файлы?

Мне посоветовали попробовать такой код:
[php]
<?
// Directory where pages located:
define('PAGES_BASE_DIR', './'); //With trailing slash

$files = glob(realpath(PAGES_BASE_DIR) . '/[0-9].php');

$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 '::<a href="' . PAGES_BASE_DIR . pathinfo($files[$current - 1], PATHINFO_BASENAME) . '">Предыдущий</a>';
}
if ($current < count($files) - 1){// Not last
echo '::<a href="' . PAGES_BASE_DIR . pathinfo($files[$current + 1], PATHINFO_BASENAME) . '">Следующий</a>';
}
}
echo '::<a href="' . PAGES_BASE_DIR . pathinfo($files[count($files) - 1], PATHINFO_BASENAME) . '">Последний</a>';
?>
[/php]Но, этот код работает только с файлами вида 1.php, 2.php, 3.php... 9.php и ссылка "Последний" указывает не на последний файл (например 12.php) , а на 9.php, потому что расположен он ниже чем 12.php (сортировка в директории идет: 1,11,12,2,3,4....9).
А ссылки "Предыдущий" и "Следующий" не отображаются вообще на странице.
Если можете, подскажите как решить проблему. Желательно (очень) на примере.
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Гость_0_* Гость_0_*
сообщение 11.5.2009, 1:48; Ответить: Гость_0_*
Сообщение #2


А вы сделаете названия у файлов 001.пхп, это решит вашу проблему
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
smalluser
smalluser
Topic Starter сообщение 11.5.2009, 8:27; Ответить: smalluser
Сообщение #3


Переименовать файлы я пробовал еще до написания этого вопроса. Проблемы это не решило. Код вообще перестал работать.
И вопрос о НЕ отображении ссылок "Предыдущий" и "Следующий" так же повис в воздухе. Эти ссылки вообще не появляются в навигации.
Я не силен в php, но подозреваю, что просто переименование файлов для правильной их сортировки в директории - ситуацию исправить не может.
Но, Вам, спасибо за участие.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Гость_0_* Гость_0_*
сообщение 11.5.2009, 10:31; Ответить: Гость_0_*
Сообщение #4


Я забыл сказать, что нужно поправить скрипт, щас помочь не могу, так как с телефона. Вообще я просто сказал как сделать, чтобы прально сортировало
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
smalluser
smalluser
Topic Starter сообщение 11.5.2009, 10:59; Ответить: smalluser
Сообщение #5


С правильной сортировкой файлов разобраться как раз легко. Мне сложновато разобраться с кодом скрипта.
Если сможете помочь - буду очень благодарен. Это, конечно не горит. Я могу подождать, но надеюсь, что поможете решить проблему.
...Забыл уточнить, что в этой директории могут так же располагаться и другие файлы, учитывать которые в ссылках не нужно. Не уверен, что мыслю правильно, но может как-то указать список необходимых файлов отдельным списком (например в текстовом файле) и оттуда уже подставлять ссылки... Бред? :)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Гость_0_* Гость_0_*
сообщение 11.5.2009, 15:11; Ответить: Гость_0_*
Сообщение #6


[php]$files = glob(realpath(PAGES_BASE_DIR) . 'file00' . '/[0-9].php');[/php]Для начала попробуйте так
только меня немного смущает [0-9]
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
goshikvia
goshikvia
сообщение 11.5.2009, 16:02; Ответить: goshikvia
Сообщение #7


Возможно переменная $current имеет тип STRING, и может проблема в "string - integer".
Может поможет переобределение типа $current.

Меняет тип переменной в integer:
settype($current, integer);

Возвращает тип переменной (можно поверить):
gettype($current);

P.S. Я тоже новичок, поэтому могу ошибаться
[/COLOR]

[COLOR=black]Короче, попробуйте вставить settype($current, integer); сразу после $current = array_search($_SERVER['SCRIPT_FILENAME'], $files);
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
smalluser
smalluser
Topic Starter сообщение 11.5.2009, 17:29; Ответить: smalluser
Сообщение #8


Работоспособный код выглядит вот так:
[php]
<?// 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>';?>
[/php]С сортировкой теперь все в порядке. Пробовал на файлах: 001.php, 002.php, 003.php... 012.php.

Проблема со ссылками "ПРЕДЫДУЩАЯ" и "СЛЕДУЮЩАЯ" была только под Денвером (хотя тоже не пойму, почему он отказался их отображать) На хостинге все видится нормально.

Но, есть еще один вопрос: Простите мне мою тупость, но я не могу сделать, чтобы ссылки "Предыдущая" и "Следующая" отображались обычным текстом (как недоступная ссылка), когда впереди или сзади нет других страниц. В настоящий момент - если предыдущей или следующей страницы нет - то нет и ссылок вообще. Т.е. при загрузке файла 001.php я вижу ссылки:
Первая :: Следующая :: Последняя.
Конечно, по логике надо бы чтобы и ссылка "Первая" тоже была недоступна, раз я нахожусь уже на первой странице. Но, хотя бы справиться пока с отображением недостающей неактивной ссылки "Предыдущая".

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) SEO-текст на главной странице сайта и в категориях
5 boltuk 1425 26.3.2024, 21:43
автор: c4p1t4l15t
Открытая тема (нет новых ответов) Сделать правки на html-странице
5 TABAK 2303 20.5.2023, 10:45
автор: EvilGomel
Открытая тема (нет новых ответов) При реализации переноса селектора по странице пропадает возможность выбора пунктов
1 demamon 2927 3.2.2016, 6:26
автор: -Zippovich-
Открытая тема (нет новых ответов) 2 слайдера на одной странице
2 fetfurmoz 3057 31.1.2015, 10:57
автор: fetfurmoz
Открытая тема (нет новых ответов) Влияние на ранжирование нескольких таблиц на странице
10 Napoleon-007 1840 10.4.2014, 21:15
автор: Ixman


 



RSS Текстовая версия Сейчас: 19.4.2024, 22:31
Дизайн