2014-03-04 34 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教程。

相关问题