保存更改多个文本文件

问题描述:

我的PHP代码中存在一些问题。我想加载两个.txt用浏览器(铬,即任何)编辑,并通过一个按钮保存更改。到现在为止,我可以通过多个按钮来实现,但是如果您忘记保存一次丢失的更改,那就是冒险的缘故。保存更改多个文本文件

这里是我的代码:

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

有没有办法做到这一点?

您需要将<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> 
+0

非常感谢!我已经尝试过了,它对我来说工作得很好! brf ...我已经被卡住了,这是合乎逻辑的!当然他们必须采用相同的形式!再次感谢! – user1249723

+0

(yei,最后我看到我不得不将fn换成fn1和fn2,但休息很棒!!!!:D) – user1249723

当然,把所有的字段(<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']为了简化检查)

+0

你好!感谢您的快速回答!我只是尝试进行更改,但是资源管理器显示这一点:致命错误:调用未定义的函数:file_put_contents()位于/homez.95/iloftyou/www/syntagma/editor/editor.php 40行 – user1249723

+0

@ user1249723'file_put_contents'是PHP5中的一种方法,所以你不必使用'fopen'等。你在PHP4上吗?我真的建议你立即升级。 –

+0

是的,你是对的!我忘了改变!这是一个我不再使用它的域名!谢谢您的帮助! – user1249723