无法将 $_POST 从 <form> 保存到 .html

Can´t save $_POST from <form> into .html

我尝试将 $_POST<form> 保存到 .txt 文件中。如果我点击提交按钮,我的代码将只保存 $date 变量,而不是 $date & $hour.

这是我在 "form.php"

中的表格
<form method="post" action="save.php" id="formID">
 <input type="text" name="Name" placeholder="Name" id="nameFieldID">
  <input type="text" name="Hour" placeholder="Hour" id="hourFieldID">
   <input type="submit" name="" value="" id="submitButton">
    </form>

这是我"save.php"

中的代码
<?php
setlocale(LC_ALL, "de_DE.utf8");
date_default_timezone_set('Europe/Berlin');
error_reporting(E_ALL);

$date = date("d.M Y");
$time = date("H:i:s");
$name = $_POST["Name"];
$hour = $_POST["Hour"];

$file = "nameAndHour.txt";
$handle = fopen($file, "a");
$details = fread($handle, filesize($file));

fclose($handle);

$handle = fopen("nameAndHour.txt", "a");
fwrite($handle, $detail);
fwrite($handle, $date, "\t");
fwrite($handle, $time, "\t");
fwrite($handle, $name, "\t");
fwrite($handle, $hour);
fclose($handle);

include('form.php');
?>

任何人都可以帮助我获取我的 .txt 文件中的 $_POST 变量吗?我做错了什么?

您刚刚犯了一个语法错误。

改变

setlocale(LC_ALL, ""de_DE.utf8");

setlocale(LC_ALL, "de_DE.utf8");

save.php 第 2 行出现语法错误。删除额外的 ",最好在编码前休息和放松,这样你就可以避免这些错误

使用

setlocale(LC_ALL, "de_DE.utf8");

而不是

setlocale(LC_ALL, ""de_DE.utf8");

首先,在尝试写入之前确保(文本)文件存在并且具有适当的写入权限,否则您将收到以下警告:

Warning: fread(): Length parameter must be greater than 0

  • 旁注:参考我的脚注。

然后您需要用点 . "\t".

替换 , "\t" 的所有逗号

这就是您收到以下警告的原因:

Warning: fwrite() expects parameter 3 to be long, string given

重写:

<?php 
setlocale(LC_ALL, "de_DE.utf8");
date_default_timezone_set('Europe/Berlin');
error_reporting(E_ALL);

$date = date("d.M Y");
$time = date("H:i:s");
$name = $_POST["Name"];
$hour = $_POST["Hour"];

$file = "nameAndHour.txt";
$handle = fopen($file, "a");
$detail = fread($handle, filesize($file));

fclose($handle);

$handle = fopen("nameAndHour.txt", "a");
fwrite($handle, $detail);
fwrite($handle, $date . "\t");
fwrite($handle, $time . "\t");
fwrite($handle, $name . "\t");
fwrite($handle, $hour);

fclose($handle);

include('form.php');
?>

脚注:

您还可以使用 file_exists() 和条件语句来检查文件是否存在。

示例:

if (file_exists("nameAndHour.txt")) {
// execute code
...
}

else{
   echo "File does not exist.";
}

另一件事。关于你的最后一行:

fwrite($handle, $hour);

你应该为它添加一个"\n",以便在最后一个条目之后插入一个回车return,否则你的文件将被写成一长行。

fwrite($handle, $hour . "\n");

"Is there also a way to put the details in a table? Can I use HTML?"

编辑:(快速 HTML table 示例)

要在 HTML table 中写入数据,您可以使用这样的方法:

$table1 = "<table>";
$table2 = "</table>";

$tr1 = "<tr>";
$tr2 = "</tr>";

$td1 = "<td>";
$td2 = "</td>";

fwrite($handle, $table1 . "\n");

fwrite($handle, $tr1 . "\n");
fwrite($handle, $td1 . "\n");

fwrite($handle, $date . "\t");
fwrite($handle, $time . "\t");
fwrite($handle, $name . "\t");
fwrite($handle, $hour . "\n");

fwrite($handle, $tr2 . "\n");
fwrite($handle, $td2 . "\n");

fwrite($handle, $table2 . "\n");

会写出来,并作为例子:

<table>
<tr>
<td>
28.May 2015 21:41:35    data1a  data1b
</tr>
</td>
</table>
  • 但是您需要对此进行试验。我不能再详细说明了,因为它不是原始问题的一部分。