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

时间:2015-05-28 18:02:14

标签: php html forms post fwrite

我尝试将$_POST<form>保存到.txt文件中。如果我点击提交按钮,我的代码将只保存$date变量,而不是$date&amp; $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个变量吗?我做错了什么?

3 个答案:

答案 0 :(得分:1)

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

  

警告:fread():长度参数必须大于0

  • 旁注:查阅我的脚注。

然后,您需要使用点, "\t"替换. "\t"的所有逗号。

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

  

警告:fwrite()要求参数3为long,给定字符串

<强>重写:

<?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",以便在最后一个条目后插入一个回车符,否则你的文件将被写成一个长行。

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

&#34;还有办法将细节放在表格中吗?我可以使用HTML吗?&#34;

编辑(一个快速的HTML表格示例)

要在HTML表格中写入数据,您可以使用以下内容:

$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>
  • 但你需要尝试一下。我不能再详细说明,因为它不是原始问题的一部分。

答案 1 :(得分:0)

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

更改

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

setlocale(LC_ALL, "de_DE.utf8");

答案 2 :(得分:0)

save.php第2行的syntx错误。删除额外的“并且最好在编码之前休息并放松,这样你就可以避免这些错误

使用

setlocale(LC_ALL, "de_DE.utf8");

而不是

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