[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: запись в файл данных из формы
Ket
Данные из формы необходимо записать в текстовый файл, который создается программой. Данные: Вопрос и несколько вариантов ответов, количество вариантов ответов пользователь задает сам. Вопросов может быть много.

формат записи данных в файле:
Вопрос1$ответ1;ответ2;...
ВопросN$ответ1;ответ2;....


<Html>
<body bgcolor=#99cccc text=green><center>
<form name="new_test" method="GET"">
<p>Enter number of answers<br>
<input type=text name="val"><br>
<input type=submit value="Enter &gt &gt">
<p> Enter question
<p><input type=text name="quest">
<p>Populate the gaps with answers<br>


<?php

if (isset($_GET['val']))
{for($i=0; $i < $_GET['val']; $i++)
{$ans[]="answ".$i;
echo "<p> <input type=text name=$ans[$i] value=$ans[$i]>";
}
}
echo '<p><input type="submit" value="Создать файл">
<input type="hidden" name="add" value="yes"></form>
</body></html>';

if ($_GET['add'])
{
$f = fopen("aaa.txt", "w");
$text=$_GET['quest'].'$';
fwrite($f, $text);
for($i=0; $i < 10; $i++)

$text1=$ans[$i].";";

fwrite($f, $text1);}

?>

после нажатия на кнопку " создать файл" записывается только данные из поля "вопрос", а данные из полей ответов - нет. :(

помогите советом, в чем ошибка? заранее благодарна :)




Спустя 1 час, 9 минут, 9 секунд (18.01.2009 - 01:36) FatCat написал(а):
Цитата (Ket @ 18.01.2009 - 00:27)
$f = fopen("aaa.txt", "w");
$text=$_GET['quest'].'$';
fwrite($f, $text);
for($i=0; $i < 10; $i++)

$text1=$ans[$i].";";

fwrite($f, $text1);


Попробуйте сначала собрать вопрос и все ответы в одну переменную, а потом уже писать файл:
PHP
$text=$_GET['quest'].'$';
for(
$i=0; $i < 10; $i++)$text.=$ans[$i].";";
$f = fopen("aaa.txt", "w");
fwrite($f, $text);
fclose($f);

Спустя 12 часов, 43 минуты, 8 секунд (18.01.2009 - 14:19) Ket написал(а):
Поменяла, в файле результат: question$;;;;;;;;;;

Спустя 1 час, 21 минута (18.01.2009 - 15:40) FatCat написал(а):
Значит $ans[$i] пустая.

Спустя 2 часа, 19 минут, 33 секунды (18.01.2009 - 18:00) Guest написал(а):
Я понимаю, что пустая. а почему?

Спустя 2 минуты, 4 секунды (18.01.2009 - 18:02) ket написал(а):
т.е. нет, она не должна быть пустой. на экран выводится, но в файл не записывается

Спустя 26 минут, 39 секунд (18.01.2009 - 18:28) sergeiss написал(а):
Вот эта строка - ошибочная!!!

PHP
$text=$_GET['quest'].'$';


После знака $ надо что-то поставить, наверное? Или удалить этот знак, если он не нужен.

И тут нету никакой проверки на то, что $_GET['quest'] был реально получен. Да и вообще - что-то выводится, но не проверется наличие исходных данных.

Спустя 2 часа, 11 минут, 42 секунды (18.01.2009 - 20:40) Adamant написал(а):
PHP
<?php
for 
($i = 0; ; $i++) {
    if (isset($_POST['answ' . $i])) {
        $ans_arr[] = $_POST['answ' . $i];
    } else {
        break;
    }
}

if (isset($_POST['add'])) {
    $f = fopen('aaa.txt', "w+");
    if (!$f) {
        exit ("Не могу создать файл aaa.txt "); 
    
}
    fwrite($f, $_POST['quest'] . '$');
    fwrite($f, implode(';', $ans_arr) . "\n");
    
    fclose
($f);
    header('Location: ' . $_SERVER['PHP_SELF']);
    exit;
}
?>
<html>
  <body bgcolor=#99cccc text=green>
    <center>
  
      <form name="new_test" method="post"> 
        <p>Enter number of answers
        <br>
        <input type=text name="val" value="<?php echo (isset($_POST['val'])) ? $_POST['val'] : '';?>">
        <br>
        <input type=submit value="Enter &gt &gt">
        <p>
        Enter question
        <p><input type=text name="quest" value="<?php echo (isset($_POST['quest'])) ? $_POST['quest'] : '';?>">
        <p>Populate the gaps with answers
        <br>
<?php
if 
(isset($_POST['val'])) {
    for ($i = 0; $i < $_POST['val']; $i++) {
        $ans[] = "answ" . $i;
        echo "<p> <input type=text name=" . $ans[$i] . " value=" . $ans[$i]. "> \n";
    }
}
?>
      <p><input type="submit" name="add" value="Создать файл"> 
    </form> 
  </body>
</html>



Если нужно, чтобы файл не создавался снова (стирая все записанное в него ранее) измените атрибут 'w+' на 'a+'.

В вашем коде, ответы которые юзер вводил, не записывались бы в файл, а писалось бы вот это $ans[] ="answ" .
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.