高效的方法将复选框数据表存储到MySQL数据库中

时间:2012-03-08 09:30:54

标签: php mysql html-table

Table format

我有一个由复选框组成的数据表,我想找到一种将它存储到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数据库中?

2 个答案:

答案 0 :(得分:5)

'高效'是一个含糊不清的术语。就存储要求而言,最有效的解决方案是位字段 - 但这会导致非常低效的查询 - 并且很难适应数据模型的变化。如果是我,我会将其正常化:

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";
} 

答案 1 :(得分:-1)

您可以将{a1:0, a2:1,a3:0}用作序列化或JSON 。选择此数据时..再次对其进行编码... 我更喜欢这种方式...