2013-09-29 74 views
0

我的表單如下表(textfeild)。我正在將這些價值觀融入這些文本。我怎樣才能將這些值輸入到我的數據庫中? plz幫助。 enter image description here從php表單插入多行到數據庫中

代碼的形式爲: -

$rows=$_POST["rows"];  
      echo " 
     <table align=\"center\" border=\"1\" width=\"70%\"> 
     <tr> 
     <td><b>Roll No.</b></td> <td><b>Full Name</b></td> <td><b>Unit_test</b>  </td><td><b>Prelims</b></td> 
     <td><b>Attendance</b></td> <td><b>File</b></td> 
     </tr>"; 

    for($n=0;$n<$rows;$n++) 
    { 
    echo "<tr> 
    <td><input type=\"text\" name=\"roll\" /></td><td><input type=\"text\"     name=\"name\" /></td><td><input type=\"text\" name=\"unit_test\" /></td> 
    <td><input type=\"text\" name=\"prelims\" /></td><td><input type=\"text\" name=\"attendance\" /></td><td><input type=\"text\" name=\"file\" /></td> 
    </tr>"; 
    } 
    echo "</table>"; 
    echo "<form action=\"feed2.php\" method=\"post\"> 
    <br> 
    <input type=\"submit\" name=\"\" value=\"Submit\" /> 
    </form>"; 

代碼用於插入到數據庫: -

for($n=0;$n<3;$n++) 
{ 
    if(isset($_POST['roll'])) 
    { 
    echo "<br>Updating"; 

    $roll=$_POST['roll']; 
    $name=$_POST['name']; 
    $unit_test=$_POST['unit_test']; 
    $prelims=$_POST['prelims']; 
    $attendance=$_POST['attendance']; 
    $file=$_POST['file']; 

    $sql="Insert into students (roll,name,unit_test,prelims,average,attendance,file,interm) 
    VALUES ('$roll','$name','$unit_test','$prelims','$average'=(('$unit_test' + '$prelims')/125) *10,'$attendance','$file','$average'+'$attendance'+'$file')"; 
    $res=mysql_query($sql); 
    header("Location:./view.php"); 
    } 
+0

我甚至不看這個代碼是如何工作的。你在哪裏將表格的值發佈到表格中?你的for循環插入到db中什麼都不做。它只是用相同的值循環3次。 – sskoko

+0

我的表格是由textfeild構成的,所以我想單擊提交按鈕它應該插入,但由於顯而易見的原因它甚至不插入任何值。 – jhe

回答

0

爲了成功將數據從瀏覽器發送到服務器,每個字段的名稱在每一行中必須不同。在你的情況下,所有列的名稱在所有行中保持不變。您可以後綴他們的$ n

解決方案:

更換其產生的字段以下代碼:

for($n=0;$n<$rows;$n++) 
    { 
    echo "<tr> 
    <td><input type=\"text\" name=\"roll_$n\" /></td><td><input type=\"text\"      name=\"name_$n\" /></td><td><input type=\"text\" name=\"unit_test_$n\" /></td> 
    <td><input type=\"text\" name=\"prelims_$n\" /></td><td><input type=\"text\" name=\"attendance_$n\" /></td><td><input type=\"text\" name=\"file_$n\" /></td> 
    </tr>"; 
    } 

在上面的代碼中,我們後綴每場_ $ N

其次,將插入代碼更改爲以下代碼:

$roll=$_POST['roll_'.$n]; 
$name=$_POST['name_'.$n]; 
$unit_test=$_POST['unit_test_'.$n]; 
$prelims=$_POST['prelims_'.$n]; 
$attendance=$_POST['attendance_'.$n]; 
$file=$_POST['file_'.$n]; 

第三,我認爲sql查詢需要改變。計算查詢前的平均值並將其值存儲在變量中。然後在查詢中引用此變量,就像您對$ roll和$ name等其他變量所做的一樣。

$average=(($unit_test + $prelims)/125) *10; 

現在使用此代碼,所有三行將保存在數據庫中。

希望這會有所幫助。在SQL

0

多行插入簡單的多括號用逗號,(),(),();

你也轉義您的數據!無論文字還是二進制文件,您都必須跳過全部您的數據。這很簡單,您絕對不能錯過數據。即使數據直接來自我的數據庫,我也會轉義數據,黑客可以在博客評論中發佈代碼,並將其發佈,但由於某種原因,如果我處理該評論,它可能會稍後執行。

$roll = mysql_real_escape_string($_POST['roll'); 

因此,只要做到這一點...

INSERT INTO table (roll, name, unit_test, prelims, average, attendance, file, interm) VALUES 
('$roll','$name','$unit_test','$prelims','$average'=(('$unit_test' + '$prelims')/125) *10,'$attendance','$file','$average'+'$attendance'+'$file'), 
('$roll','$name','$unit_test','$prelims','$average'=(('$unit_test' + '$prelims')/125) *10,'$attendance','$file','$average'+'$attendance'+'$file'), 
('$roll','$name','$unit_test','$prelims','$average'=(('$unit_test' + '$prelims')/125) *10,'$attendance','$file','$average'+'$attendance'+'$file'), 
('$roll','$name','$unit_test','$prelims','$average'=(('$unit_test' + '$prelims')/125) *10,'$attendance','$file','$average'+'$attendance'+'$file'); 
相關問題