Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

Чтение определённого материала из файла (php)

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Веб-программинг] >> Чтение определённого материала из файла (php)
Имя
Сообщение << Старые топики   Новые топики >>
Чтение определённого материала из файла (php) - 2008-05-14 16:58:51.110000   
Pavlen

Сообщений: 5
Оценки: 0
Присоединился: 2008-05-14 07:13:57.883333
Я пишу движок и у меня есть вопрос:
У меня через формы заносится информация в БД (.txt/.php:D), необходимо написать скрипт читающий данные из этих "базных" файлов[&:].
Новости заносятся вида (только не чаниная новою строку, с квадратами):
/1&lt;Илья&gt;/2&lt;admin@site.ru&gt;/3&lt;Вася Пупкин&gt;/4&lt;kat3&gt;/5&lt;12.05.2008 09:02:49&gt;/6&lt;Анекдот&gt; /1&lt;мукикеи&gt;/2&lt;уиукик@uy.ru&gt;/3&lt;суцмм&gt;/4&lt;kat2&gt;/5&lt;14.05.2008 04:37:49&gt;/6&lt;муимууууиуи&gt; /1&lt;мукикеи&gt;/2&lt;уиукик@uy.ru&gt;/3&lt;суцмм&gt;/4&lt;kat2&gt;/5&lt;14.05.2008 04:37:50&gt;/6&lt;муимууууиуи&gt; /1&lt;мукикеи&gt;/2&lt;уиукик@uy.ru&gt;/3&lt;суцмм&gt;/4&lt;kat2&gt;/5&lt;14.05.2008 04:37:51&gt;/6&lt;муимууууиуи&gt; /1&lt;мукикеи&gt;/2&lt;уиукик@uy.ru&gt;/3&lt;суцмм&gt;/4&lt;kat2&gt;/5&lt;14.05.2008 04:37:51&gt;/6&lt;муимууууиуи&gt; Зарегенные юзвери:
54ипуеии;ытектект;14.05.2008/04:43:15;W;gogo@mail.ru;484846 54ипуеии;ытектект;14.05.2008/04:43:26;W;gogo@mail.ru;484846 54ипуеии;ытектект;14.05.2008/04:43:26;W;gogo@mail.ru;484846 54ипуеии;ытектект;14.05.2008/04:43:26;W;gogo@mail.ru;484846 54ипуеии;ытектект;14.05.2008/04:43:37;W;gogo@mail.ru;484846 54ипуеии;ытектект;14.05.2008/04:43:38;W;gogo@mail.ru;484846 54ипуеии;ытектект;14.05.2008/04:43:38;W;gogo@mail.ru;484846
Как теперь сделать, чтобы страница (к примеру index.php) вынимала код и показывала его в нужной области, например

"/1<текст области>" - было именем {NAME}
"/2<текст области>" - мыло {EMAIL}
"/3<текст области>" - автор {AUTOR}
"/4<текст области>" - раздел {RAZDEL}
"/5<текст области>" - дата {DATE}
"/6<текст области>" - анекдот {UMOR}

и написать для вего этого отдельный шаблон типа:
&lt;div style="border: 1px solid black"&gt; &lt;font style="font-size: 10px; color: #8F8F8F;"&gt;{DATE} &lt;b&gt;{TITLE}&lt;/b&gt;&lt;/font&gt;&lt;br&gt; {CONTENT} &lt;/div&gt;&lt;br&gt; *смарти реалезовано*

ну и ещё для реги юзверей:
54ипуеии;ытектект;14.05.2008/04:43:15;W;gogo@mail.ru;484846 54ипуеии;ытектект;14.05.2008/04:43:26;W;gogo@mail.ru;484846 54ипуеии;ытектект;14.05.2008/04:43:26;W;gogo@mail.ru;484846 54ипуеии;ытектект;14.05.2008/04:43:26;W;gogo@mail.ru;484846 54ипуеии;ытектект;14.05.2008/04:43:37;W;gogo@mail.ru;484846 54ипуеии;ытектект;14.05.2008/04:43:38;W;gogo@mail.ru;484846 54ипуеии;ытектект;14.05.2008/04:43:38;W;gogo@mail.ru;484846
Post #: 1
RE: Чтение определённого материала из файла (php) - 2008-05-14 17:14:57.940000   
magistr_bender

Сообщений: 977
Оценки: 0
Присоединился: 2008-02-22 20:10:21.133333
да это всё конешно интересно… но… советую тебе узнать что таоке базы данных.. поверь твоя работа упростится в десятки а то и сотни раз.. и код сократится не то что на порядок а на несколько порядков..

но если же ты всётаки решил пойти сложным путём то вот те

запись в файл
&lt;?php
$filename = 'test.txt';
$somecontent = "Добавить это к файлу\n";

// Вначале давайте убедимся, что файл существует и доступен для записи.
if (is_writable($filename)) {

&nbsp;&nbsp;&nbsp;&nbsp;// В нашем примере мы открываем $filename в режиме "дописать в конец".
&nbsp;&nbsp;&nbsp;&nbsp;// Таким образом, смещение установлено в конец файла и
&nbsp;&nbsp;&nbsp;&nbsp;// наш $somecontent допишется в конец при использовании fwrite().
&nbsp;&nbsp;&nbsp;&nbsp;if (!$handle = fopen($filename, 'a')) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo "Не могу открыть файл ($filename)";
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit;
&nbsp;&nbsp;&nbsp;&nbsp;}

&nbsp;&nbsp;&nbsp;&nbsp;// Записываем $somecontent в наш открытый файл.
&nbsp;&nbsp;&nbsp;&nbsp;if (fwrite($handle, $somecontent) === FALSE) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo "Не могу произвести запись в файл ($filename)";
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit;
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;echo "Ура! Записали ($somecontent) в файл ($filename)";
&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;fclose($handle);

} else {
&nbsp;&nbsp;&nbsp;&nbsp;echo "Файл $filename недоступен для записи";
}
?&gt;

чтение &lt;?php
$handle = fopen("http://www.example.com/", "rb");
$contents = '';
while (!feof($handle)) {
&nbsp;&nbsp;$contents .= fread($handle, 8192);
}
fclose($handle);
?&gt;

вот параметры чтения для fopen
'r' Открывает файл только для чтения; помещает указатель в начало файла. 'r+' Окрывает файл для чтения и записи; помещяет указатель в начало файла. 'w' Открывает файл только для записи; помещает указатель в начало файла и обрезает файл до нулевой длинны. Если файл не существует - пробует его создать. 'w+' Открывает файл для чтения и записи; помещает указатель в начало файла и обрезает файл до нулевой длинны. Если файл не существует - пробует его создать. 'a' Открывает файл только для записи; помещает указатель в конец файла. Если файл не существует - пытается его создать. 'a+' Открывает файл для чтения и записи; помещает указатель в конец файла. Если файл не существует - пытается его создать. 'x' Создаёт и открывает только для записи; помещает указатель в начало файла. Если файл уже существует, вызов fopen() закончится неудачей, вернёт FALSE и выдаст предупреждение уровня E_WARNING. Если файл не существует, попытается его создать. Это эквивалентно указанию флагов O_EXCL|O_CREAT для внутреннего системного вызова open(2). Эта опция поддерживается начиная с версии PHP 4.3.2 и выше, и работает только для локальных файлов. 'x+' Создаёт и открывает для чтения и записи; помещает указатель в начало файла. Если файл уже существует, вызов fopen() закончится неудачей, вернёт FALSE и выдаст предупреждение уровня E_WARNING. Если файл не существует, попытается его создать. Это эквивалентно указанию флагов O_EXCL|O_CREAT для внутреннего системного вызова open(2). Эта опция поддерживается начиная с версии PHP 4.3.2 и выше, и работает только для локальных файлов.
Post #: 2
RE: Чтение определённого материала из файла (php) - 2008-05-14 19:31:57.020000   
Pavlen

Сообщений: 5
Оценки: 0
Присоединился: 2008-05-14 07:13:57.883333
Спасибо конечно, но php код я уже давно написал, мне нужен код чтения, такой, как я описал в топике;)

Часть кода для записи новостей:
@$fp = fopen ("system/news/news_new.txt", "a"); $date = date("d.m.Y h:i:s"); $cl_user_name = trim(htmlspecialchars($user_name)); $cl_email = trim(htmlspecialchars($email)); $cl_author = trim(htmlspecialchars($author)); $cl_section = trim(htmlspecialchars($section)); $cl_date = trim(htmlspecialchars($date)); $cl_text_news = trim(htmlspecialchars($text_news)); $contents = "/1&lt;$cl_user_name&gt;/2&lt;$cl_email&gt;/3&lt;$cl_author&gt;/4&lt;$cl_section&gt;/5&lt;$cl_date&gt;/6&lt;$cl_text_news&gt;\n"; fwrite($fp, $contents); fclose($fp);
Часть кода для записи юзверей:
$_POST['user_reg'] = $user_reg; $_POST['password_reg'] = $password_reg; $_POST['sex_reg'] = $sex_reg; $_POST['email_reg'] = $email_reg; $_POST['icq_reg'] = $icq_reg; @$fp = fopen ("system/users.txt", "a"); $cl_date = trim(htmlspecialchars(date("d.m.Y/h:i:s"))); $cl_user_reg = trim(htmlspecialchars($user_reg)); $cl_password_reg = trim(htmlspecialchars($password_reg)); $cl_sex_reg = trim(htmlspecialchars($sex_reg)); $cl_email_reg = trim(htmlspecialchars($email_reg)); $cl_icq_reg = trim(htmlspecialchars($icq_reg)); $contents = "$cl_user_reg;$cl_password_reg;$cl_date;$cl_sex_reg;$cl_email_reg;$cl_icq_reg\n"; fwrite($fp, $contents); fclose($fp);
:)
Post #: 3
RE: Чтение определённого материала из файла (php) - 2008-05-14 22:50:53.613333   
Pavlen

Сообщений: 5
Оценки: 0
Присоединился: 2008-05-14 07:13:57.883333
Млин, никто подсказать не мог…
$f = file('имя файла с базой'); for ($i=0;$i&lt;count($f);$i++) { $a = explode(';',$f[$i]); // получили массив a с различными элементами a[0], a[1] и т.д. - вот это как раз то, что было между ; // а дальше делаем что надо с этими данными }

А как теперь сделать, чтобы каждая новость имела свой номер и в масиве тоже нужно было его указывать?
Новости выглядят так:
1_уитут;утуетуе;уетует;4;14.05.2008 10:27:06;уиукиуи 2_уитут;утуетуе;уетует;4;14.05.2008 10:27:07;уиукиуи 3_уитут;утуетуе;уетует;4;14.05.2008 10:27:07;уиукиуи
например, чтобы вывести "14.05.2008 10:27:07" нужно было указать что-то типа "_2 + $a[3]"?
Post #: 4
RE: Чтение определённого материала из файла (php) - 2008-05-15 00:05:37.700000   
magistr_bender

Сообщений: 977
Оценки: 0
Присоединился: 2008-02-22 20:10:21.133333
я сомневаюсь что тут ктото подобной глупостью как хранение новостей в файлах занмается )))

а вообще просто через for  посчитай количество строк присвоив его переменной когда будеш изхх считать одновременно загоняй в массив.. а отсортировать массив это не проблема .. потом его и выведеш через тот же for
Post #: 5
RE: Чтение определённого материала из файла (php) - 2008-05-15 03:36:58.023333   
Панда

Сообщений: 232
Оценки: 0
Присоединился: 2008-03-05 07:38:35.890000

quote:

ORIGINAL: Pavlen

Млин, никто подсказать не мог…
$f = file('имя файла с базой'); for ($i=0;$i&lt;count($f);$i++) { $a = explode(';',$f[$i]); // получили массив a с различными элементами a[0], a[1] и т.д. - вот это как раз то, что было между ; // а дальше делаем что надо с этими данными }

А как теперь сделать, чтобы каждая новость имела свой номер и в масиве тоже нужно было его указывать?
Новости выглядят так:
1_уитут;утуетуе;уетует;4;14.05.2008 10:27:06;уиукиуи 2_уитут;утуетуе;уетует;4;14.05.2008 10:27:07;уиукиуи 3_уитут;утуетуе;уетует;4;14.05.2008 10:27:07;уиукиуи
например, чтобы вывести "14.05.2008 10:27:07" нужно было указать что-то типа "_2 + $a[3]"?



for ($i=0;$i&lt;count($f);$i++) { $a = explode(';',$f[$i]); $newsArray[$i] = $a; } $id = (int) $_GET['id']; $id = $id - 1; if (!isset($newsArray[$id])) { // новость не найдена } else { // найдена }
проще былобы наверное с xml это делать. Там еще можно и xslt привязать…
Post #: 6
RE: Чтение определённого материала из файла (php) - 2008-05-15 13:24:57.246666   
Pavlen

Сообщений: 5
Оценки: 0
Присоединился: 2008-05-14 07:13:57.883333
А можешь поподробнее объяснить этот код?[&:], что например означает "(int)" …
и как теперь вызывать определённый объект?
Post #: 7
RE: Чтение определённого материала из файла (php) - 2008-05-15 13:56:29.576666   
magistr_bender

Сообщений: 977
Оценки: 0
Присоединился: 2008-02-22 20:10:21.133333
ну я так догадываюсь что инт от integer )) тоесть там целое число)
Post #: 8
RE: Чтение определённого материала из файла (php) - 2008-05-16 01:50:17.603333   
Панда

Сообщений: 232
Оценки: 0
Присоединился: 2008-03-05 07:38:35.890000
для каждого $i (от нуля до $i меньше количества строк) разбиваем строку, получаем массив строк. Этот массив строк засовываем в новый массив. индексы в нем будут от 0 до n. тоесть первый элемент (первая новость будет под индексом 0).

Получаем id, (int) насильно переводит строку в число, либо если там бяка была то в 0;
вычитаем из id 1 и получаем что первая новость имеет id = 0;

ищем в том массиве новость с таким индексом… в общем есть/нет


// мде…
Post #: 9
Страниц:  [1]
Все форумы >> [Веб-программинг] >> Чтение определённого материала из файла (php)







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.