2012-09-12 28 views
5

我在哪裏寫幾個號碼(如表格內填寫)被寫入到另一個PHP文件一個簡單的訂單系統(可能是html的還),使用fopen函數。這工作正常,但寫入文件後,我希望瀏覽器實際打開該寫入文件,最好在新的瀏覽器窗口中。這樣我的客戶可以使用它來打印,作爲發票使用等。打開寫過它(與FOPEN)後在新的瀏覽器窗口中的文件

現在我仍然是一個菜鳥在PHP的理由,並沒有經驗與使用fopen。但是,無論在哪裏,我都在尋找教程等,據說fopen打開(或寫入當然)文件,但它不會像我所經歷的那樣。它似乎允許訪問指定的文件進行寫入和讀取,而不是實際顯示新寫入的頁面。

爲了避免混淆:我不想打開像這裏的其他問題上的SO狀態的鏈接。

我的代碼:

<form action="" method="post"> 
    <input type="text" id="amountTuna" name="numberTuna" value="0"/> 
    <input type="text" id="amountCheese" name="numberCheese" value="0"/> 
    <input name="send" id="send" type="submit" value="Post order" /> 
</form> 

<?php 
if (array_key_exists('send', $_POST)) { 
    $order = "order.php"; 
    $fh = fopen($order, 'w') or die("can't open file");//file handler 

    fwrite($fh, "Tuna sandwiches: " . stripslashes($_POST['numberTuna'])); 
    fwrite($fh, "Cheese sandwiches: " . stripslashes($_POST['numberCheese'])); 

    $fh = fopen($factuur, 'r'); 
    $fileip = fread($fh, filesize($factuur)); 
    fclose($fh); 
} 
?> 

嘗試不同fopen參數,如'w''r''r+'等似乎沒有任何區別。刪除fclose($fh)似乎也沒有任何區別。

+0

這似乎並記錄訂單的一種奇怪的方式 - 你有沒有考慮使用數據庫來存儲訂單?這將使事情變得更容易記錄/顯示和搜索以指出幾個優點 – ManseUK

+0

爲什麼要寫入PHP文件? – Baba

+0

@ManseUK好的,我可能會考慮稍後再做。但具體而言,它不是一種網上商店類型的訂單系統,而是店主只需填寫訂購三明治的編號,並希望在一個頁面上將其提供給送貨員,和/或可能將其用作發票他的顧客。 '客戶'實際上是我的朋友,所以我們一步一步來做這件事:)。感謝您的建議,但! – poepje

回答

5

使用JS腳本打開新窗口。例如fclose($fh)之後:

echo "<script>window.open($order, '_blank'); window.focus();</script>"; 
+0

謝謝,但似乎沒有那樣工作。無論如果我這樣做'回聲 「」;' – poepje

+0

但打開窗口?如果是這樣 - 只需檢查路徑並插入正確的路徑。 – StasGrin

+0

沒有窗口打開 - 並且order.php文件('$ order')位於同一個文件夾中。附:將'

2

存儲在數據庫中的東西很可能會輕鬆很多。

也就是說,使用的fopen是打開文件本身,打開文件寫在一個新的瀏覽器窗口將需要一些客戶端腳本(即JavaScript)的加載新創建的文件。

谷歌的Javascript window.open()。

湯姆

+0

謝謝,但在PHP中這是不可能的?我發現有點讓人困惑的是,'fopen'並不真正打開文件,而是*訪問文件*。如果我理解正確。 – poepje

+0

對不起,我應該更好地解釋一下。當瀏覽器連接到服務器時,任何帶.php擴展名的東西都會作爲PHP文件處理,所有結果將作爲普通的HTML頁面發送到Web瀏覽器。 因此,您無法使用PHP與客戶端計算機進行交互。使用fopen()方法從服務器上的PHP應用程序的文件系統打開文件,以便能夠使用受尊敬的標誌進行讀/寫/修改。 希望有一點更清楚! –

+0

我的意思是每個教程,文檔等都稱它爲'打開文件',而我期望它實際上在瀏覽器中打開,我不是指你的解釋;)我現在明白了,我會保留它記住:D – poepje

1

既然你只想寫一個可打印頁面..你試過file_put_contents

if (isset($_POST['send'])) { 
    $file = "test.html"; 
    $data = "Tuna sandwiches: " . stripslashes($_POST['numberTuna']) . "<br>"; 
    $data .= "Cheese sandwiches: " . stripslashes($_POST['numberCheese']) . "<br>"; 
    touch($file); 
    file_put_contents($file, $data); 
} 
+0

祝你好運不是像我用fopen一樣嗎? – poepje

+0

大的區別'file_put_contents' ='fopen + fwrite + fclose' – Baba

+0

哦,所以實際上是一個快捷方式?我會記住更大的代碼:) – poepje

相關問題