Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Сохранение данных у файл


Автор: Muna 20.8.2008, 22:19
Значит так, есть програма обработчик html формы, нужно что бы она сохраняла даные в файл. Сохранять должна такие значение, в той же последовательности:  дата   ,  $_POST['name']   ,   $_POST['imja']   ,   $_POST['batk'] ,  $result . Подскажите пожалуйста как написать эту функцию на php.

Код

<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0//EN">
<HTML>
<HEAD>
      <TITLE>Протокол</TITLE>
<script language="JavaScript">
<!--
dayarray=new Array("неділя","понеділок","вівторок","середа","четвер","п'ятниця","субота")
montharray=new Array ("січня","лютого","березня","квітня","травня","червня","липня","серпня","вересня", "жовтня","листопада","грудня")
ndata=new Date();
day=dayarray[ndata.getDay()];
month=montharray[ndata.getMonth()];
date=ndata.getDate();
year=ndata.getYear();
hours = ndata.getHours();
mins = ndata.getMinutes();
secs = ndata.getSeconds();
if (hours < 10) {hours = "0" + hours }
if (mins < 10) {mins = "0" + mins }
if (secs < 10) {secs = "0" + secs }
datastr=(date +" "+ month +" "+ year +" року ")
-->
</script>
</HEAD>
<BODY>

<h2 ALIGN="CENTER"> Долинське ЛВУМГ</h2>
<p><h2 ALIGN="CENTER">Протокол № ______</h2></p>
<p><h2 ALIGN="CENTER">засідання комісії з перевірки знань з питань охорони праці</h2></p>
<font face="verdana,arial" size="4" color="#000000">
<script language="JavaScript">
<!--
document.write(datastr);
-->

</script>
<script LANGUAGE="JavaScript">

function varitext(text){
text=document
print(text)
}
</SCRIPT>



<?
    if($_SERVER['REQUEST_METHOD'] == "POST")
    {
        $result = 0;
        
        if($_POST['GRS'] == "Voynyliv1")
    {

        if($_POST['tes1'] == "test1_1")
            $result++;
        if($_POST['tes2'] == "test2_2")
            $result++;
        if($_POST['tes3'] == "test3_2")
            $result++;
        if($_POST['tes4'] == "test4_1")
            $result++;
        if($_POST['tes5'] == "test5_3")
            $result++;
    }


        
    }
?>


<p>Комісія у складі:</p>
<p>Голови: інженера з ОП Лабанціва М. Т.</p>
<p>і членів комісії: начальника ЛЕС Туревича Р. А.</p>
<p>створена на підставі наказу від "____" ____________ р. № __________</p>
<p>перевірила знання __________________________________________________________________</p>
<p><H5 ALIGN="CENTER">(найменування нормативних актів про охорону праці,</H5></p>
<p>____________________________________________________________________________________</p>
<p><H5 ALIGN="CENTER">за якими проводиться перевірка знань)</H5></p>

<TABLE BORDER=2 COLS=2 align=center bordercolor=black>
<TR>
<TH>№ п/п</TH>
<TH>№ Прізвище, ім'я, по - батькові працівника</TH>
<TH>Посада, професія, розряд</TH>
<TH>Цех, дільниця, виробництво</TH>
<TH>Знає/не знає</TH>
<TH>Примітки</TH>
</TR>
<TR>
<TD>
1.
</TD>
<TD>
<?
if($_SERVER['REQUEST_METHOD'] == "POST")
{
        
        print $_POST['name'].'<br/>';
    print $_POST['imja'].'<br/>';
        print $_POST['batk'].'<br/>';



}
?>


</TD>


<TD>

<?
if($_SERVER['REQUEST_METHOD'] == "POST")
{
            if($_POST['vyb'] == "operator_4rozrjad")
            print 'оператор 4-го розряду';

    if($_POST['vyb'] == "operator_5rozrjad")
    {print 'оператор 5-го розряду';}

}
?>




</TD>
<TD>
ЛЕС
</TD>
<TD>
<?
if($_SERVER['REQUEST_METHOD'] == "POST")
{
    if($result>=3)
        {
            print 'знає';
        
        }
        
        if($result<3)
        {
            print 'не знає';
           
        }       



}
?>



</TD>
<TD>
</TD>
</TR>
</Table>
<p>Голова комісії:       ____________           інженер з ОП Лабанців М. Т.</p>
<p>Члени комісії:        ____________           начальник ЛЕС Туревич Р. А.</p>

<INPUT NAME="print" TYPE="button" VALUE="Роздрукувати" ONCLICK="varitext()">

<?
        if($result== 0)
        {
            print "<script>alert('На жаль, ви не справились з тестом! Ви не відповіли правильно на жодне запитання');</script>";
        }
        

        if($result== 1)
        {
            print "<script>alert('На жаль, ви не справились з тестом! Ви відповіли правильно на одне запитання');</script>";
        }

        if($result==2)
        {
            print "<script>alert('На жаль, ви не справились з тестом! Ви відповіли правильно на два запитання');</script>";
        }

        if($result==3)
        {
            print "<script>alert('Вітаємо ви пройшли тест! Ви відповіли правильно на 3 запитання');</script>";
        }
        if($result==4)
        {
            print "<script>alert('Вітаємо ви пройшли тест! Ви відповіли правильно на 4 запитання');</script>";
        }

        if($result==5)
        {
            print "<script>alert('Вітаємо ви пройшли тест! Ви відповіли правильно на усі запитання');</script>";
        }
   
?>


</BODY>
</HTML>

  


Не могу разобраться в синтаксе этой функции, помогите пожалуйста, только если можна с даным примером, не понимаю если данных много как их запихивать в файл. Буду ооочень благодарна!

Автор: Feldmarschall 20.8.2008, 22:25
Может, лучше сначала разобраться с небольшим примером?

Автор: Muna 20.8.2008, 22:30
Я бы с радостью, только и с ним не совсем получается! 

Автор: Feldmarschall 20.8.2008, 22:38
а что именно не получается? какой пример, в чем проявляется "не получается"?

Автор: awers 20.8.2008, 22:38
смотря какая версия пхп, с какой целью сохранять ... начиная с банального file_put_contents

Автор: Muna 20.8.2008, 22:59
Нужно просто сохранить эти данные в той тоследовательности. 
мне кажется что должно быть что вроде этого
Код

$today = date("Y-m-d");
$fh = fopen ( " file. txt ", "a");
fwrite($fh, $today,  $_POST['name'],   $_POST['imja'],   $_POST['batk'], $result);
fclose($fh);


Это правильно? Просто здесь у меня не работает апач! Посоветуйде если что не правильно! Я буду очень благодарна

Автор: bars80080 20.8.2008, 23:12
Код

$today = date("Y-m-d");
$fh = fopen ( "file.txt", "w");
$text = $today.';',$_POST['name'].';'.$_POST['imja'].';'.$_POST['batk'].';'.$result;
fwrite($fh, $text);
fclose($fh);


точно

Автор: Feldmarschall 20.8.2008, 23:14
как минимум, у тебя врядли на диске есть файл, имя которого начинается и оканчивается пробелом.
но вообще, писать программы теоретически - занятие малоосмысленное.

Автор: Muna 20.8.2008, 23:21
Спасибо большое! Завтра обезательно испробую!

Автор: theworldcreator 20.8.2008, 23:59
Обратите внимание на то, что bars80080 написал код, который ПЕРЕПИСЫВАЕТ файл. То есть в файле будут не добавляться строки, а писаться поверх. Разница вот в этой строке:
Код

$fh = fopen ( "file.txt", "w");

А точнее в режиме открытия файла. Вот мануал: http://ru2.php.net/fopen
Там есть таблица с режимами.
>> 'w'   Открывает файл только для записи; помещает указатель в начало файла и обрезает файл до нулевой длинны. Если файл не существует - пробует его создать. 
>> 'a' Открывает файл только для записи; помещает указатель в конец файла. Если файл не существует - пытается его создать. 

Если используешь 'a', советую ставить в конце символ перевода строки("\n").
P.S. в коде Барса есть опечатка - вместо точки стоит запятая, и вместо разделителя ',' используется ';'   , но это мелочи

Автор: Muna 21.8.2008, 12:43
 Вот опробывала всё работает, но когда добавила "\n" показівает такую ошибку :
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in C:\apache\rozrobka\www\obrobka.php on line 200

Вот код
Код

$today = date("Y-m-d/H:i:s");
$fh = fopen ( "file.txt", "a");
$text = $today.';'.$_POST['name'].';'.$_POST['imja'].';'.$_POST['batk'].';'.$result;
fwrite($fh, $text"\n");
fclose($fh);


 подскажите в чём дело? Пожалуйста!!!

Автор: theworldcreator 21.8.2008, 12:52
>> syntax error
Следующий код будет работать нормально:
Код

$text = $start."finish";

Следующий код вызовет ошибку:
Код

$text = $start"finish";

Разница в наличие точки.

Автор: Muna 21.8.2008, 13:03
Ой, я что то не понимаю а где мне нужно то точку поставить вроди все есть?
без "\n" работает а с ним не хочет. 

Автор: bars80080 21.8.2008, 13:27
в строке четвёртой твоего примера у тебя $text"\n" - не хватает точки. 

а почему собственно ты не пришила енту "\n" в конец третьей строки? там ведь как раз и собирается строка под запись

Автор: Muna 21.8.2008, 14:19
всё исправила! только в текстовом файле новая запись не начинается с новой строки а раздеяется кубиком!
 Это так и должно быть?

Автор: Feldmarschall 21.8.2008, 14:28
это у тебя программа такая, которая кубики показывает.
но чтобы её угодить, вместо \n можно писать \r\n

Автор: Muna 21.8.2008, 14:29
Ой, это я б локноте смотрела! А так всё впрорядке!
Спасибо всем за помощ!

Ещё малеенький вопрос!smile Подскажите а можно сделать так чтоб когда даные с HTML формы попадали на обробку её заполнение было не возможное! Ну чтоб нельзья было снова нажать кнопку назад и всё переписать?

Автор: skyboy 21.8.2008, 14:39

M
skyboy
Один топик — один вопрос!

Пожалуйста, ознакомьтесь с правилами форума.




Тема закрыта. Создайте по одной теме для каждого интересующего вас вопроса и не забывайте указывать язык программирования в заголовке.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)