2013-02-03 120 views
0

我的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> 

有沒有辦法做到這一點?

回答

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> 
+0

非常感謝!我已經嘗試過了,它對我來說工作得很好! brf ...我已經被卡住了,這是合乎邏輯的!當然他們必須採用相同的形式!再次感謝! – user1249723

+0

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

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']爲了簡化檢查)

+0

你好!感謝您的快速回答!我只是嘗試進行更改,但是資源管理器顯示這一點:致命錯誤:調用未定義的函數:file_put_contents()位於/homez.95/iloftyou/www/syntagma/editor/editor.php 40行 – user1249723

+0

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

+0

是的,你是對的!我忘了改變!這是一個我不再使用它的域名!謝謝您的幫助! – user1249723