2012-04-03 6 views
0

ここにページがあり、前のページのすべての詳細を受け取ってこのページのデータベースに投稿します。今私は複数の試験があると言うことができます(2つの試験を言うことができます)。最初の試験の作成を終えてフォームを自分自身に提出すると、私は突然、以下のコードの$ _POSTすべてに気付きました。私の最初の試験の後、私の$ _POSTのすべてにこれらの通知が届くのはなぜですか?すべての通知では、その前に$ _POSTを持つ索引はすべて未定義であると述べています。あなたは、あなたがコードの将来の部分にチェックされていない以前のisset($_POST[variable])をチェックしますかにもかかわらず

<?php 
session_start(); 

if (isset($_POST['id'])) { 

$_SESSION['id'] = $_POST['id']; 

} 


if (isset($_POST['dateChosen'])) { 

$_SESSION['dateChosen'] = $_POST['dateChosen']; 

} 

if (isset($_POST['timeChosen'])) { 

$_SESSION['timeChosen'] = $_POST['timeChosen']; 

} 


$username="xxx"; 
$password="xxx"; 
$database="xxx"; 

mysql_connect('localhost',$username,$password); 

mysql_select_db($database) or die("Unable to select database"); 

    $insert = array(); 

    for ($i = 1, $n = $_POST['sessionNum']; $i <= $n; ++$i) 
    { 
    $insert[] = "' ". mysql_real_escape_string($_POST['id']) . ($n == 1 ? '' : $i) . "',' ". mysql_real_escape_string($_POST['timeChosen']) . "',' ". mysql_real_escape_string(date("Y-m-d", strtotime($_POST['dateChosen']))) . "'"; 
    } 

    $sql = "INSERT INTO Session (SessionId, SessionTime, SessionDate) 
    VALUES (" . implode('), (', $insert) . ")"; 


    mysql_query($sql); 

mysql_close(); 



?> 
+0

あなたのHTMLを表示してください。 '$ _POST'が機能するためには、' method = "post" ' –

+0

という形式でフォームを提出して、最初のページを投稿する必要がありますか? –

+0

これはほとんどありませんが、ページがPOSTされているかどうかを確認するには、$ _SERVER ['REQUEST_METHOD']を見て、それが "POST"と同じであることを確認してください。 –

答えて

3

以下は私のコードです。

あなたは、以前のチェックが(唯一の成功にあなたのセッションへの書き込み)経過したか失敗したかどうかわからない - あなたは$ _POSTをつかむしようとしているとして、あなたはおそらく

if(isset($_POST['id']) { 

    mysql_connect('localhost',$username,$password); 

    mysql_select_db($database) or die("Unable to select database"); 

     $insert = array(); 

     for ($i = 1, $n = $_POST['sessionNum']; $i <= $n; ++$i) 
     { 
     $insert[] = "' ". mysql_real_escape_string($_POST['id']) . ($n == 1 ? '' : $i) . "',' ". mysql_real_escape_string($_POST['timeChosen']) . "',' ". mysql_real_escape_string(date("Y-m-d", strtotime($_POST['dateChosen']))) . "'"; 
     } 

     $sql = "INSERT INTO Session (SessionId, SessionTime, SessionDate) VALUES (" . implode('), (', $insert) . ")"; 


     mysql_query($sql); 

    mysql_close(); 


} else { 
    //build the form which sends in ID 
} 

であなたのコードを包む必要があります['id']それが存在することを確認せずに?理にかなっている?

関連する問題