使用php

时间:2015-05-06 18:31:36

标签: php

我有两个网页a.php和b.php。 texbox中提交的值将写入文本文件。

a.php:

 <html>

<?php

if (isset($_POST['Submit1'])) {

 $aa = $_POST['alpha'];

 $f = fopen("text.txt", "w");

 fwrite($f,$aa."\n");

 }
 else

 {
 $f= fopen("text.txt",'r');

  while ((!feof($f)) && ($found == 0)) {

  list($aa)=fscanf($f,"%f[^\n]");

   }

   }

  fclose($f);

   ?>
   <form action="a.php" name="Calculation" method="post">

   Alphabet: <INPUT TYPE ="TEXT" id="alph" Name "alpha"          VALUE="<?PHP print $aa; ?>">

   <Input Type = "Submit" Name = "Submit1" Value ="Save Parameters">

    </form>

    </html>

和b.php是:

<!DOCTYPE html>
<html>

<?php

if (isset($_POST['Submit1'])) {

$bb = $_POST['beta'];

 file_put_contents("text.txt", $bb."\n" , FILE_APPEND);

 }

 else

 {

 $f= fopen("text.txt",'r');

 while ((!feof($f)) && ($found == 0)) {

 list($aa)=fscanf($f,"%f[^\n]");
  list($bb)=fscanf($f,"%f");
 }
 }

 fclose($f);

  ?>
 <form action="b.php" name="Calculation" method="post">

 Alphabet: <INPUT TYPE ="TEXT" id="betaa" Name ="beta" size="5"     VALUE="<?PHP print $bb; ?>">

 <Input Type = "Submit" Name = "Submit1" Value ="Save Parameters">

  </form>

  </html>

如果我输入a.php文本框中的第一个值和b.php文本框中的第二个值,则代码可以正常工作,文本框中的值将写入文本文件。例如,如果我在a.php的文本框中输入aa,并在b.php的文本框中输入bb,我会得到

AA BB

在我的文本文件中。但是,如果我回到我的a.php文件并在其文本框中添加一个新值,我将松开bb。有没有办法只更改文本框第一行的值并将bb保留在文本框的第二行?  。问题是如果我添加一个新值,我将丢失我的b.php脚本的值。我不想添加文本文件中的行数。我想知道是否有办法用cc重写aa。

3 个答案:

答案 0 :(得分:6)

您使用a.php开关在w覆盖了您的文件。

使用a开关追加。

$f = fopen("text.txt", "a");

参考手册:

或者,使用file_put_contents()

执行其他文件(b.php)
file_put_contents("text.txt", $bb."\n" , FILE_APPEND);
                                         ^^^^^^^^^^^

它做同样的事情。

修改

  

“我有一个网页,其中有几个需要填写的文本框,当点击提交按钮时,这些值会保存在文本文件中。然后还有另一个网页也有几个文本框,需要填写,并且必须将值添加到同一文本文件中。

     

因此,如果按下提交按钮后的用户决定更改a.php中一个文本框的值,然后再次点击提交,我将丢失bb.php中的所有信息,除非我向我添加更多行带有新信息的文本文件。“

另一种方法是使用两个单独的和不同的文件名,同时保留现有的内容。

这是一个示例,并连接文件:

<?php 
$file1 = file_get_contents('file1.txt');
$file2 = file_get_contents('file2.txt');

$show_all = $file1 . $file2;

echo $show_all;
  • 我在此示例中使用了file_get_contents(),因为我不知道您目前是如何在网页中显示内容的。

旁注:

如果您想在两者之间添加换行符,请使用<br>

$show_all = $file1 . "<br>" . $file2;

或只是一个简单的空间:

$show_all = $file1 . " " . $file2;

答案 1 :(得分:1)

要仅更改文件的某些特定行,您可以使用:

$file = "text.txt";
$aa = $_POST['alpha'];
$rows_of_file = file($file); // put your file in an array line by line
$rows_of_file[0] = $aa; // 0 indicate the first line of the file
file_put_contents($file, implode($rows_of_file)); //rewrite the content with the new changes

所以你可以在 cc 中更改 aa ,而 bb 保持不变

答案 2 :(得分:1)

您可以使用json函数独立操作变量:

$f = json_decode(file_get_contents("tt.txt"));
$f['aa']= $_POST['alpha'];
file_put_contents("tt.txt", json_encode($f));

并在第二个文件中更改为bb。只读

$f = json_decode(file_get_contents("tt.txt"));
echo $f['aa'].' '.$f['bb'];