Чтение определённого материала из файла (php)
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
Чтение определённого материала из файла (php) - 2008-05-14 16:58:51.110000
|
|
|
Pavlen
Сообщений: 5
Оценки: 0
Присоединился: 2008-05-14 07:13:57.883333
|
Я пишу движок и у меня есть вопрос: У меня через формы заносится информация в БД (.txt/.php:D), необходимо написать скрипт читающий данные из этих "базных" файлов[&:]. Новости заносятся вида (только не чаниная новою строку, с квадратами):
/1<Илья>/2<admin@site.ru>/3<Вася Пупкин>/4<kat3>/5<12.05.2008 09:02:49>/6<Анекдот>
/1<мукикеи>/2<уиукик@uy.ru>/3<суцмм>/4<kat2>/5<14.05.2008 04:37:49>/6<муимууууиуи>
/1<мукикеи>/2<уиукик@uy.ru>/3<суцмм>/4<kat2>/5<14.05.2008 04:37:50>/6<муимууууиуи>
/1<мукикеи>/2<уиукик@uy.ru>/3<суцмм>/4<kat2>/5<14.05.2008 04:37:51>/6<муимууууиуи>
/1<мукикеи>/2<уиукик@uy.ru>/3<суцмм>/4<kat2>/5<14.05.2008 04:37:51>/6<муимууууиуи>
Зарегенные юзвери:
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} и написать для вего этого отдельный шаблон типа:
<div style="border: 1px solid black">
<font style="font-size: 10px; color: #8F8F8F;">{DATE} <b>{TITLE}</b></font><br>
{CONTENT}
</div><br>
*смарти реалезовано* ну и ещё для реги юзверей:
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
|
|
|
RE: Чтение определённого материала из файла (php) - 2008-05-14 17:14:57.940000
|
|
|
magistr_bender
Сообщений: 977
Оценки: 0
Присоединился: 2008-02-22 20:10:21.133333
|
да это всё конешно интересно… но… советую тебе узнать что таоке базы данных.. поверь твоя работа упростится в десятки а то и сотни раз.. и код сократится не то что на порядок а на несколько порядков.. но если же ты всётаки решил пойти сложным путём то вот те запись в файл <?php $filename = 'test.txt'; $somecontent = "Добавить это к файлу\n"; // Вначале давайте убедимся, что файл существует и доступен для записи. if (is_writable($filename)) { // В нашем примере мы открываем $filename в режиме "дописать в конец". // Таким образом, смещение установлено в конец файла и // наш $somecontent допишется в конец при использовании fwrite(). if (!$handle = fopen($filename, 'a')) { echo "Не могу открыть файл ($filename)"; exit; } // Записываем $somecontent в наш открытый файл. if (fwrite($handle, $somecontent) === FALSE) { echo "Не могу произвести запись в файл ($filename)"; exit; } echo "Ура! Записали ($somecontent) в файл ($filename)"; fclose($handle); } else { echo "Файл $filename недоступен для записи"; } ?> чтение <?php $handle = fopen("http://www.example.com/", "rb"); $contents = ''; while (!feof($handle)) { $contents .= fread($handle, 8192); } fclose($handle); ?> вот параметры чтения для 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 и выше, и работает только для локальных файлов.
|
|
|
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<$cl_user_name>/2<$cl_email>/3<$cl_author>/4<$cl_section>/5<$cl_date>/6<$cl_text_news>\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);
:)
|
|
|
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<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]"?
|
|
|
RE: Чтение определённого материала из файла (php) - 2008-05-15 00:05:37.700000
|
|
|
magistr_bender
Сообщений: 977
Оценки: 0
Присоединился: 2008-02-22 20:10:21.133333
|
я сомневаюсь что тут ктото подобной глупостью как хранение новостей в файлах занмается ))) а вообще просто через for посчитай количество строк присвоив его переменной когда будеш изхх считать одновременно загоняй в массив.. а отсортировать массив это не проблема .. потом его и выведеш через тот же for
|
|
|
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<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<count($f);$i++) {
$a = explode(';',$f[$i]);
$newsArray[$i] = $a;
}
$id = (int) $_GET['id'];
$id = $id - 1;
if (!isset($newsArray[$id])) {
// новость не найдена
}
else {
// найдена
}
проще былобы наверное с xml это делать. Там еще можно и xslt привязать…
|
|
|
RE: Чтение определённого материала из файла (php) - 2008-05-15 13:24:57.246666
|
|
|
Pavlen
Сообщений: 5
Оценки: 0
Присоединился: 2008-05-14 07:13:57.883333
|
А можешь поподробнее объяснить этот код?[&:], что например означает "(int)" … и как теперь вызывать определённый объект?
|
|
|
RE: Чтение определённого материала из файла (php) - 2008-05-15 13:56:29.576666
|
|
|
magistr_bender
Сообщений: 977
Оценки: 0
Присоединился: 2008-02-22 20:10:21.133333
|
ну я так догадываюсь что инт от integer )) тоесть там целое число)
|
|
|
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; ищем в том массиве новость с таким индексом… в общем есть/нет // мде…
|
|
|
|
|