我正在尝试更新txt文件中的内容,以便每按一次寄存器+1就会添加一个特定数据。到目前为止它显示数据和注册按钮但是当我点击它时,它不会添加一个。我如何实现这一目标?
<!DOCTYPE html>
<html>
<body>
<?php
$myfile = fopen("addcourse.txt", "a+") or die("Unable to open file!");
// Output one line until end-of-file
while(!feof($myfile)) {
echo fgets($myfile) . '<form id="h1" class="rounded" action="final.php" target="" method="post"/>
<input type="submit" name="submit" class="button" value="Register" /> </form>' "<br>";
}
fclose($myfile);
?>
</body>
</html>
<?php
if(isset($_POST['submit'])) {
$data = $_POST['field1'];
$ret = file_put_contents('/addcourse.txt', $data, FILE_APPEND | LOCK_EX);
if($ret === false) {
die('There was an error writing this file');
}
else {
echo "$ret bytes written to file";
}
}
else {
die('no post data to process');
}
答案 0 :(得分:0)
使用php的fwrite
代替file_put_content
请参阅fwrite
here
答案 1 :(得分:0)
您可以使用fwrite方法写入文件。
$file = fopen($filename,"a+");
fwrite($file,$yourText);
fclose($file);
答案 2 :(得分:0)
您可以使用此代码更新txt文件
<?php
$fn = "file.txt";
$file = fopen($fn, "a+");
$size = filesize($fn);
if($_POST['addition']) fwrite($file, $_POST['addition']);
$text = fread($file, $size);
fclose($file);
?>
<form action="<?=$PHP_SELF?>" method="post">
<textarea><?=$text?></textarea><br/>
<input type="text" name="addition"/>
<input type="submit"/>
</form>
答案 3 :(得分:0)
看起来您正在遍历文件中的所有行以显示表单。有几行?如果不止一个,那么您将不得不跳过一些箍以仅更新其中之一。
但是假设它只是一行,那么当您可以(可能应该)直接从文件中获取值时,就无需将其作为参数传递:
$data = 1 + file_get_contents('/addcourse.txt');
$ret = file_put_contents('/addcourse.txt', $data, FILE_APPEND | LOCK_EX);
请注意,如果两个进程试图同时更新文件,则此操作将失败,因为第二个进程将简单地复制与第一个进程相同的值,而不是添加2(每个进程一个)加1。