Вопрос по php4: "Запись в файл"

Все о программировании под *nix
Anonymous

Вопрос по php4: "Запись в файл"

Сообщение Anonymous »

Значит так. Есть скрипт который записывает сообщения в текстовый файл.
Но он записывает сообщения сверху вниз.

Вопрос: как подправить код так, что бы сообщения записывались одно над другим (т.е. каждое последующее дописывалось над предыдущим)?

Anonymous

Сообщение Anonymous »

Неужели никто php не знает?! вопрос-то ламерский... я еще только начал баловаться. :? Может еще чего надо пояснить :?:

Аватара пользователя
invox
Неотъемлемая часть форума
Сообщения: 395
Зарегистрирован: 12 сен 2002, 17:53
Откуда: Минск
Контактная информация:

Сообщение invox »

Читай документацию.

resource fopen(string $filename, string $mode [, int $use_include_path [, resource $zcontext]])

среди "list of possible modes for fopen() using mode" указан r+ - Open for reading and writing; place the file pointer at the beginning of the file.

Anonymous

Сообщение Anonymous »

Вещьдоки почитал, нашел кое чего, но.. r+ спрва обнуляет файл, а потом пишет в него.. с w и w+ ситуация такая же... а как бы без обнуления? или никак? :?

Aleksey Kondratenko
Неотъемлемая часть форума
Сообщения: 250
Зарегистрирован: 12 авг 2003, 03:55
Контактная информация:

Сообщение Aleksey Kondratenko »

Вставить текст в начало файла автоматически не выйдет.
Сделай новый файл. Запиши в него новую запись. Потом
допиши старый. И атомарно через rename замени старый
файл на новый.

П.С. А зачем вставлять данные в начало ?

Аватара пользователя
Llama
Неотъемлемая часть форума
Сообщения: 9749
Зарегистрирован: 06 фев 2002, 11:40
Откуда: Менск

Сообщение Llama »

Может я что-то путаю и работать не будет, но на perl я бв сделал так:


@file = <INFILE>;
@file = ("stroka", @file);
close INFILE;
print OUTFILE, @file;

Смысл надеюсь ясен, как открывать файлы - сам додумаешься.
Опыт растет прямо пропорционально выведенному из строя оборудованию

Аватара пользователя
ZAR
Заглянувший
Сообщения: 10
Зарегистрирован: 06 июн 2004, 17:01
Откуда: Минск
Контактная информация:

Сообщение ZAR »

Вот лови ->
Все режимы работы с файлами:
r - только чтение.
r+ - чтение и запись, данные записываются в начало файла поверх уже имеющихся там.
w - только запись. Существующее содержимое файла уничтожается. Если файл не существует, то он создается.
w+ - аналогично w, но также возможно чтение файла.
a - только запись, данные дописываются в конец файла, если файл не существует, то он создается.
a+ - аналогично a, но также чтение файла.

Аватара пользователя
Andrej Ramaszeuski
Неотъемлемая часть форума
Сообщения: 507
Зарегистрирован: 28 ноя 2003, 11:42
Откуда: Pardubice, CZ
Контактная информация:

Сообщение Andrej Ramaszeuski »

Llama писал(а):Может я что-то путаю и работать не будет, но на perl я бв сделал так:

@file = <INFILE>;
@file = ("stroka", @file);
close INFILE;
print OUTFILE, @file;



Совсем плохо. Если б у меня какой-нибудь юзер так начал чудить - убил бы без предупреждения. И кто вас учил пихать в память целые файлы ради такой глупости? В курсе, каким образом так тривиальный процесс будет жрать память? Файл, совершенно спокойно может быть и несколькогиговый... Жужжим, пердим, наполняем swap и падаем :)
Linux is like a wigwam: no Windows, no Gates and Apache inside.

Аватара пользователя
Andrej Ramaszeuski
Неотъемлемая часть форума
Сообщения: 507
Зарегистрирован: 28 ноя 2003, 11:42
Откуда: Pardubice, CZ
Контактная информация:

Сообщение Andrej Ramaszeuski »

Aleksey Kondratenko писал(а):П.С. А зачем вставлять данные в начало ?


Перед тем, как научится использовать для хранения данных, которые бы могли быть структурироыванными, базы данных, каждый экспериментирует с текстовыми файлами. Имея при этом большие или меньшие проблемы и изобретая лестничный велосипед там, где где ездит лифт. В начало файла вставляется запись при написании первого guestbook, чтобы последние записи были наверху :) Могу поспорить на литр пива, что пишется кусок html :)

Hello world!
Linux is like a wigwam: no Windows, no Gates and Apache inside.

Anonymous

Сообщение Anonymous »

user писал(а):Вещьдоки почитал, нашел кое чего, но.. r+ спрва обнуляет файл, а потом пишет в него.. с w и w+ ситуация такая же... а как бы без обнуления? или никак? :?



Возможно я чего-то недопонял, но по-моему, речь идет о дозаписи тектста в конец файла.
Просто открываешь его с ключом a+. Содержимое не стирается, информация доьбавляется в конец.

Аватара пользователя
poligraph
Неотъемлемая часть форума
Сообщения: 304
Зарегистрирован: 15 мар 2004, 18:17

Сообщение poligraph »

Andrej Ramaszeuski писал(а):
Aleksey Kondratenko писал(а):П.С. А зачем вставлять данные в начало ?


Перед тем, как научится использовать для хранения данных, которые бы могли быть структурироыванными, базы данных, каждый экспериментирует с текстовыми файлами. Имея при этом большие или меньшие проблемы и изобретая лестничный велосипед там, где где ездит лифт. В начало файла вставляется запись при написании первого guestbook, чтобы последние записи были наверху :) Могу поспорить на литр пива, что пишется кусок html :)

Hello world!


Да, действительно! Пользуйтесь БД!!!!

Anonymous

Сообщение Anonymous »

Даже удивляюсь уважаемые, что вы решили поднять эту тему :D. С тех пор я уже даже успел полюбить Perl :D

Andrej Ramaszeuski,
Да, ты абсолютно прав, это были мои попытки сделать гостевую/ее_подобие так, что бы новые сообщения дописывались сверху :)

Dr.Gigabit,
Просто внимательнее перечитай первый пост ;)

poligraph,
>> Да, действительно! Пользуйтесь БД!!!!
К великому сожалению человек пишущий на PHP "Хеллоу ворлд", еще не на столько крут, что бы использовать БД :roll:

ps С Режимами работы с файлами я уже давно поковырялся -- того что нужно среди них нет.
pps Надо пробовать ковырять mySQL попутно что ли :drink: :)

Аватара пользователя
poligraph
Неотъемлемая часть форума
Сообщения: 304
Зарегистрирован: 15 мар 2004, 18:17

Сообщение poligraph »

user, дык ANSI SQL же совсем простой!!!

Anonymous

Сообщение Anonymous »

user писал(а):Dr.Gigabit,
Просто внимательнее перечитай первый пост ;)


Задача не самая тривиальная, и при написания гостевухи от файлов лучше отказаться на мой взгляд. Ибо встает вопрос о совместном доступе:)

Ответить