Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|

07.12.2009, 20:09
|
|
Познающий
Регистрация: 07.05.2008
Сообщений: 49
Провел на форуме: 90698
Репутация:
5
|
|
Вывод данных из .txt
Доброго времени суток!
Описание: Имеется сайт, на котором добавляются и выводятся новости с использованием текстовых файлов.
Каждая новость добавляется в отдельный файл.
Скрипт добавления:
Код:
<?php
$name='Название новости: '. $_POST['name'];
$news='Новость'. $_POST['news'];
$date=date("d.m.Y-G.i.s");
$handle = fopen("news$date.txt", "w+");
fwrite($handle, $name_prj."\r\n");
fwrite($handle, $news."\r\n");
$URL="...куда перейти после добавления";
header ("Location: $URL");
fclose($handle);
?>
Раньше текстовые файлы просто сливались на комп и постились выборочно. Теперь же требуется, чтобы скрипт постил все новости.
Скрипт вывода из одного файла:
Код:
<?php
echo "<table>";
$file = file("news.txt");
foreach($file as $qk)
{
list($text1,$text2) = explode("=", $qk);
echo "<tr><td>".$text1."</td></tr>";
}
echo "</table>";
?>
Задача: Хотелось бы, чтобы скрипт сканировал папку с файлами и выводил все новости постранично (к примеру, по 10) по убыванию даты постинга.
Извиняюсь, если сумбурно объяснил ситуацию. Если где-то есть подобная тема - просьба скинуть ее сюда.
Заранее спасибо за ответ.
|
|
|

08.12.2009, 02:34
|
|
Постоянный
Регистрация: 05.12.2004
Сообщений: 647
Провел на форуме: 1698585
Репутация:
818
|
|
Когда новостей не много, то просканировать папку (scandir), реверснуть файлы(arsort) и вывести еще можно, но когда новостей будет ого-го то либо будут проблемы с оперативкой, либо с скоростью работы. Вообщем советую накатать скриптик который загонит твои новости в БД. Оттуда же и постраничную навигацию несложно сделать, вот как раз обсуждали http://forum.antichat.ru/thread161677.html
|
|
|

08.12.2009, 18:21
|
|
Познающий
Регистрация: 07.05.2008
Сообщений: 49
Провел на форуме: 90698
Репутация:
5
|
|
Хм... может и так.... Тем более, что у меня уже написан скрипт для этого... а скрипт постинга можно быстро переписать.
Спасибо за ссылку, немного не то, но некоторые моменты использую. 
Последний раз редактировалось alpotemkin; 10.12.2009 в 15:48..
|
|
|

08.12.2009, 20:07
|
|
Участник форума
Регистрация: 01.01.2009
Сообщений: 138
Провел на форуме: 817404
Репутация:
82
|
|
Последний раз редактировалось Vlad&slav; 08.12.2009 в 20:09..
|
|
|

10.12.2009, 15:58
|
|
Познающий
Регистрация: 07.05.2008
Сообщений: 49
Провел на форуме: 90698
Репутация:
5
|
|
Сообщение от b3
Когда новостей не много, то просканировать папку (scandir), реверснуть файлы(arsort) и вывести еще можно, но когда новостей будет ого-го то либо будут проблемы с оперативкой, либо с скоростью работы.
Новостей особо немного, раз в две недели-месяц добавляются. Потому я просто не вижу смысла использовать БД - сервер грузить не будет.
Насчет скандира и арсорта... не понимаю, как их можно прикрутить к readfile()? Сходу только одно приходит в голову:
Код:
<?php
$dir='/news/';
$files=scandir($dir);
print_r($files);
?>
Но это только выводит список файлов, а не их содержимое... А если заменить print на readfile, то не работает.
А надо, чтобы скрипт просканировал папку с текстами и вывел их содержимое на сайт, по 10 на страницу.
Последний раз редактировалось alpotemkin; 10.12.2009 в 16:01..
|
|
|

10.12.2009, 16:01
|
|
Постоянный
Регистрация: 05.12.2004
Сообщений: 647
Провел на форуме: 1698585
Репутация:
818
|
|
Но это только выводит список файлов, а не их содержимое...
Ну так)) Список файлов в массиве, далее в цикле открываеш первых 10 файлов из массива, и выводиш на страничку, если страничка $page=2 то делаеш условие что вывод в цикле начинается с ключа [10] и заканчивается [20] елементарно =)
|
|
|

10.12.2009, 16:41
|
|
Познающий
Регистрация: 07.05.2008
Сообщений: 49
Провел на форуме: 90698
Репутация:
5
|
|
Возможно и элементарно, но я еще только учусь... Если не сложно, можете выложить пример такого скрипта?
|
|
|

11.12.2009, 12:21
|
|
Участник форума
Регистрация: 01.01.2009
Сообщений: 138
Провел на форуме: 817404
Репутация:
82
|
|
И мне)
|
|
|

11.12.2009, 13:50
|
|
Постоянный
Регистрация: 29.07.2009
Сообщений: 400
Провел на форуме: 1455812
Репутация:
150
|
|
Тестил на Win не уверен как на юниксах будет вести себя
PHP код:
<?php
$path = "news"; //Директория с файлами
$dir=getcwd()."/".$path; //Получаем абсолютную директорию
$files=scandir($dir); //Получаем список файлов
// Тут смотри сам, я удалил из списка .. и . и сортировал, смотри сам как тебе нужно будет
unset($files[0],$files[1]);
sort($files);
//----
chdir($path); //Переходи в папку с файлами для чтения
$page = intval($_GET['page']); // Тут берем тек. страницу
$onpage = 5; //Количество вывода на страницу
$start = $page * $onpage; //Высчитываем с какого числа начинать чтение файлов
for($i=$start;$i<$start+$onpage;$i++)
{
// Вывод
if($i < count($files))
{
echo "<p>";
$file = file($files[$i]);
foreach($file as $qk)
{
list($text1,$text2) = explode("=", $qk);
echo "<b>".$text1."</b><br><small>".$text2."</small>";
}
echo "</p>";
}
}
// Выводим навигацию
$cnts = count($files)/$onpage; // Определяем количество ссылок
for($i=1;$i<$cnts;$i++) echo "<a href='".$_SERVER['PHP_SELFT']."?page=".$i."'>".$i."</a> ";
?>
|
|
|

11.12.2009, 14:40
|
|
Постоянный
Регистрация: 05.12.2004
Сообщений: 647
Провел на форуме: 1698585
Репутация:
818
|
|
[+] Проверяет тип файл или папка:
DIRECTORY - [DIR]
IMG_1341.jpg - [FILE]
IMG_1342.jpg - [FILE]
IMG_1344.jpg - [FILE]
IMG_1347.jpg - [FILE]
IMG_1348.jpg - [FILE]
IMG_1349.jpg - [FILE]
[+] Проверяет что в адресную строку не вводиди всякую херь типа ?p=-100 иди ?p=a
PHP код:
if(empty($_GET['p']) || $_GET['p'] < 0 || $_GET['p'] > $COUNT_PAGES || !intval($_GET['p']))
$_GET['p'] = 0;
PHP код:
<?php
if ($handle = opendir('./files')) {
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != "..") {
$files[] = $file;
}
}
closedir($handle);
}
/* config */
$COUNT_FILES_ON_PAGE = 7;
###
$COUNT_FIELES = count($files);
$COUNT_PAGES = intval($COUNT_FIELES / $COUNT_FILES_ON_PAGE);
if(empty($_GET['p']) || $_GET['p'] < 0 || $_GET['p'] > $COUNT_PAGES || !intval($_GET['p']))
$_GET['p'] = 0;
echo '<h2>Файлов в папке: '.$COUNT_FIELES.'</h2>';
echo 'Всего страниц: <b>'.($COUNT_PAGES +1).'</b><br>';
echo 'Файлов на страницу: <b>'.$COUNT_FILES_ON_PAGE.'</b><br>';;
echo 'Текущая страница: <b>'.($_GET['p']+1).'</b><br>';
for ($i=0; $i<= $COUNT_PAGES;$i++) {
echo '<a href="?p='.$i.'">['.($i+1).']</a> ';
}
echo '<hr>';
$START = $_GET['p'] * $COUNT_FILES_ON_PAGE;
$END = $START + $COUNT_FILES_ON_PAGE;
for ($i = $START; $i < $END; $i++) {
if(key_exists($i,$files)) {
if(is_file('./files/'.$files[$i]))
echo $files[$i].' - [FILE]<br>';
if(is_dir('./files/'.$files[$i]))
echo $files[$i].' - [DIR]<br>';
}
}
?>
ЗЫ LStr1ke опередил =( Когда я читал тему небыло поста твоего =(
Последний раз редактировалось b3; 11.12.2009 в 15:17..
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|