我有一个由复选框组成的数据表,我想找到一种将它存储到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 :(得分: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
。选择此数据时..再次对其进行编码...
我更喜欢这种方式...