2012-04-10 46 views
0

目前我公司生產的基於數據庫的一組複選框多行和列的複選框PHP的

它看起來像

   Week 1  Week 2  Week 3  Week 4 ..... 
Student 1  []   []   []   [] 
Student 2  []   []   []   [] 
Student 3  []   []   []   [] 
Student 4  []   []   []   [] 
..... 

[]表示複選框

我如何獲得任何用戶打勾?我使用attendance_list[]作爲複選框的名稱,但是當勾選一個時,它會爲所有用戶返回值。

謝謝。

回答

2

您應該使用多維數組來表示學生和他們的出席情況。

例如,

<!-- Student 1, Week 1 to 4 --> 
<input type='checkbox' name='attendance_list[1][1]' /> 
<input type='checkbox' name='attendance_list[1][2]' /> 
<input type='checkbox' name='attendance_list[1][3]' /> 
<input type='checkbox' name='attendance_list[1][4]' /> 


<!-- Student 2, Week 1 to 4 --> 
<input type='checkbox' name='attendance_list[2][1]' /> 
<input type='checkbox' name='attendance_list[2][2]' /> 
<input type='checkbox' name='attendance_list[2][3]' /> 
<input type='checkbox' name='attendance_list[2][4]' /> 

<!-- And, so on.. --> 

服務器端,您將獲得已檢出元素的數組。使用數組的索引,您可以確定哪個學生在哪幾周出席。

如果上述複選框進行了檢查,你的陣列看起來像這樣:

Array 
(
    [attendance_list] => Array 
     (
      [1] => Array 
       (
        [1] => on 
        [2] => on 
        [3] => on 
        [4] => on 
       ) 

      [2] => Array 
       (
        [1] => on 
        [2] => on 
        [3] => on 
        [4] => on 
       ) 

     ) 

) 

這表明,學生1和學生2都到齊了所有4個星期。

2

我想看看你的代碼,如果沒關係。現在我會猜測答案。

當您使用attendance_list []作爲您的名字時,PHP會自動爲每個複選框在POST中分配一個不同的字段作爲POST返回中的數組。

如果您想區分學生,您可以通過將student_1 [(#week)]指定爲名稱並將'Y'指定爲值來在HTML中執行此操作。在服務器端,學生通過POST並收集所有鍵值爲'Y'的鍵。它應該在默認情況下,未經檢查的應用程序不會通過,但在此之前,我已經習慣了奇怪的行爲。

Josh更進一步,提供了一個多維數組。如果您對通過多維數組進行排序感到滿意,這將爲您提供所需的內容。