Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.10.2016, 10:52   #1
KT82
Пользователь
 
Регистрация: 23.09.2015
Сообщений: 41
По умолчанию Сохранение данных формы в разные текстовые файлы

Помогите решить учебную задачу
Есть анкета (html форма), при ее заполнении должны создаваться текстовые файлы с данными, причем например для Иванова -1.txt, а для Петрова - 2.txt и т.д.
Есть такой сценарий, но данные из анкеты записываются в одном файле, а мне нужно, чтобы каждый раз создавался новый текстовый файл и при этом уже созданные файлы оставались без изменений.
Код:
<?php
$fp = fopen("1.txt", "a"); // Открываем файл в режиме записи 
$mytext = "".$_GET['p1']." | ".$_GET['f1']." | ".$_GET['p2']." | ".$_GET['x1']." | ".$_GET['x2']." | ".$_GET['x3']." | ".$_GET['x4']."\r\n"; // Исходная строка
$test = fwrite($fp, $mytext); // Запись в файл
if ($test) echo 'Данные в файл успешно занесены.';
else echo 'Ошибка при записи в файл.';
fclose($fp); //Закрытие файла
exit;
 ?>
KT82 вне форума Ответить с цитированием
Старый 10.10.2016, 11:01   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

А не проще БД использовать?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 10.10.2016, 11:10   #3
KT82
Пользователь
 
Регистрация: 23.09.2015
Сообщений: 41
По умолчанию

Нужно через файлы без БД. Тема "Файловая система"
KT82 вне форума Ответить с цитированием
Старый 10.10.2016, 11:37   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

поиск свободного имени файла (которое ещё не существует):
Код:
$i=1;
do {
	$filename=$i.".txt";
	$is_exist = file_exists($filename);	
	if($is_exist)
		$i++;
} while ($is_exist);
echo "free file name is $filename";
а если Иванов заполнит анкету, потом Петров заполнит анкету, а потом опять Иванов придёт заполнять анкету,
у Иванова будет два файла( 1.txt и 3.txt )?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 10.10.2016, 11:58   #5
KT82
Пользователь
 
Регистрация: 23.09.2015
Сообщений: 41
По умолчанию

да- для каждого новый файл
KT82 вне форума Ответить с цитированием
Старый 10.10.2016, 12:16   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от KT82 Посмотреть сообщение
да- для каждого новый файл
тогда берите код выше.
он простой и должен работать.


для реальной задачи, конечно, перебирать все файлики, которых может быть тысячи, не очень эффективно, поэтому, для ускорения процесса можно хранить последнее использованное значение с номером в отдельном файле. Но тогда нужно позаботиться о конфликтах с одновременным доступом к файлу (режим блокировки и ожидания).
Serge_Bliznykov вне форума Ответить с цитированием
Старый 10.10.2016, 13:13   #7
KT82
Пользователь
 
Регистрация: 23.09.2015
Сообщений: 41
По умолчанию

не работает, все равно пишет в один файл
выдает
free file name is 3.txtДанные в файл успешно занесены.
В этом коде надо что-то подредактировать? имена переменных, имя файла???
Код:
<?php
$fp = fopen("1.txt", "a"); // Открываем файл в режиме записи 
$mytext = "".$_GET['p1']." | ".$_GET['f1']." | ".$_GET['p2']." | ".$_GET['x1']." | ".$_GET['x2']." | ".$_GET['x3']." | ".$_GET['x4']."\r\n"; // Исходная строка
$test = fwrite($fp, $mytext); // Запись в файл
if ($test) echo 'Данные в файл успешно занесены.';
else echo 'Ошибка при записи в файл.';
fclose($fp); //Закрытие файла
exit;
 ?>

Последний раз редактировалось KT82; 10.10.2016 в 13:21.
KT82 вне форума Ответить с цитированием
Старый 10.10.2016, 13:53   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
В этом коде надо что-то подредактировать? имена переменных, имя файла???
Вы издеваетесь?
Вы сами этот код написали? Вы понимаете, что он делает?

да, нужно поставить цикл, который будет перебирать имена, пока не найдёт свободное имя. цикл я привёл выше.
Этого недостаточно?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 10.10.2016, 14:31   #9
KT82
Пользователь
 
Регистрация: 23.09.2015
Сообщений: 41
По умолчанию


Спасибо, достаточно, разобралась, все получилось
Вопрос закрыт
KT82 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Текстовые файлы. Проблема с вводом данных IvanNaymov Общие вопросы Delphi 5 15.12.2014 17:45
Сохранение цвета формы в ini-файлы саша40 Общие вопросы Delphi 7 23.09.2012 17:11
Слияние - сохранение в разные файлы... CyberMen Microsoft Office Word 0 23.08.2010 20:18
Добавление данных в текстовые файлы. Другие процедуры и функции для обработки текстовых файлов student2009 Помощь студентам 1 02.06.2009 08:44
Добавление данных в текстовые файлы. Другие процедуры и функции для обработки текстовых файлов student2009 Паскаль, Turbo Pascal, PascalABC.NET 5 01.06.2009 21:27