Forum Webscript.Ru

Программирование => Perl => Тема начата: Saffi от 19 Сентября 2003, 14:12:14

Название: Помогите откорректировать скрипт.
Отправлено: Saffi от 19 Сентября 2003, 14:12:14
Помогите выставить автоматическую нумерацию строк в текстовом файле, при записи в него информации из формы:

# Записываем заявку в файл
($day,$month,$yearr) = (localtime)[3,4,5];
$yearr=$yearr+1900;
$month=$month+1;
open(BUDKA, ">>bydka.txt");
print BUDKA "~$town~$vozr~$tel~$name~$day.$month.$yearr~ ~$phone~$email~$proizv1~$model~$year~$link1~$link2~$subject~$ref~$ent~$ENV{HTTP_REFERER}~$cost~$i1~$i2~$i3~$i4~$i5~$age[1]~$stage[1]~$min_age~$min_stage\\n";
close(BUDKA);


или подскажите, пожалуйста, как это сделать...
На всякий случай - смысл в том, что при заполнении заявки на сайте, она бы под своим уникальным номером заносилась в текстовой файл (для отслеживания)...

Заранее спасибо.
Название: Помогите откорректировать скрипт.
Отправлено: ondr от 19 Сентября 2003, 14:23:06
создай еще один файл, где храни номер последней записи. С каждой новой записью увеличивай на 1 и т.д...

ps: не забудь про блокировки, и подумай про SQL
Название: Помогите откорректировать скрипт.
Отправлено: Saffi от 19 Сентября 2003, 14:46:57
а без создания еще одного файла можно?
Название: Помогите откорректировать скрипт.
Отправлено: ondr от 19 Сентября 2003, 14:56:01
Цитировать
Saffi:
а без создания еще одного файла можно?


конечно! читаешь последнюю строку файла и узнаешь последний номер.
Название: Помогите откорректировать скрипт.
Отправлено: NeoNox от 19 Сентября 2003, 15:04:08
Строка в массив.
Сколько элементов в массиве - столько и строк.
Название: Помогите откорректировать скрипт.
Отправлено: Saffi от 19 Сентября 2003, 15:04:44
:( в том-то все и дело, что именно это я и хотела спросить: как это сделать практически....
Название: Помогите откорректировать скрипт.
Отправлено: Saffi от 19 Сентября 2003, 15:06:06
это я для ondr присала...
Название: Помогите откорректировать скрипт.
Отправлено: Yaroslav от 19 Сентября 2003, 17:45:50
Цитировать
Saffi

($day,$month,$yearr) = (localtime)[3,4,5];
$yearr=$yearr+1900;
$month=$month+1;
open (FILE, "bydka.txt");
@file=;
$num=@file;

open(BUDKA, ">>bydka.txt");
print BUDKA "$num~$town~$vozr~$tel~$name~$day.$month.$yearr~ ~$phone~$email~$proizv1~$model~$year~$link1~$link2
~$subject~$ref~$ent~$ENV{HTTP_REFERER}~$cost~$i1~$
i2~$i3~$i4~$i5~$age[1]~$stage[1]~$min_age~$min_sta
ge\\n";
close(BUDKA);
Название: Помогите откорректировать скрипт.
Отправлено: Saffi от 22 Сентября 2003, 11:28:13
Yaroslav
Спасибо - работает, но есть нюанс... файл *.txt постоянно чистится, чтобы не слишком много весить и если делать таким образом, то нумерация будет постоянно прыгать, а она должна идти нарастающим итогом...
Новая строка записывается в конец файла.
Помогите плз.
Название: Помогите откорректировать скрипт.
Отправлено: Phoinix от 22 Сентября 2003, 11:31:48
Saffi
Для этого я использовал функцию localtime(), и имя файла давал:
гггг-мм-дд.txt
Т.е. при изменении дня на сервере, имя твоего файла тоже будет меняться, только вот желательно своевременно переписывать себе эти файлы с сервера...
Название: Помогите откорректировать скрипт.
Отправлено: Yaroslav от 07 Октября 2003, 16:18:56
Цитировать
Saffi:
Спасибо - работает, но есть нюанс... файл *.txt постоянно чистится, чтобы не слишком много весить и если делать таким образом, то нумерация будет постоянно прыгать, а она должна идти нарастающим итогом...

есть 2 варианта:
1. читать последнюю строчку из файла, разбить ее и к нумерации добавить 1, что в дальнейшем и вставлять в новую строчку
2. создать новый файл и хранить там текущюю нумерацию.
Соответственно открыть файл с нумерацией, увеличить значение и его использовать для файла данных

правка: вот тормоз, про это уже писали, ну да ладно