2014-03-04 30 views
1

嗨可能有人幫我插入多行比我的SQL數據庫與此表單?我嘗試過在線搜索,但很多解決方案都是用硬編碼的信息。如何使用此表單將多行放入sql中?

這可能是一個有點困難,因爲我還張貼隱藏變量但在這裏不用...

代碼:

(輸入表格):

<?php 

$essID = $_GET['essID']; 
$sql = "SELECT * FROM ExamSubjectStudent WHERE essID = '$essID'";      
$result = mysql_query($sql); 

while ($row = mysql_fetch_array($result)) 
    { 
     $esID = $row ['esID']; 
     $sID = $row ['sID']; 
    } 

?> 

<form action="marktodatabase.php" method="post"> 

Mark:<input type="text" name="mark"><br /> 
Date:<input type="date" name="date"><br /> 
ExamSubject ID:<?php echo $esID;?> <input type="hidden" name="esID" value="<?php echo $esID; ?>" ><br /> 
Student ID:<?php echo $sID;?> <input type="hidden" name="sID" value="<?php echo $sID; ?>" ><br /> 

<input type="submit" name="submit"> 

</form> 

(SQL輸入)

<?php 
    $mark=$_POST['mark']; 
    $date=$_POST['date']; 
    $esID=$_POST['esID']; 
    $sID=$_POST['sID']; 

    $sql = mysql_query("INSERT INTO Results (mark, date, esID, sID) VALUES ('$mark', '$date', '$esID', '$sID')"); 
    $result = mysql_query($sql); 

?> 

目前所有的作品。但是,我想爲學生添加多個標記/日期...,目前我選擇了一個單獨的標記/日期,但我不確定如何使其顯示多於一個標記/日期/ esID/sID/。

請幫忙嗎?

回答

0

首先,您需要編輯表單,以便輸入的輸出位於PHP循環內。 然後所有輸入都需要名稱中的esID和sID,以便以後可以識別它們。不再需要隱藏的輸入。

<form action="marktodatabase.php" method="post"> 
<?php 
    $essID = $_GET['essID']; 
    $sql = "SELECT * FROM ExamSubjectStudent WHERE essID = '$essID'";      
    $result = mysql_query($sql); 

    while ($row = mysql_fetch_array($result)) 
     { 
     $esID = $row['esID']; 
     $sID = $row['sID']; 

     echo "Mark: <input type=\"text\" name=\"mark_".$esID."_".$sID."\"><br />"; 
     echo "Date: <input type=\"date\" name=\"date_".$esID."_".$sID."\"><br />"; 
     echo "ExamSubject ID:".$esID."<br />"; 
     echo "Student ID: ".$sID."<br />"; 
    } 
?> 

<input type="submit" name="submit"> 
</form> 

然後爲了保存,您需要遍歷您先前選擇的所有行,檢查它們是否已更改,然後保存它們。

<?php 
$essID = $_GET['essID']; 
$sqlSelect = "SELECT * FROM ExamSubjectStudent WHERE essID = '$essID'";      
$result = mysql_query($sqlSelect); 

while ($row = mysql_fetch_array($result)) 
    { 
    $new_mark=$_POST['mark_'.$row['esId'].'_'.$row['sID']]; 
    $new_date=$_POST['date_'.$row['esId'].'_'.$row['sID']]; 
    $old_mark=$row['mark']; 
    $old_date=$row['date']; 

    if($new_mark != $old_mark || $new_date != $old_date) { 
     $sqlInsert = mysql_query("INSERT INTO Results (mark, date, esID, sID) VALUES ('".$new_mark."', '".$new_date."', '".$esID."', '".$sID."')"); 
     $result = mysql_query($sqlInsert); 
    } 
} 
?> 

我沒有測試此代碼,所以它可能包含錯誤,但我希望你得到它的基本思想,並可以改變它來滿足您的需求。

編輯:同時檢查Dipendu保羅關於如何在一個查詢中插入多行的答案。您可以將其與我的腳本結合使用。

0

多個插入在一個單一的查詢語法會像下面:

INSERT INTO Results (mark, date, esID, sID) VALUES ('$mark1', '$date1', '$esID1', '$sID1') 
                ,('$mark2', '$date2', '$esID2', '$sID2') 
                , ....more paranthesized comma separated values here; 

可以構造查詢在一個循環。

0

您可以在mysql.add中插入多個值。在插入語句的每個值集合中添加逗號(,)。

下面是例子。 「插入用戶(姓名,姓氏)」 。 「VALUES('test','testing'),('testing1','testing2'),('testing1','testing2')」

你也可以爲此查看mysql教程。

相關問題