保存更改多个txt

Posted

技术标签:

【中文标题】保存更改多个txt【英文标题】:save changes multiple txt 【发布时间】:2013-02-03 11:16:10 【问题描述】:

我的 php 代码有一些问题。我想加载两个.txt 以使用浏览器(chrome,即任何)进行编辑,并通过一个按钮保存更改。到现在为止,我可以用多个按钮来完成,但那是有风险的,因为如果你忘记保存一个更改就会丢失它。

这是我的代码:

<?php
$fn = "../txt/example.txt";

if (isset($_POST['agenda1a']))

    $content = stripslashes($_POST['agenda1a']);
    $fp = fopen($fn,"w") or die ("Error");
    fputs($fp,$content);
    fclose($fp) or die ("Error");

?>
  <div class="editor">
    <div class="editor_titulo">Agenda 1</div>
    <form action="<?php echo $_SERVER["PHP_SELF"] ?>" method="post">
      <textarea name="agenda1a" cols="55" rows="25" class="editor_texto"><?php readfile($fn); ?>
</textarea>
      <input name="submit" type="submit" class="btn_entrar" id="btn_guardar" value="  Guardar este menú  ">
    </form>
  </div>

  <?php
$fn = "../txt/example2.txt";

if (isset($_POST['agenda1b']))

    $content = stripslashes($_POST['agenda1b']);
    $fp = fopen($fn,"w") or die ("Error");
    fputs($fp,$content);
    fclose($fp) or die ("Error");

?>
  <div class="editor">
    <div class="editor_titulo">Agenda 2</div>
    <form action="<?php echo $_SERVER["PHP_SELF"] ?>" method="post">
      <textarea name="agenda1b" cols="55" rows="25" class="editor_texto"><?php readfile($fn); ?>
</textarea>
      <input type="submit" class="btn_entrar" id="btn_guardar" value="  Guardar este menú  ">
    </form>
  </div>

有什么办法吗?

【问题讨论】:

【参考方案1】:

您需要将&lt;textarea&gt; 元素放在同一个&lt;form&gt; 下。这可以使用您提供的代码来完成,但您可能需要进行一些样式更改,因为 .editor 元素之一已被删除。

<?php
$fn1 = "../txt/example.txt";

if (isset($_POST['agenda1a']))

    $content = stripslashes($_POST['agenda1a']);
    $fp = fopen($fn,"w") or die ("Error");
    fputs($fp,$content);
    fclose($fp) or die ("Error");


$fn2 = "../txt/example2.txt";

if (isset($_POST['agenda1b']))

    $content = stripslashes($_POST['agenda1b']);
    $fp = fopen($fn,"w") or die ("Error");
    fputs($fp,$content);
    fclose($fp) or die ("Error");

?>
  <div class="editor">
    <div class="editor_titulo">Agenda 1</div>
    <form action="<?php echo $_SERVER["PHP_SELF"] ?>" method="post">
      <textarea name="agenda1a" cols="55" rows="25" class="editor_texto"><?php readfile($fn1); ?>
</textarea>

    <div class="editor_titulo">Agenda 2</div>
      <textarea name="agenda1b" cols="55" rows="25" class="editor_texto"><?php readfile($fn2); ?>
</textarea>
      <input type="submit" class="btn_entrar" id="btn_guardar" value="  Guardar este menú  ">
    </form>
  </div>

【讨论】:

非常感谢!我已经尝试过了,对我来说效果很好! brf ...我被困住了,这是合乎逻辑的!当然,它们必须是相同的形式!再次感谢! (是的,我终于看到我必须将 fn 更改为 fn1 和 fn2,但是休息很好!!!:D)【参考方案2】:

当然,将所有字段(&lt;textarea&gt; 元素)放入单个 &lt;form&gt; 标记中,并有一个保存按钮。

完成此操作后,您可以合并代码来保存这两个文件。请注意,您一次只能从一个&lt;form&gt; 获取发布的值,这就是需要合并代码的原因。

这样就足够了:

<?php
$file_one = "../txt/example.txt";
$file_two = "../txt/example2.txt";

$file_one_content = file_get_contents($file_one);
$file_two_content = file_get_contents($file_two);

if (isset($_POST['submit']))

    // Save the files
    $file_one_content = stripslashes($_POST['agenda1a']);
    file_put_contents($file_one, $file_one_content);
    $file_two_content = stripslashes($_POST['agenda1b']);
    file_put_contents($file_one, $file_two_content);

?>

<form action="<?php echo $_SERVER["PHP_SELF"] ?>" method="post">
  <div class="editor">
    <div class="editor_titulo">Agenda 1</div>
      <textarea name="agenda1a" cols="55" rows="25" class="editor_texto"><?php echo $file_one_content ?></textarea>
      <input name="submit" type="submit" class="btn_entrar" id="btn_guardar" value="  Guardar este menú  ">
  </div>
  <div class="editor">
    <div class="editor_titulo">Agenda 2</div>
      <textarea name="agenda1b" cols="55" rows="25" class="editor_texto"><?php echo $file_two_content ?></textarea>
      <input type="submit" class="btn_entrar" id="btn_guardar" value="  Guardar este menú  ">
  </div>
</form>

(注意:上面的代码使用file_get_contents/file_put_contents,因此您可以在1行代码中打开/保存,为简单起见仅检查$_POST['submit']

【讨论】:

你!谢谢你的快速回答!!我刚刚尝试进行您建议的更改,但资源管理器显示:致命错误:调用未定义函数:第 40 行 /homez.95/iloftyou/www/syntagma/editor/editor.php 中的 file_put_contents() 跨度> @user1249723 file_put_contents 是 PHP5 中的一个方法,所以你不必使用 fopen 等。你在 PHP4 上吗?我真的建议你立即升级。 是的,你是对的!我忘记改了!!啊,这是一个 oooooold 域,我不再使用它了!感谢您的帮助!

以上是关于保存更改多个txt的主要内容,如果未能解决你的问题,请参考以下文章

Python tkinter 保存和更改 txt 文件

如何将更改保存到现有的 excel 文件,而不是创建包含更改的 txt 文件?

我的代码有啥问题,尝试保存更改的 txt 文件,但没有任何反应

C# 将多个文本框保存到一个 .txt 文件中

如何使用 SaveFileDialog 将多个标签和文本框(9 个标签和 9 个文本框)保存为 .txt?

将来自 html 网页的多个输入的数据保存为 .txt(本地)并将它们加载回相同的位置