2012-03-31 74 views
0

我有一個由2頁組成的應用程序。其中一個頁面爲會話生成一個3字母的Id,它允許用戶在文本框中鍵入他們需要的多個會話,並在文本框中輸入會話所需的總標記。如何在數據庫中正確插入這些多行和單行

當該頁面被提交時,它將進入下一頁,同時這樣做會將這些細節插入到數據庫中。現在,如果用戶只需要一個會話,那麼將詳細信息插入到數據庫表格中工作正常。下面是一個例子:

例如:如果session是'ABA',會話數是'1',總標記是'20',那麼這個行就像下面這樣插入Session DB表中:

SessionId TotalMarks 

ABA   20 

但我想遇到的問題如下:

比方說,我們有相同的會話ID「ABA」總標記仍然是「20」,但不同的是,用戶希望數的會話爲3,那麼我希望將其插入表格行中:

SessionId TotalMarks 

ABA1   20 
ABA2   20 
ABA3   20 

正如您所看到的那樣,我們有多個會話,它包含每個會話旁邊的數字,ABA1表示這是第一個會話,ABA2表示它是第二個會話,而ABA3表示它是第三個會話。正如用戶所說的總分數是'20',那麼這包括在所有這些會話行中。

所以我的問題是如何得到它,以便如果有多個會話數,然後在每個sessionId旁邊添加一個數字和所有這些會話的總分數?但是,如果用戶只需要1次會話,它仍然與當前顯示3個字母sessionId旁邊的NO號碼相同。

下面是在會話表中插入的sessionID和TotalMarks的插入值的代碼:

$sql="INSERT INTO Session (SessionId, TotalMarks) 
VALUES 
(' ". mysql_real_escape_string($_POST['id']) . "',' ". mysql_real_escape_string($_POST['textMarks']) . "')"; 

mysql_query($sql); 

下面是含有3個字母的SessionID,會話文本框和總標記文本框的數的形式的代碼:

 <form action="QandATable.php" method="post" id="sessionForm"> 

      <p><strong>1: Your Session ID: </strong><?php echo $id; ?></p> 
      <input type='hidden' name='id' value='<?php echo $id; ?>' /> 

    <p><strong>2: Number of Sessions you Require:</strong> <input type="text" id="sessionNo" name="sessionNum"/></p> 

    <p><strong>3: Total Marks: </strong><input type="text" id="txtMarks" name="textMarks" /></p> 
</form> 
+0

爲什麼不添加一個額外的列「numberOfSessions」,以便您可以擁有ABA | 20 | 3? – Swader 2012-03-31 11:49:14

+0

因爲如果有一個會話,那麼我不希望它從下拉菜單或類似的東西中選擇時顯示ABA1 – user1304948 2012-03-31 11:51:29

+0

我仍然沒有看到問題。數據庫中根本不會有ABA1。如果ABA只有一個會話,則該行將如下所示:ABA | 20 | 1,如果有3個,它將如下所示:ABA | 20 | 3.在這兩種情況下都沒有ABA1或ABA3,所以您可以在下拉菜單中顯示ABA。 – Swader 2012-03-31 11:54:50

回答

0

像這樣的事情應該是你所需要的:

<?php 

    // Reset the array 
    $insert = array(); 

    // Iterate over the number of desired sessions and add the relevant INSERT VALUES 
    for ($i = 1, $n = $_POST['sessionNum']; $i <= $n; ++$i) 
    { 
    $insert[] = "'" . mysql_real_escape_string($_POST['id']) . $i . "', '" . mysql_real_escape_string($_POST['textMarks']) . "'"; 
    } 

    // Create the SQL string 
    $sql = "INSERT INTO `Session` (`SessionId`, `TotalMarks`) VALUES (" . implode('), (', $insert) . ")"; 

    // Perform the query 
    mysql_query($sql); 
+0

我會測試這一點,並回復給你,謝謝你的回答:) – user1304948 2012-03-31 11:49:49

+0

你是一個天才,謝謝你的幫助,這完美的工作:) – user1304948 2012-03-31 12:04:54

相關問題