2012-03-08 53 views
0

Table format有效途徑複選框數據的表存儲到MySQL數據庫

我有數據表,包括複選框,我想找到它存儲到MySQL數據庫的有效方式。就目前來說,HTML是像下面

<tr class="weekpattern"> 
      <th class="collabel tlc"></th> 
      <th class="collabel">1</th> 
      <th class="collabel">2</th> 
      <th class="collabel">3</th> 
      <th class="collabel">4</th> 
      <th class="collabel">5</th> 
      <th class="collabel">6</th> 
      <th class="collabel trc">7</th> 
     </tr> 
     <tr class="weekpattern"> 
      <th class="rowlabel" shift="a"> A </th> 
      <td align="center" valign="middle"><input type="checkbox" shift="a" value="1" name="a1"></td> 
      <td align="center" valign="middle"><input type="checkbox" shift="a" value="1" name="a2"></td> 
      <td align="center" valign="middle"><input type="checkbox" shift="a" value="1" name="a3"></td> 
      <td align="center" valign="middle"><input type="checkbox" shift="a" value="1" name="a4"></td> 
      <td align="center" valign="middle"><input type="checkbox" shift="a" value="1" name="a5"></td> 
      <td align="center" valign="middle"><input type="checkbox" shift="a" value="1" name="a6"></td> 
      <td align="center" valign="middle"><input type="checkbox" shift="a" value="1" name="a7"></td> 
     </tr> 
     <tr class="weekpattern"> 
      <th class="rowlabel"> B </th> 
      <td align="center" valign="middle"><input type="checkbox" value="1" name="b1"></td> 
      <td align="center" valign="middle"><input type="checkbox" value="1" name="b2"></td> 
      <td align="center" valign="middle"><input type="checkbox" value="1" name="b3"></td> 
      <td align="center" valign="middle"><input type="checkbox" value="1" name="b4"></td> 
      <td align="center" valign="middle"><input type="checkbox" value="1" name="b5"></td>... 

,這意味着我將不得不重複以下幾次代碼:

$_SESSION['a1'] = $_POST['a1']; 
    $_SESSION['a2'] = $_POST['a2']; 
    $_SESSION['a3'] = $_POST['a3']; 
    $_SESSION['a4'] = $_POST['a4']; 
    $_SESSION['a5'] = $_POST['a5']; 
    $_SESSION['a6'] = $_POST['a6'];... 

有沒有更好的方式來存儲值到MySQL數據庫?

+0

你需要去發現陣列 – zerkms 2012-03-08 09:32:20

+0

爲什麼地球上做你想在會話中存儲這個? – Raveline 2012-03-08 09:33:19

+1

你問一個關於php部分或mysql結構的建議? – Crsr 2012-03-08 09:36:41

回答

4

「高效」是一個稍微含糊的字眼。就存儲需求而言,最有效的解決方案將是一個位域 - 但這會導致非常低效的查詢 - 並且很難適應數據模型中的更改。如果是我,我只希望它正常化:

CREATE TABLE responses (
    respondent_id INTEGER NOT NULL, /* to reference the set of answers */ 
    row_id VARCHAR(1) NOT NULL, 
    col_id INTEGER NOT NULL, 
    response ENUM ('NO', 'YES') NOT NULL 
    PRIMARY KEY (respondent_id, row_id, col_id) 
); 

我還使用嵌套數組來模仿在PHP多維數組:

$rows=array('A', 'B', 'C', 'D', 'E', 'F'); 
for ($y=0; $y<7; $y++) { 
    print "<tr>\n"; 
    for ($x=1; $x<=7; $x++) { 
    print "<td><input type='checkbox' name='box[$x][$y]'></td>\n"; 
    } 
    print "</tr>\n"; 
} 
+0

很好的解釋!十分感謝 – 2012-03-15 13:28:49

-1

可以作爲一個序列化或JSON使用像{a1:0, a2:1,a3:0} 。當選擇此數據再次..decode它... 我更喜歡這種方式...