2011-03-29 48 views
0

需要一點幫助...通過PHP web表格表更新mySQL表中的多個記錄?

我有一個基本的html表格,在最後一列中有文本字段形式,在web表格的每一行上都有一個隱藏字段。該表中的數據從數據庫中的表中提取出來。

我希望我的用戶能夠使用此Web表單(頁面)更新數據庫中的一個字段(得分)。

我在每一行上都有一個隱藏的Web表單組件,其中包含網頁表中每一行的記錄在數據庫中的唯一標識。

我試圖創建代碼來更新Web窗體上的整個項目列表,即使用戶沒有更新該特定字段。 (在創建表格時,分數字段的值會填充到Web表單中,因此如果您未更新任何分數,但點擊了提交按鈕,它將用相同的值更新數據庫表格。)

這是我的代碼:(縮寫爲保存字節...)

<?php 

//Do all the database connection stuff up front 


if (isset($_POST[‘score’])) 
{ 
    $student_id = $_POST[‘student_id’]; 
     $score = $_POST['score']; 
     $n  = count($score); 
     $i  = 0; 

echo "You have updated these student scores on this assignment. \r\n" . 
"<ol>"; 
    while ($i < $n) 
{ 
echo "<hr><P>{$score[$i]} \r\n"; 
echo "<hr><P>{$student_id[$i]} \r\n"; 

$qry = "UPDATE assignments SET score = ".$score[$i]." WHERE student_id = " .$student_id[$i]. '"'; 
[email protected]_query($qry); 

$i++; 
    } 
} 
if($result) { 
     header("location: member-index.php"); 
     exit(); 
    }else { 
     die("Query failed"); 
    } 
?> 

我在正確的軌道上嗎?有沒有更好的方法來做我正在嘗試的?所有的建議和想法歡迎!

預先感謝您!

+0

'「'O_O只是用'」' – dynamic 2011-03-29 21:29:33

+0

FYI'頭()'可能會失敗因爲你在重定向之前回應。 – sreimer 2011-03-29 21:48:54

回答

0

我猜你正在使用

<input name="scores[]"/> 

爲什麼不回的唯一ID到輸入的名字嗎?

<input name="score[<?php echo $unique_id ?>]" /> 

這意味着在循環中,$我會是唯一的ID(少了一個變量少HTML)。

請在使用數據庫事務時使用mysql_real_escape_string()。我知道這是一個例子代碼,但請不要忘記,

除此之外,是的,你是在正確的軌道上

+0

o,並使用foreach:P不是一段時間。在這方面更合適 – Jase 2011-03-29 21:28:58

+0

我想我明白你上面說的。我的網絡表單域名爲「scores []」和「student_id []」...這是實際的唯一記錄信息。但是,我仍然收到提交時的「查詢失敗」消息。我對此非常陌生,所以我認爲我需要更多的拼寫。 – 2011-03-29 23:30:38