Запись ответов в текстовый файл php

274
01 июня 2018, 07:10

подскажите пожалуйста, что нужно добавить в коде, чтобы в результате анкетирования ответы записывались в текстовый файл?

<?php 
if(isset($_POST['firstname']) && isset($_POST['eduform']) &&  
    isset($_POST['comment']) && isset($_POST['courses']))  
{ 
    $name = htmlentities($_POST['firstname']); 
    $secondname = htmlentities($_POST['secondname']); 
    $eduform = htmlentities($_POST['eduform']); 
    $hostel = "нет"; 
    if(isset($_POST['hostel'])) $hostel = "да"; 
    $comment = htmlentities($_POST['text']); 
    $courses = $_POST['courses']; 
    $output =" 
    <html> 
    <head> 
    <title>Анкетные данные</title> 
    </head> 
    <style> 
    body{ 
    background: #C5D2DB; 
    font-family: Verdana, Geneva, sans-serif; 
    font-size: 14px; 
    font-weight: bold; 
    text-align: center; 
} 
 
ul{ 
    list-style-type: none; 
    text-align: center; 
} 
 
container{ 
    padding-top: 20px; 
} 
 </style> 
    <body> 
    <container> 
    Вас зовут: $name<br /> 
    Ваша фамилия: $secondname<br /> 
    Форма обучения: $eduform<br /> 
    Требуется общежитие: $hostel<br /> 
    Ваш комментарий: $comment<br /> 
    Выбранный факультет: 
    <ul>"; 
    foreach($courses as $item) 
        $output.="<li>" . htmlentities($item) . "</li>"; 
    $output.="</ul></container></body></html>"; 
    echo $output; 
} 
else 
{    
    echo "Введенные данные некорректны"; 
} 
?>
<!DOCTYPE html> 
<html lang="ru"> 
<head> 
	<meta charset="UTF-8"> 
	<title>punkt_2</title> 
	<link rel="stylesheet" href="style.css"> 
</head> 
<body> 
	<div class="container"> 
	<h2>Анкета первокурсника</h2> 
<form action="input.php" method="POST"> 
<p>Введите имя:<br>  
<input type="text" name="firstname" /></p> 
<p>Введите фамилию:<br>  
<input type="text" name="secondname" /></p> 
<p>Форма обучения: <br>  
<input type="radio" name="eduform" value="очно"/>очно <br> 
<input type="radio" name="eduform" value="заочно"/>заочно </p> 
<p>Требуется общежитие:<br> 
<input type="checkbox" name="hostel" />Да</p> 
<p>Выберите факультет: <br> 
<select name="courses[]" size="5" multiple="multiple"> 
    <option value="Факультет экономической информатики">ЭИ</option> 
    <option value="Факультет экономики и права">ЭП</option> 
    <option value="Факультет менеджмента и маркетинга">МиМ</option> 
    <option value="Факультет международных экономических отношений">МЭО</option> 
    <option value="Факультет консалтинга и международного бизнеса">КиМБ</option> 
    <option value="Финансовый факультет">ФФ</option> 
    <option value="ФАКУЛЬТЕТ подготовки иностранных граждан">ФПИГ</option> 
</select></p> 
<p>Краткий комментарий: <br> 
<textarea name="comment" maxlength="200"></textarea></p> 
<input type="submit" value="Отправить"> 
</form> 
</div> 
</body> 
</html>

Answer 1

Доброе утро.

Используйте file_put_contents(); Не забывайте о правах на запись для файла.

foreach($courses as $item){
    $output.="<li>" . htmlentities($item) . "</li>";
    $output.="</ul></container></body></html>";
    echo $output;
}
file_put_contents('file.txt', $output);

p.s. Хотя Ваш весь код надо переписать. Но если это первые шаги, то...

Answer 2

Я не уверен что txt самое то, но вот как вариант для csv

Еще для записи нужно будет добавить права то есть

sudo chown -R www-data:www-data someFile

Ну или создать отдельную папку чтобы не назначать полностью права на всю текущую папку или же создать группу

if(isset($_POST['firstname']) && isset($_POST['eduform']) && 
    isset($_POST['comment']) && isset($_POST['courses'])) 
{
    $hostel = "нет";
    if(isset($_POST['hostel'])) $hostel = "да";
    $comment = isset($_POST['text']) ? $_POST['text'] : 'комментария нету';
    $filename = 'tes.csv';
    $file_exist_bool = file_exists($filename); 
    // проверка на наличия файла в последующем два раза будет использоваться
    $method = 'w'; // опредяляем метод записи
    if( $file_exist_bool ) 
        $method = 'a+'; // в случае если файл существует, метод дозавписи в файл
    $file = fopen($filename, $method);
    if( !$file_exist_bool ) 
        fputcsv($file, array('firstname', 'secondname', 'eduform', 'hostel', 'text', 'courses'));
        // если файла нету, то записать header csv файла
    $data = array(
        array(  
            $_POST['firstname'], 
            $_POST['secondname'], 
            $_POST['eduform'], 
            $_POST['hostel'], 
            $comment, implode("&", $_POST['courses']) // здесь разбил так, как нужен string, 
            // то есть можно выбрать несколько факультетов 
            // по вопросу неправильно, но это уже сам сиправляй 
        )
    );
    foreach ($data as $row)
    {
        fputcsv($file, $row);
        // сама запись
    }
    fclose($file);

}
else
{   
    echo "Введенные данные некорректны";
}

И как результат будет

firstname,secondname,eduform,hostel,text,courses
Имя,Фамилия,очно,on,"комментария нету","Факультет экономики и права"

А дальше пользуешься как xml, редактируешь, смотришь

READ ALSO
Запись в БД данных с динамических форм

Запись в БД данных с динамических форм

Имеется форма с динамическим добавления полейПодскажите пожалуйста как правильно записать данные с динамических полей в БД

242
Передать значение в php

Передать значение в php

ребят подскажите пожалуйстаЕсть код

241
Ошибка при обновлении компосера

Ошибка при обновлении компосера

подскажите почему я не могу обновить расширения компосера, локально я установил

215
Как сделать скриншот области экрана на js?

Как сделать скриншот области экрана на js?

Мне нужно сделать снимок экрана по нажатию на кнопку

254