2011-06-28 46 views
5

基本的には、ユーザーがサイトに入り、メッセージと名前を入力するだけで、結果が同じページに表示され、別のユーザーが来たとき再度、以前のユーザーからの結果がそこにあるはずで、何かが表示されるだけでリストに追加する必要があります。同じページに出力する簡単なhtml/phpフォーム

現在私が持っている:

<form id="form1" name="form1" method="post" action=""> 
<label>Please type in a message 
<input type="text" name="msg" id="msg" /> 
</label> 
<label>and your name 
<input type="text" name="pin" id="name" /> 
</label> 

<p> 
<label>Submit 
<input type="submit" name="submit" id="submit" value="Submit" /> 
</label> 
</p> 
</form> 

<?php 
$msg = $_POST[msg]; 
$name = $_POST[name]; 

?> 
<br /> 
<?php echo "$msg"?> 
<?php echo "$name"?> 

しかしとき、別のレコードが前の1が失われ、入力している...あなたが続く、または保存する必要があり、事前

+0

基本的にどこかに永久にデータを保存する必要があります。PHPとMySQLの使い方 –

+2

Fyiは、連想配列インデックスへの適切な方法を使用します。 '$ _POST [msg]'は、PHPの定義されていない定数の振る舞いのためにのみ機能します。誰かが "msg"という名前の定数を宣言した場合( "msg"と異なる値)、コードは機能しなくなります。適切な方法は '$ _POST ['msg'];' – cypher

答えて

7

これは、必要な操作を行う必要があります。 posts.txtから以前の投稿を読み込み、現在の投稿を追加し、投稿を表示して保存します。 posts.txtが存在し、適切な権限を持っていることを確認する必要があります。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Untitled Document</title> 
</head> 

<body> 
<form id="form1" name="form1" method="post" action=""> 
<label>Please type in a message 
<input type="text" name="msg" id="msg" /> 
</label> 
<label>and your name 
<input type="text" name="name" id="name" /> 
</label> 

<p> 
<label>Submit 
<input type="submit" name="submit" id="submit" value="Submit" /> 
</label> 
</p> 
</form> 

<?php 
    $msg = $_POST["msg"]; 
    $name = $_POST["name"]; 
    $posts = file_get_contents("posts.txt"); 
    $posts = "$msg - $name\n" . $posts; 
    file_put_contents("posts.txt", $posts); 
    echo $posts; 
?> 

</body> 
</html> 
+0

ブリリアント!これはまさに私が望んでいたものです!非常にありがとうございます – khalid

0

おかげで、以前のセッションのデータ1つのオプションはフラットファイルを使用して、エントリをテキストファイルに保存することです。トラフィックが非常に少ない非常に小さなWebサイトでは、これは問題ありません。基本的に、誰かが何かを投稿するときには、ローカルファイルの内容だけを前置します。

もう1つのオプションは、MySQLなどのデータベースオプションを調べることです。この方法では、各メッセージ/名前の組み合わせをローカルデータベースに挿入し、すべてのレコード(または最後のn番目)を取り出してコメントフォームの下に表示します。

+0

ありがとう、私は単一のファイルオプションが最も適していると思う...あなたはそれにも方向性を指摘することができますか?どうやって? – khalid

+0

@khalid PHPで[ファイル編集機能](http://php.net/manual/en/ref.filesystem.php)を見て、あなた自身の解決策を試してみることをお勧めしますが、私はちょうどこの無料のオプションを偶然見つけたいくつかのプロジェクトがあります:http://www.inverudio.com/guestbook/ – Sampson

0

最終投稿のみを表示します。他のユーザーがあなたが投稿したものを実際に見ることを可能にすることは決してありません。これを一定期間保存するには、ファイルまたはデータベースを使用する必要があります。

0

これらのメッセージをデータベースシステムに保存する必要があります。 MySQLは良い選択ですが、設定するのには数回の単純な行以上です。 reading the manualから開始できます。これにより、必要なものすべてが提供されるはずです。

0

私はあなたをフォローしているのか分かりません。テキストボックスに以前のタイプの値を設定しますか?

<input type="text" value="<?php (isset($_POST[msg])) ? $_POST[msg] : "" ?>" name="msg" id="msg" /> 
+0

いいえ、しかし、ページの下部に結果が保存され、新しい結果が入力された、前の1つは、ページの上に最新のものを下に行く必要があります – khalid

0

カップルの事:

$first = $_POST['msg']; 
$second = $_POST['pin']; 

あなたはそれを変数に保存するために、ポスト引数の周りの人々の単一引用符を必要とします。

第2に、データを保存するには、テキストファイルであろうとMySQLデータベースであろうと、どこかに保存する必要があります。投稿データは、フォームが転記されたときにのみ存在します。その後、それは破壊されます。

おそらく最も簡単なことは、テキストファイル(これは単純なアプリケーションの場合)に追加することです。データベースが必要とされる場所です

This should get you started.

3

。単純なSQLデータベースを作成するか、ユーザーがメッセージを投稿するたびに追加されるファイルを作成するだけです。 ページが読み込まれるたびに、最初に以前に保存されたデータをロードしてからさらに進めなければなりません。

+0

受理された回答はテキスト*をデータベース*として使用しています。 OPが「posts1.txt」、「posts2.txt」、「posts3.txt」と想像すると、あなたのソリューションはより良いでしょう。 –

関連する問題