|
|
|
| Здравствуйте, форумчане!
Не подскажете как сделать следующее:
вывести текстовые файлы из директории на странице index.php с ссылками на каждый файл типа index.php?id=number (т.е. изначально номеров нет)
С уважением,
Олег | |
|
|
|
|
|
|
|
для: Oleg77
(24.12.2014 в 20:20)
| | Можно использовать, например, функцию glob(), она вернет массив файлов директории, которые в цикле описать как ссылки.
Или вопрос не в том как вывести ссылки, а в том как отобразить файл по запросу? | |
|
|
|
|
|
|
|
для: confirm
(24.12.2014 в 20:34)
| | Здравствуйте!
Вот код:
<body>
<table cellspacing='0'> <!-- cellspacing='0' is important, must stay -->
<tr><th>Описание игры</th><th>Переход</th><th>Картинка</th></tr><!-- Table Header -->
<?php
$dir = 'php';
$skip = array('.', '..', 'index.php','style.css');
$files = scandir($dir);
foreach($files as $file) {
if(!in_array($file, $skip))
echo('<tr><td></td><td><a href="http://localhost/books.ru/'.$file.'">'.$file.'</a></td><td>' . '<br />');
}
?>
</body>
|
Здесь при нажатии на ссылки, открывается новая страница с текстом, т.к. не используется параметр, т.е. index.php?id=number .
Хотел бы это реализовать с параметрами, чтобы открывать на той же (index.php?id=number).
Не напишите?
Заранее благодарю. | |
|
|
|
|
|
|
|
для: Oleg77
(24.12.2014 в 20:47)
| | Погодите. Есть файлы в каталоге, они как я понимаю ничейные, то есть нет у них владельцев, и вы просто хотите их пронумеровать от 1 до ..., вывести список этих файлов, а по запрошенному номеру выводить на страницу содержание запрошенного файла, так? | |
|
|
|
|
|
|
|
для: confirm
(24.12.2014 в 21:01)
| | Да, выводить на странице index.php по типу index.php?id=номера
С уважением,
Олег | |
|
|
|
|
|
|
|
для: Oleg77
(24.12.2014 в 21:04)
| | Ну список вывести просто:
<?
foreach(glob('*.ext') as $f) {
$n++;
$files .= '<tr><td></td><td><a href="?id='.$n.'">'.basename($f).'</a></td><td>';
}
echo $files;
|
где ext - расширение файлов нужных для списка, если это txt, значит замените на txt.
Если у вас файлы в корне сайта (так у вас написано, что плохо само по себе), то путь к ним как прописано ?id, остальное браузер подставит.
А это что такое <td>' . '<br /> ? Не должно быть никаких тегов между тегами элементов таблицы, то есть тег BR в никакие ворота здесь. | |
|
|
|
|
|
|
|
для: confirm
(24.12.2014 в 21:17)
| | Получается, выводит список файлов с ссылками с id, но сами страницы не открываются при нажатии на эти ссылки.
<td><br> это просто для тренировки писал.
Расширение файлов у меня html.
Спасибо. | |
|
|
|
|
|
|
|
для: Oleg77
(24.12.2014 в 21:40)
| | Так я же вам задавал вопрос что надо, вывести ссылки или страницы. Чтобы отобразить страницу, нужно делать обратное - получить номера файлов и подключить нужный:
<?
if($id = (int)$_GET['id']) {
$f = glob('*.ext');
include $f[$id-1];
}
|
А вообще, эти страницы должны иметь или хозяина или порядок, а не лежать бесхозно да еще в корне. Если есть база, значит нужно описать их в базе, там же они будут получать и идентификаторы уникальные.
Если базы нет, и это что-то простое, то наведите порядок, разместив файлы в папку закрытую для свободного доступа, а описание файлов держать отдельно, в котором будут указаны и их уникальные индексы. | |
|
|
|
|
|
|
|
для: confirm
(24.12.2014 в 23:54)
| | Выводится файл, но на странице дублируется несколько раз.
Как бы это исправить?
Благодарю. | |
|
|
|
|
|
|
|
для: Oleg77
(25.12.2014 в 00:52)
| | Значит ваш код подключает его несколько раз, а почему, откуда же мне знать. Вы код свой показывайте, как вы это делаете, тогда можно и сказать почему. | |
|
|
|
|
|
|
|
для: confirm
(25.12.2014 в 01:23)
| | Здравствуйте!
Вот код:
<?php
foreach (glob ('php'.'/*') as $f) {
$n++;
if($id = (int)$_GET['id']) {
$f = glob('*.html');
include $f[$id-1];
} $files .= '<a href="?id='.$n.'">'.basename($f).'</a><br>';
}
echo $files;
?>
|
Т.е. нажимая на ссылку открывается страница со всеми файлами из каталога. | |
|
|
|
|
|
|
|
для: Oleg77
(25.12.2014 в 18:00)
| | Ну вы молодец, хотите по запросу ID выбирать нужное, а гребете все в кучу. Вы, что начинаете учить язык или? Ну это же бедлам непонятный, кончено все скопом подключится, так к в цикле подключение.
Ваш индексный файл должен готовить список ссылок на файлы, и проверять был ли запрос файла, и, ЕСЛИ был, тогда получить нужный и подключить его, и это РАЗДЕЛЬНЫЕ операции, а не все в куче.
<?
//вывод списка файлов
foreach (glob ('php'.'/*.html') as $f) { //если нужны html, то почему гребете все * ?
$n++;
$files .= '<a href="?id='.$n.'">'.basename($f).'</a><br>';
}
echo $files;
//если бы запрос файла, выводим его на странице
if($id = (int)$_GET['id']) {
$f = glob('php'.'/*.html'); //а здесь почему тогда другой путь *.ext ?
include $f[$id-1];
}
|
| |
|
|
|
|
|
|
|
для: confirm
(25.12.2014 в 18:48)
| | Спасибо за помощь!
С уважением,
Олег | |
|
|
|
|
|
|
|
для: Oleg77
(25.12.2014 в 19:24)
| | Зря радуетесь. Такое возможно, если осторожно, а если сегодня файл ab.html первый в списке, а завтра вы добавите файла aa.html, то уже ab.html станет вторым, что никак не соответствует ранее заявленному, в общем путаница. | |
|
|
|
|
|
|
|
для: Oleg77
(25.12.2014 в 00:52)
| | Вообще-то, закладываться на постоянство порядка файлов в каталоге - достаточно наивный поступок. | |
|
|
|