ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Вывод данных из .txt
  #1  
Старый 07.12.2009, 20:09
Аватар для alpotemkin
alpotemkin
Познающий
Регистрация: 07.05.2008
Сообщений: 49
Провел на форуме:
90698

Репутация: 5
Отправить сообщение для alpotemkin с помощью ICQ
По умолчанию Вывод данных из .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) по убыванию даты постинга.

Извиняюсь, если сумбурно объяснил ситуацию. Если где-то есть подобная тема - просьба скинуть ее сюда.

Заранее спасибо за ответ.
 
Ответить с цитированием

  #2  
Старый 08.12.2009, 02:34
Аватар для b3
b3
Постоянный
Регистрация: 05.12.2004
Сообщений: 647
Провел на форуме:
1698585

Репутация: 818


Отправить сообщение для b3 с помощью ICQ
По умолчанию

Когда новостей не много, то просканировать папку (scandir), реверснуть файлы(arsort) и вывести еще можно, но когда новостей будет ого-го то либо будут проблемы с оперативкой, либо с скоростью работы. Вообщем советую накатать скриптик который загонит твои новости в БД. Оттуда же и постраничную навигацию несложно сделать, вот как раз обсуждали http://forum.antichat.ru/thread161677.html
 
Ответить с цитированием

  #3  
Старый 08.12.2009, 18:21
Аватар для alpotemkin
alpotemkin
Познающий
Регистрация: 07.05.2008
Сообщений: 49
Провел на форуме:
90698

Репутация: 5
Отправить сообщение для alpotemkin с помощью ICQ
По умолчанию

Хм... может и так.... Тем более, что у меня уже написан скрипт для этого... а скрипт постинга можно быстро переписать.
Спасибо за ссылку, немного не то, но некоторые моменты использую.

Последний раз редактировалось alpotemkin; 10.12.2009 в 15:48..
 
Ответить с цитированием

  #4  
Старый 08.12.2009, 20:07
Аватар для Vlad&slav
Vlad&slav
Участник форума
Регистрация: 01.01.2009
Сообщений: 138
Провел на форуме:
817404

Репутация: 82
Отправить сообщение для Vlad&slav с помощью ICQ
Lightbulb


Последний раз редактировалось Vlad&slav; 08.12.2009 в 20:09..
 
Ответить с цитированием

  #5  
Старый 10.12.2009, 15:58
Аватар для alpotemkin
alpotemkin
Познающий
Регистрация: 07.05.2008
Сообщений: 49
Провел на форуме:
90698

Репутация: 5
Отправить сообщение для alpotemkin с помощью ICQ
По умолчанию

Цитата:
Сообщение от b3  
Когда новостей не много, то просканировать папку (scandir), реверснуть файлы(arsort) и вывести еще можно, но когда новостей будет ого-го то либо будут проблемы с оперативкой, либо с скоростью работы.
Новостей особо немного, раз в две недели-месяц добавляются. Потому я просто не вижу смысла использовать БД - сервер грузить не будет.

Насчет скандира и арсорта... не понимаю, как их можно прикрутить к readfile()? Сходу только одно приходит в голову:

Код:
<?php

$dir='/news/';
$files=scandir($dir);

print_r($files);

?>
Но это только выводит список файлов, а не их содержимое... А если заменить print на readfile, то не работает.
А надо, чтобы скрипт просканировал папку с текстами и вывел их содержимое на сайт, по 10 на страницу.

Последний раз редактировалось alpotemkin; 10.12.2009 в 16:01..
 
Ответить с цитированием

  #6  
Старый 10.12.2009, 16:01
Аватар для b3
b3
Постоянный
Регистрация: 05.12.2004
Сообщений: 647
Провел на форуме:
1698585

Репутация: 818


Отправить сообщение для b3 с помощью ICQ
По умолчанию

Цитата:
Но это только выводит список файлов, а не их содержимое...
Ну так)) Список файлов в массиве, далее в цикле открываеш первых 10 файлов из массива, и выводиш на страничку, если страничка $page=2 то делаеш условие что вывод в цикле начинается с ключа [10] и заканчивается [20] елементарно =)
 
Ответить с цитированием

  #7  
Старый 10.12.2009, 16:41
Аватар для alpotemkin
alpotemkin
Познающий
Регистрация: 07.05.2008
Сообщений: 49
Провел на форуме:
90698

Репутация: 5
Отправить сообщение для alpotemkin с помощью ICQ
По умолчанию

Возможно и элементарно, но я еще только учусь... Если не сложно, можете выложить пример такого скрипта?
 
Ответить с цитированием

  #8  
Старый 11.12.2009, 12:21
Аватар для Vlad&slav
Vlad&slav
Участник форума
Регистрация: 01.01.2009
Сообщений: 138
Провел на форуме:
817404

Репутация: 82
Отправить сообщение для Vlad&slav с помощью ICQ
По умолчанию

И мне)
 
Ответить с цитированием

  #9  
Старый 11.12.2009, 13:50
Аватар для LStr1ke
LStr1ke
Постоянный
Регистрация: 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> "

?>
 
Ответить с цитированием

  #10  
Старый 11.12.2009, 14:40
Аватар для b3
b3
Постоянный
Регистрация: 05.12.2004
Сообщений: 647
Провел на форуме:
1698585

Репутация: 818


Отправить сообщение для b3 с помощью ICQ
По умолчанию



[+] Проверяет тип файл или папка:
Цитата:
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'] < || $_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'] < || $_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..
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Основные команды командной строчки. Егорыч+++ *nix 65 01.10.2009 17:27
Посимвольный перебор в базах данных на примере MySQL LoFFi Чужие Статьи 5 30.04.2007 05:05
Перехват данных, кто, где и как? GreenBear Чужие Статьи 1 16.12.2006 16:43
Перехват данных: кто, где и как И.Г. Мировые новости 0 03.12.2006 22:46
Долбим Sql’ные базы данных k00p3r Чужие Статьи 0 13.06.2005 14:13



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ