用php更新txt文件

时间:2017-02-03 07:56:33

标签: php file file-handling

我正在尝试更新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');
  }

4 个答案:

答案 0 :(得分:0)

使用php的fwrite代替file_put_content 请参阅fwrite here

的PHP手册

答案 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。