Запись данных в файл при помощи цикла.

Mermaid

Новичок
Запись данных в файл при помощи цикла.

Здравствуйте!
У меня возникла проблема при создании цикла. Я догадываюсь, что она наверняка легко решаемая, но в учебнике ответа я не нашла.
Суть такова.
Я заношу данные в форму
<?php ...
Наименование 1 <input type=\"text\" name=\"name0\" size=\"15\" value=\"\"><p>
...
Наименование 6 <input type=\"text\" name=\"name5\" size=\"15\" value=\"\"><p>
...?>
на следующей странице мне надо записать данные в файл.
Я пытаюсь сделать так
<?php
$fd=fopen("user_page.txt","w");
for ($i=0;$i<7;$i++){
$user_row1=$name{$i}."|"."\n".
fwrite($fd,$user_row1);
}
fclose($fd);
?>
но цикл почему то не работает.

Подскажите, пожалуйста, как сделать это правильно, или дайте ссылку на информацию.
Заранее благодарю.
 

Фанат

oncle terrible
Команда форума
учебники все писались при царе Горохе.
вместо $name{$i} надо писать $_POST[name.$i]
и вообще. что лежит в переменной $name?

однако, это может и не быть решением проблемы.
а решением может быть только выяснение конкретного места ,в котором скрипт перестаёт работать, как надо.
 

Mermaid

Новичок
В переменной лежит текст

$user_row1 - строка с пользовательскими данными, которая потом будет записана в файл (текстовый)

=$name{$i} - переменная, из которой будут взяты данные,
т.е. должно быть так
$name0|
$name1|
...
$name5

."|"."\n". - добавляет в строку вертикальную черту и переводит курсор на новую строку

Фанат
Спасибо, попробую прямо сейчас.

-~{}~ 04.12.05 01:50:

Не получилось

В общем, я хочу автоматизировать процесс

$fd=fopen("user_page.txt","w");
$user_row1=$name0."|"."\n".
$name1."|"."\n".
...
$name5."|"."\n";
fwrite($fd,$user_row1);
fclose($fd);

Может быть, это надо сделать вообще как-то по другому?

Дело в том, что текстовый файл создается, и информация в него вписывается, но кроме этой информации, добавились цифры, взятые неизвестно откуда(
 

Фанат

oncle terrible
Команда форума
может быть, сначала в файл ничего не записывать, а выводить на экран?
и потихоньку разобраться с цифрами?
к примеру - посмотреть глазками, а в каком именно месте строки они появляются? и потом посмотреть в этом месте на пхп код?
а?

а , самое главное - делать это ЗАПУСКАЯ скрипт, а не копирую его на форум. пользы гораздо больше будет
 

SelenIT

IT-лунатик :)
Mermaid
Цифры взялись из ф-ции [m]fwrite[/m], которая, в соответствии с документацией
возвращает количество записанных байтов или FALSE в случае ошибки.
Наверное, перед ней все же была нужна точка с запятой, а не точка? ;)
 

Mermaid

Новичок
texrdcom
Понимаешь, в чем дело. Проблема у меня, наверняка, пустячная по сравнению с глобальным потеплением, но тем не менее, я надеюсь, что есть люди, которые знают побольше моего и для которых не будет "запаркой мозгов" помочь мне.

А так, знаешь, и в реале бывает, когда спрашиваешь: "Знаешь программирование?" - "Ну да, я продвинутый". А задаешь конкретный вопрос - упс, оказывается новичок ;)

Продвинутый новичок, не томи, сообщи название нормального учебника)

Фанат
Попробовала еще раз. Усё получилось.
Спасибо :)

-~{}~ 04.12.05 02:23:

SelenIT

Ага, это я тоже подправила
 

SelenIT

IT-лунатик :)
Может быть, это надо сделать вообще как-то по другому?
Вообще типовое решение для такой задачи - сразу именовать поля формы как элементы массива: name[1], name[2], ..., name[7]. А в скрипте обращаться к ним как $_POST['name'][1] и т.п., или перебирать их через foreach ($_POST['name'] as $i => $name)...
 

Mermaid

Новичок
Спасибо!
Так вот как это правильно пишется!
У меня первая мысль была сделать массив. Это бы облегчило задачу увеличения заполняемых строк, ведь в этом случае можно продолжать просто name[], так ведь;)?
Еще один "чайниковский" вопрос до кучи)
Если я делаю массив, его надо как-то обозначать в файле с формой? т.е. написать что-то типа
$name=array()?
 

Mermaid

Новичок
т.е. достаточно переписать код как
Наименование 1 <input type=\"text\" name=\"name[0]\" size=\"15\" value=\"\"><p>

и при обработке переменные будут автоматически определены как элементы массива?
 

SelenIT

IT-лунатик :)
Именно так.
Причем для этого не обязательно выводить HTML через echo/print.
 

Mermaid

Новичок
Всем большое спасибо!

Надеюсь, что могу рассчитывать на вашу помощь и в дальнейшем!
 

Фанат

oncle terrible
Команда форума
т.е. достаточно переписать код как
дело не в том, что достаточно, а что не долстаточно.

а в том, что следвет отличать программу на пхп от кода хтмл.
массивы, как и вообще переменные, у тебя могут быть только в программе.
а в хтмл никаких массивов и переменных нету. есть только теги и их параметры
 

Mermaid

Новичок
Ну это то я, к счастью, различаю ;)
Все вышесказанное, естественно, относилось к кодам ПХП)
 

Фанат

oncle terrible
Команда форума
тогда непонятно, о чём шла речь здесь:
Еще один "чайниковский" вопрос до кучи)
Если я делаю массив, его надо как-то обозначать в файле с формой? т.е. написать что-то типа
$name=array()?
можно не отвечать. Но просто любопытно. что за массив имелся в виду в файле с формой
 

Mermaid

Новичок
Имелся ввиду создаваемый массив.
Т.е. надо ли перед
Наименование 1 <input type=\"text\" name=\"name[0]\" size=\"15\" value=\"\"><p>

печатать строку типа
$name=array()
 

SelenIT

IT-лунатик :)
Mermaid
Рекомендую побыстрее стереть последнее сообщение - как-то не вяжется оно с предпоследним ;). А на сам вопрос 3 поста назад исчерпывающе ответил Фанат.
 
Сверху