Нужно оставлять комментарии в комментариях, чтобы сохранить отдельные строки

У меня есть форма обратной связи, которая сохраняет в текстовый файл, он отлично сохраняет, но он сохраняет в одну строку. Таким образом, несколько комментариев будут сохранены в одной строке, что позволит сохранить только одну строку в блокноте, а не разделять разные комментарии на разные строки.

Вот мой HTML

<form action="feedback.php" method="post">
<table>
<tr>
<td>Email Address:</td>
<td>
<input type="text" name="email_address" value="" maxlength="100" />
</td>
</tr>
<tr>
<td>
Comments:
</td>
<td>
<textarea rows="10" cols="50" name="comments">
</textarea>
</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>
<input type="submit" value="Submit" />
</td>
</tr>
</table>
</form>

Вот мой php:

<?php
$email_address = $_POST['email_address'];
$comments = $_POST['comments'];
$myfile = fopen("feedback.txt", "a") or die("Unable to open file!");
$txt = 'Email: '.$email.'\nComments: '.$comments.'\n\n';
fwrite($myfile, $txt);
fclose($myfile);
?>

Поэтому мне нужны разные комментарии для сохранения в другую строку, а не в одну.

1

Решение

Ваш \n (новая строка) не работает, потому что вы используете апостроф ' вместо двойных кавычек ",
например, у вас есть:

$txt='Email: '.$email.'\nComments: '.$comments.'\n\n';

И вам нужно:

$txt="Email: ".$email."\nComments: ".$comments."\n\n";

РЕДАКТИРОВАТЬ

Ваш адрес электронной почты не записывается, так как вы меняете имя используемой переменной.
например У вас есть этот код:

$email_address=$_POST['email_address'];
$txt='Email: '.$email.'\nComments: '.$comments.'\n\n';

Ваш $txt переменная использует $email Однако вы устанавливаете $_POST данные в переменную $email_address,

Попробуйте этот полный код:

$email_address = $_POST['email_address'];
$comments = $_POST['comments'];
$myfile = fopen("feedback.txt", "a") or die("Unable to open file!");
$txt="Email: ".$email_address."\nComments: ".$comments."\n\n";
fwrite($myfile, $txt);
fclose($myfile);

Это простая ошибка, но вы должны попытаться привыкнуть копировать и вставлять имена переменных, а не вводить их заново. Это (помогает) избежать опечаток и т. Д., Которые в больших блоках кода & несколько файлов, становится еще большей проблемой.

И используйте свои журналы ошибок — они неоценимы при кодировании!
В этом случае PHP (таким образом, журналы) стонал бы об этом $email переменная не определена, что, в свою очередь, привело бы вас к проверке переменной, и вы, вероятно, сработали бы.

1

Другие решения

Я хотел бы использовать PHP_EOL так как он кросс-платформенный! Это означает, что он решает проблемы Unix / DOS / Mac!

(Также я думаю, что вы хотите изменить $email переменная)
Так что заявите о своей линии:

$txt='Email: '.$email.'\nComments: '.$comments.'\n\n';

Использование:

$txt = "Email: ". $email_address . PHP_EOL . "Comments: " . $comments . PHP_EOL . PHP_EOL;
0

$txt='Email: '.$email.'\nComments: '.$comments.'\n\n';

Используйте \ r \ n, чтобы создать текстовый файл новой строки, например:

$ txt = ‘Email:’. $ email. ‘\ r \ n Комментарии:’. $ comments. ‘\ r \ n’;

0

На самом деле вы можете использовать одинарные кавычки и объединять символ новой строки, но вам нужно написать такой код:

<?php
echo 'This is a test of using a newline char.' . chr(10) .
'Did it work? It should have.';
?>

Чтобы уменьшить вероятность того, что что-то пойдет не так, нужно сделать определенные проверки. Пользователь действительно отправил форму? Кроме того, мы не должны предполагать, что все данные из $ _POST безопасны, и поэтому я использую htmlentities () для адреса электронной почты и комментариев, на случай, если злонамеренный пользователь попытается вставить что-то, что он не должен.

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

<?php
if (isset($_POST) && $_POST != NULL) {
$email_address = htmlentities($_POST['email_address']);
$comments = htmlentities($_POST['comments']);
$myfile = fopen("feedback.txt", "a") or exit("Unable to open file!");
$txt="Email: $email_address\nComments:\n\n$comments\n\n";
fwrite($myfile, $txt);
fclose($myfile);
}
?>

Я заменил morbid die () на exit (), так как они оба являются эквивалентными языковыми конструкциями; они оба генерируют один и тот же код операции EXIT.

0
По вопросам рекламы [email protected]