【问题标题】:Update txt file with php用php更新txt文件
【发布时间】:2017-02-03 07:56:33
【问题描述】:

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

【问题讨论】:

  • 你有什么错误吗?
  • 无,因为此代码是正确的,但我每次单击提交时都尝试添加 1。它没有
  • 请在&lt;?php 之后添加error_reporting(E_ALL);ini_set('display_errors',1); 并检查可能的错误
  • 我打开了error_reporting,但没有任何错误,如果我必须在我正在获取的数据旁边添加“+1”字符串,你会说怎么做?

标签: php file file-handling


【解决方案1】:

使用 php 的 fwrite 而不是 file_put_content
fwritehere的PHP手册

【讨论】:

  • 可能是您的 www 文件夹或 www-data 用户对所需目录没有 R/W 权限...另外,请尝试使用 error_reporting(E_ALL) 进行调试。
  • 我打开了error_reporting,但没有任何错误,如果我必须在我正在获取的数据旁边添加“+1”字符串,你会说怎么做?
  • 据我所知,您没有发布任何数据以供进一步处理。 $data = $_POST['field1']; -> 你的第一部分没有这样的表单字段,所以它不会发布任何数据。
  • 如果您要发布 field1,则必须添加一个表单字段,例如 &lt;input type="text" name="field1"&gt;
  • 我很抱歉实际上是提交而不是 field1
【解决方案2】:

您可以使用 fwrite 方法写入文件。

$file = fopen($filename,"a+");
fwrite($file,$yourText);
fclose($file);

【讨论】:

  • 我打开了error_reporting,但没有任何错误,如果我必须在我正在获取的数据旁边添加“+1”字符串,你会说怎么做?
【解决方案3】:

您可以使用此代码更新 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>

【讨论】:

    【解决方案4】:

    看起来您正在遍历文件中的所有行以显示表单。有多少行?如果它不止一个,您将不得不跳过一些环节来更新其中一个。

    但假设它只有一行,那么当您可以(并且可能应该)直接从文件中获取值时,无需将其作为参数传递:

    $data = 1 + file_get_contents('/addcourse.txt');
    $ret = file_put_contents('/addcourse.txt', $data, FILE_APPEND | LOCK_EX);
    

    请注意,如果两个进程尝试同时更新文件,这将失败,因为第二个进程将简单地复制与第一个进程相同的值,而不是添加 2(每个进程一个),它只会加1。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多