我不是专家,所以如果你真的具体说明你的答案,我真的很感激。
我有这个注册表单,其中有一个包含大量复选框的部分,我想知道在数据库中保存它的最佳方法是什么。我不确定是否所有值都应该转到单个列,或者如果我应该只为我的注册表单的这一部分创建一个不同的表。同样重要的是要考虑到我稍后需要从数据库中提取所有这些数据,并在“管理后端”中显示它,以便更新数据库。您可以在下面看到包含复选框的部分的html代码。
<p>4) Please select only the product(s) you are interested in. (Anticipated purchase amounts for the quarter.)</p>
<table cellpadding="15" >
<tbody>
<tr>
<th>Handbags</th>
<th>Fashion Jewelry</th>
<th>Watches</th>
<th>Crystal Travel Jewelry</th>
<th>Fine Jewelry</th>
</tr>
<tr>
<td>
<input type="checkbox" name="pro_amount[]" value="1" />$2500+ </br>
<input type="checkbox" name="pro_amount[]" value="2" />$1000-$2500 </br>
<input type="checkbox" name="pro_amount[]" value="3" />Up to $1000 </br>
</td>
<td>
<input type="checkbox" name="pro_amount[]" value="4" />$2500+ </br>
<input type="checkbox" name="pro_amount[]" value="5" />$1000-$2500 </br>
<input type="checkbox" name="pro_amount[]" value="6" />Up to $1000 </br>
<td>
<input type="checkbox" name="pro_amount[]" value="7" />$2500+ </br>
<input type="checkbox" name="pro_amount[]" value="8" />$1000-$2500 </br>
<input type="checkbox" name="pro_amount[]" value="9" />Up to $1000 </br>
<td>
<input type="checkbox" name="pro_amount[]" value="10" />$2500+ </br>
<input type="checkbox" name="pro_amount[]" value="11" />$1000-$2500 </br>
<input type="checkbox" name="pro_amount[]" value="12" />Up to $1000 </br>
<td>
<input type="checkbox" name="pro_amount[]" value="13" />$2500+ </br>
<input type="checkbox" name="pro_amount[]" value="14" />$1000-$2500 </br>
<input type="checkbox" name="pro_amount[]" value="15" />Up to $1000 </br>
</tr>
</tbody>
</table>
<p>5) What are the average retail price points for each of the following items? (Check only those that apply.)</p>
<table cellpadding="15" >
<tbody>
<tr>
<th>Handbags</th>
<th>Jewelry</th>
<th>Watches</th>
</tr>
<tr>
<td>
<input type="checkbox" name="av_rtp[]" value="1" />$125 or greater<br>
<input type="checkbox" name="av_rtp[]" value="2" />$75</br>
<input type="checkbox" name="av_rtp[]" value="3" /> $40</br>
</td>
<td>
<input type="checkbox" name="av_rtp[]" value="4" />$125 or greater<br>
<input type="checkbox" name="av_rtp[]" value="5" />$75</br>
<input type="checkbox" name="av_rtp[]" value="6" /> $40</br>
<td>
<input type="checkbox" name="av_rtp[]" value="7" />$125 or greater<br>
<input type="checkbox" name="av_rtp[]" value="8" />$75</br>
<input type="checkbox" name="av_rtp[]" value="9" /> $40</br>
</tr>
</tbody>
</table>
非常感谢您提供的任何帮助。
答案 0 :(得分:2)
将分隔的数据列表存储在一列中是一种极其糟糕的做法。它会创建查询问题(以及必须使用不可分区的where子句进行查询时的性能问题)。创建一个单独的表。
答案 1 :(得分:1)
你有几个选择......
1)每个类别允许检查一个盒子:
在这种情况下,如果您将复选框更改为单选按钮会更好,因为一次只检查一个复选框,并且您只需要存储在数据库的一列中选择的一个按钮的值。
2)每个类别允许检查多个盒子:
在这种情况下,您可以保留复选框,并建议将复选框的总值存储在一列中,以减轻数据库的负担。但是,这意味着您需要包含某种形式的脚本,以反转在将信息存储到数据库之前所做的添加。您可以通过使每个类别中的三个复选框的值为1,10和100来实现此目的,以便您可以使用一系列%操作轻松检查哪些复选框。
<table cellpadding="15" >
<tbody>
<tr>
<th>Handbags</th>
<th>Jewelry</th>
<th>Watches</th>
</tr>
<tr>
<td>
<input type="checkbox" name="av_rtp[]1" value="1" />$125 or greater<br />
<input type="checkbox" name="av_rtp[]1" value="10" />$75<br />
<input type="checkbox" name="av_rtp[]1" value="100" /> $40<br />
</td>
<td>
<input type="checkbox" name="av_rtp[]2" value="1" />$125 or greater<br />
<input type="checkbox" name="av_rtp[]2" value="10" />$75<br />
<input type="checkbox" name="av_rtp[]2" value="100" /> $40<br />
<td>
<input type="checkbox" name="av_rtp[]3" value="1" />$125 or greater<br />
<input type="checkbox" name="av_rtp[]3" value="10" />$75<br />
<input type="checkbox" name="av_rtp[]3" value="100" /> $40<br />
</tr>
</tbody>
</table>
*注意每个组如何使用不同的名称,以使它们分开。你应该这样做,无论你使用单选按钮还是复选框,因为它们意味着不同的东西
如果这有帮助,请告诉我。