2011-06-23 4 views
0

私は送信ボタン付きの簡単なフォーム(下記)を持っています。私は、ユーザーがテキストボックスに入力できるようにしようとしています。その後、投稿をクリックするとページが更新され、divに入力した内容がエコーアウトされます。ユーザーが入力するデータは、エコーされる前にデータベースに格納されます。問題は、submitをクリックすると、入力がimmediatlyに表示されないということです。私はそれを表示するためにリフレッシュをクリックしなければならない時、私のブラウザは私にポップアップ(サファリ)データを再送するように要求します。これにより、重複したデータがDBに挿入されます。私はjavascriptを使う必要があると感じているし、fadeInを使ってよりエレガントにすることもできますが、それをどうやって行うのか分かりません。私は、ユーザーのテキストを取得し、それをmysql DBに挿入するためにjavascriptを使用する方法があるかどうかを尋ねていると思います。サブミットが1または0(好ましくは)リフレッシュでクリックされた後にも表示されます。おかげ送信時にajax表示のテキスト

は、ここに私のコードです:

<form method='POST' action='index.php'> 
<input type='text' name='text' id='text'> 
<input type ='submit' value='submit' name='submit'> 
</form> 

<?php 
$input=$_POST['text']; 
$put=mysql_query("INSERT INTO table VALUES ('$input')"); 

echo "<div id='area'>"; 
//i connect to the DB and echo out the data here 

echo "</div>"; 

?> 
+0

は、あなたが実行している完全で正確なコードです。なぜなら、「index.php」がスクリプトであると仮定して何も変わっていないからです。しかし、データを表示するためにリフレッシュする必要がある理由は、データが挿入されなかった最初のことかもしれません。あなたのPHPコードで、$ inputがどこに割り当てられたのか、2行目で 'echo $ input;'を実行しようとしましたか? – Abhay

答えて

0

あなたが実際のHTMLコードだと、あなたがそれを見ていない理由は、HTMLをあなたの前にロードされていることである

<?php 
if (isset($_POST['text'])) 
{ 
    $input = mysql_real_escape_string($_POST['text']); 

    $put=mysql_query("INSERT INTO table VALUES ('$input')"); //At this point the info has been put inside the DB 

    echo "<div id='area'>"; 
    //i connect to the DB and echo out the data here 
    echo mysql_query("SELECT * FROM table"); 
    echo "</div>"; 
} 
?> 

<form method='POST' action='index.php'> 
<input type='text' name='text' id='text'> 
<input type ='submit' value='submit' name='submit'> 
</form> 

このようにあなたがコードしている修正しまう前に、私は、PHP文を置きます私は思う。だから、私はすべてのSQLのtreatementが行われ、一度それはあなたのindex.phpをrecalされ、そこにデータベースからの情報をクエリするphpページを行うだろう。

+0

@dtbarneあなたはデータベースから情報を取っていないのが安全な方法ですか?データが適切にデータベースにプッシュされるようになるのはなぜですか? (私のpersonnale情報の質問:)) – PRacicot

0

あなたのコードが持つ脆弱であるSQLインジェクション攻撃をさておき、標準的な方法は、バックの形があった場所へのリダイレクトでPOSTに対応するためです。あなたの場合、それはSELECT from tableを実行するページになります。

+0

@kotepillar index.phpはそのページです – user780483

0

ここでAJAXを使用する必要はありません。あなたはデータを挿入した後 DB から選択するようにしてください

  1. :ちょうどあなたが次のいずれかを実行していることを確認してください。
  2. これはif ($_SERVER['REQUEST_METHOD'] == 'POST')です。追加のSQLクエリを実行するのではなく、すでに知っているのでPOSTedの値を表示するだけです。

コードサンプルのサイドノート。 magic_quotesが有効になっていない場合は、SQLインジェクションの影響を受けやすいので、クエリーで使用する前にユーザー入力を適切にエスケープしてください。

関連する問題