我已经编写了一个HTML表单来收集订单的用户输入,还有一个PHP程序,用于在按下Submit按钮时接收订单。此外,我还要更新存储在Web服务器上的文本文件以反映订单商品。任何人都可以解释我如何更新存储在服务器上的文本文件?感谢..
答案 0 :(得分:2)
您应该锁定文件以防止文件被多个用户发送的并发更新破坏。在flock
函数文档中有一个锁定和写入文件的完整示例:http://es.php.net/manual/en/function.flock.php
或者,为了省去麻烦,请使用正确的数据库。 SQLite易于使用,无需设置:http://es.php.net/manual/en/book.sqlite3.php
答案 1 :(得分:1)
使用fwrite
:
$fp = fopen('data.txt', 'w');
fwrite($fp, $yourData);
fclose($fp);
<强>更新强>
如果我理解你,你需要这样的东西:
if(!empty($noOfApples)){
$fp = fopen('data.txt', 'w+');
$count=fread($fp,filesize('data.txt'));
$count+=$noOfApples;
fwrite($fp, $count);
fclose($fp);
}
答案 2 :(得分:0)
最简单的方法是保留表单字段的数组结构,通过序列化转储$ _POST。
在用户点击提交后编写示例:
file_put_contents('myfile.txt', serialize( $_POST ) );
阅读示例:
$data = unserialize(file_get_contents('myfile.txt'));
表单字段看起来像:
<input type="text" name="myfield" value="<?php echo $data['myfield'] ?>" />
或者,你可以在技术上做$ _POST = unseralize(file_get_contents(...但它显然会覆盖用户可能输入的任何内容。
答案 3 :(得分:0)
只需存储用户输入,该键应该是输入名称和应该是内容用户输入的值。通过这种方式,您可以在数组中获取用户输入。
然后,您可以将键值对转换为具有serialize
函数的字符串。现在,您可以使用以下代码将字符串存储到文件中:
$fp = fopen('user{$id}.txt', 'w');//replace the {$id} with user id
fwrite($fp, $dateFromUser);
fclose($fp);
当您想要显示用户输入时,只需读取文件并unserialize
从文件中获取的字符串,并使用相同的键填充输入数据,该数据存储在数组中。当您想要更新用户输入时,请再次执行上述过程。