2012-04-03 26 views
0

我在這裏有一個頁面,它從前一頁收到所有詳細信息,並將其張貼在本頁的數據庫中。現在讓我們說我有多個考試(可以說2個考試)。當我完成第一次考試的創建並將表格提交給自己後,我突然收到下面代碼中所有$ _POSTs的通知。爲什麼在我的第一次考試後,我所有的$ _POST都會收到這些通知?所有通知都聲明,所有那些在其前面帶有$ _POST的索引都是未定義的。

下面是我的代碼:

<?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'' – 2012-04-03 03:43:28

+0

照顧才能發佈第一頁? – 2012-04-03 03:44:29

+0

很少有人這樣做,但它是「正確」的方式 - 檢查頁面是否已經發布到,查看$ _SERVER ['REQUEST_METHOD']並確保它等於「POST」。 – 2012-04-03 04:18:01

回答

3

即使你做檢查isset($_POST[variable])前面,你是不是在代碼中的未來部分檢查。

你不知道前面的檢查是否已經通過或失敗(僅成功,你寫你的會話) - 你應該也許

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 
} 

與您試圖搶$ _ POST包住你的代碼['id']不確定它存在嗎?合理?

相關問題