2012-09-12 7 views
5

いくつかの数字(フォーム内に記入)が別の.phpファイルに書き込まれる単純な注文システムを書いています)、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

file_put_contents

を試してみましたが、これは順序を記録する奇妙な方法に見えるん - あなたが考えられていますDBを使って注文を保管していますか?これは、いくつかの利点を挙げるために、記録/表示と検索を非常に簡単にします。 – ManseUK

+0

なぜPHPファイルに書きたいのですか? – Baba

+0

@ManseUKはい、私は後でそのことを検討するかもしれません。しかし、具体的には、Webショップのオーダーシステムではなく、店主が注文したサンドイッチの番号を入力するだけで、配送担当者にそれを渡すためのページや、彼の顧客。 「クライアント」は実際は私の友人なので、このステップをステップごとに実行しています。しかし、アドバイスをありがとう! – poepje

答えて

5

JSスクリプトを使用して新しいウィンドウを開きます。例えば右fclose($fh)後:

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

ありがとうございますが、そのようには動作していないようです。 "; ' – poepje

+0

ウィンドウが開きますか?そうであれば、パスを確認して正しいパスを挿入してください。 – StasGrin

+0

ウィンドウが開かず、order.phpファイル( '$ order')は同じフォルダにあります。 p.s. '

2

データベースで物事を格納することは、おそらく多くの方が簡単だろう。つまり、fopenを使用すると、ファイルを開くことになります。新しいブラウザウィンドウで書かれたファイルを開くには、新しく作成されたファイルを読み込むためのクライアント側のスクリプト(JavaScriptなど)が必要になります。

Google Javascript window.open()。

トム

+0

ありがとう、しかし、PHPではこれは不可能ですか?私は、 'fopen'がファイルを実際に開くのではなく、代わりに*ファイルにアクセスすることをちょっと戸惑わせることが分かりました。私が正しく理解していれば。 – poepje

+0

申し訳ありませんが、私はそれを少し良く説明していたはずです。ブラウザがあなたのサーバに接続すると、拡張子が.phpのものはPHPファイルとして処理され、すべての結果はプレーンなHTMLページとしてウェブブラウザに送られます。 このため、PHPを使用してクライアントコンピュータと対話することはできません。 fopen()メソッドを使用すると、サーバー上のPHPアプリケーションのファイルシステムからファイルを開いて、尊重されたフラグで読み取り/書き込み/変更できるようになります。 これは少し鮮明ですね! –

+0

私はすべてのチュートリアルやドキュメンテーションなどは、実際にブラウザで開かれると期待している間に「ファイルを開く」と呼んでいます。私はあなたの説明には言及していませんでした;)そして今、理解していますD – poepje

1

あなただけの印刷可能なページに書き込みをしたいので...あなたは例

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

関連する問題