2011-12-28 21 views
0

変更されたときに提出しなくなります。 action = 'ask.php'の場合、フォームは送信されます。 (ask.phpは現在のページと下のコードです)。 ask.phpをquestion.php(フォルダ内の別のページ)に変更すると、フォームは送信されません。どうしてこれなの?データがデータベースに置かれる前にフォームがリダイレクトされていますか?フォームは、アクションページは、私は、フォームと単純なページを(下)持って

ask.phpコード。

<?php session_start(); ?> 
     <!DOCTYPE html> 
     <html xmlns="http://www.w3.org/1999/xhtml"> 
     <head> 
     <title></title> 

     <script type='text/javascript' src='http://code.jquery.com/jquery-1.7.1.min.js'></script> 
     <script type='text/javascript' src='http://twitter.github.com/bootstrap/1.4.0/bootstrap-modal.js'></script> 
     <link rel="stylesheet" href="../css/bootstrap.css" type="text/css" media="screen" /> 

     </head> 
      <body> 
     <?php include '../css/bar.php'; ?> 
    <div id='content'> 
<?php include '../nav.php'; 
?> 



<?php 


if (isset($_POST['submit'])){ 
include '../connect.php'; 
$question=mysql_real_escape_string($_POST['question']); 
$detail=mysql_real_escape_string($_POST['detail']); 
$date=date("d M Y"); 
$time=time(); 
$user=$_SESSION['id']; 
$put=mysql_query("INSERT INTO questions VALUES ('','$question','$detail','$date','$time','$user','subject','0')"); 

$result=mysql_query("SELECT * FROM questions WHERE user='$user' AND time='$time'"); 
    while ($row = mysql_fetch_assoc($result)){ 

     $q=$row['id']; 

     } 
} 

?> 

<form method='POST' action='question.php'> //won't submit because action is question.php? 
    <p>Question:</p> 
    <p><input type='text' name='question' id='question' maxlength='200'></p> 
    <p>Add some detail (optional):</p> 
    <p><textarea id='detail' name='detail' ></textarea></p> 

    <p><input type='submit' value='submit' name='submit'></p> 
</form> 


</div> 
<?php include '../footer.php'; ?> 
</body> 

+1

あなたは、任意の既存のページに投稿することができますが、そのページが掲載さ値を処理していない場合は、何も他のページの読み込みから離れて起こりません。 – jeroen

+0

@jeroen私はquestion.php doenstプロセス場合は、データを気にしないが、私は「question.php」から「ask.php」を変更した場合でも、それがデータベースに提出されてイマイチ。データが提出された場合、フォームのアクションはなぜ重要なのでしょうか?リダイレクトする前にデータベースに入力してはいけませんか?あなたが間違っていれば解決策を投稿できますか? – kirby

+0

@jeroenは、データがデータベースに挿入される前にページがリダイレクトされているという問題ですか? – kirby

答えて

0

イェルーンは右である:

アクションページは、データベースに情報を得るために、この種の情報を含める必要があります。

パート1と2のデータを作りますデータベースに挿入する準備ができました:

$question = mysql_real_escape_string($_POST['question']); // Part 1 
$detail = mysql_real_escape_string($_POST['detail']); // Part 2 
$con = mysql_connect("server","username","password"); 
mysql_select_db("YourDatabase", $con); 

$sql="INSERT INTO YourTable (question, details) VALUES ('$question','$detail')"; 
if (!mysql_query($sql,$con)) { 
    //Some error handling here, 
    // Stay away from using die in all but development 
} 
mysql_close($con) 

preg_matchとのrmatも、データが予想される形式であることを確認するために使用します。

EDITを助け 希望!

接続するこの方法は、古くなっています! db接続にはPDOを使用してください。 いくつかのドキュメント

PDO Article

PDO php docs

+1

* DBへの*挿入時に必要な唯一の消毒は 'mysql_real_escape_string'または' intval'です。他のもの、特にHTML出力に必要なものは、DBからデータを読み込んだ後に行う必要があります。 – ThiefMaster

+0

ありがとう、私のポストを修正することを認識していませんでした。 (私はあなたがストリップタグをつけて消毒しなければならないと主張していました。 strip_tags' ''よりhtmlspecialchars'可能性が高い - - –

+0

トリムは悪い考えではなく、HTMLのエンコード出力時に行われる必要があり、それは、テキストメールとして平文の環境で使用するためのデータが無価値になりますよう。 – ThiefMaster

関連する問題