Chr*_*ung 0 php mysql html-table

我有一个由复选框组成的数据表,我想找到一种将它存储到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>...
Run Code Online (Sandbox Code Playgroud)
这意味着我将不得不多次重复以下代码:
$_SESSION['a1'] = $_POST['a1'];
$_SESSION['a2'] = $_POST['a2'];
$_SESSION['a3'] = $_POST['a3'];
$_SESSION['a4'] = $_POST['a4'];
$_SESSION['a5'] = $_POST['a5'];
$_SESSION['a6'] = $_POST['a6'];...
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法将值存储到mysql数据库中?
"高效"是一个有点含糊不清的术语.就存储要求而言,最有效的解决方案是比特字段 - 但这会导致查询效率非常低 - 并且很难适应数据模型的变化.如果是我,我会将其正常化:
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)
);
Run Code Online (Sandbox Code Playgroud)
我还使用嵌套数组来模拟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";
}
Run Code Online (Sandbox Code Playgroud)