保存更改多个txt

时间:2013-02-03 11:16:11

标签: php html forms button save

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

这是我的代码:

<?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>

有什么办法吗?

2 个答案:

答案 0 :(得分:2)

您需要将<textarea>元素置于同一<form>下。这可以使用您提供的代码完成,但您可能需要进行一些样式更改,因为其中一个.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>

答案 1 :(得分:1)

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

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

这样的事情应该足够了:

<?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']以简化)