我有两个网页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。
答案 0 :(得分:6)
您使用a.php
开关在w
覆盖了您的文件。
使用a
开关追加。
$f = fopen("text.txt", "a");
参考手册:
或者,使用file_put_contents()
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'];