如何将多个复选框数据保存到数据库?

问题描述:

我不是专家,所以如果你真的对你的答案有特异性,我会非常感激。如何将多个复选框数据保存到数据库?

我有这个注册表格,有一个有很多复选框的部分,我想知道什么最好的方法是将其保存在数据库中。我不确定是否所有值都应该放在单个列中,或者如果我只为我的注册表单的这一部分创建一个不同的表格。考虑到我稍后需要从数据库中提取所有这些数据并将其显示在“管理后端”中,这些数据可用于版本更新数据库也很重要。以下您可以看到包含复选框的部分的部分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> 

Jsfiddle Demo if that helps.

非常感谢您提供的任何帮助。

你有几个选项...
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>
*注意:每个工作组都有不同的名字,让他们分开。你应该这样做,无论你使用单选按钮还是复选框,因为它们意味着不同的事情。
让我知道这是否有帮助。

+0

在第二个选项上,这意味着只为该问题向数据库添加三个新列,对吧?我将不得不添加av_rtp [] 1,av_rtp [] 2和av_rtp [] 3。您表示最好稍后检查使用%操作选中的复选框。请解释一下或给出一个%操作是什么的例子?另一方面,如果我选择使用1到9的值将所有值保存到数据库中的唯一一列,例如,是否难以从数据库中提取值以在版本页面中显示它们?顺便谢谢你的回答。 – codekmarv 2012-03-12 15:22:14

+1

我的意思是有av_rtp [] 1,av_rtp [] 2和av_rtp [] 3是你希望单独输入所有这些值。例如,你想知道他们想花多少钱购买专门的手袋,时尚首饰,手表,水晶旅行首饰和高级珠宝。这意味着它们不一定具有相同的价值。通过在表单中​​给它们不同的名称意味着你可以将这些值分开。数字范围从1-9很难使用,因为1 + 2 = 3可能与刚刚获得3的偏好相同。 123%100 = 23 ... 23%10 = 3 ...这有帮助吗? @codekmarv – 2012-03-13 02:19:24

+0

谢谢。我认为这略高于我的理解水平,但我已经很享受了解它。谢谢。根据你的建议,这意味着我不必为每个复选框创建一个列,这正是我想要做的。我仍然试图弄清楚我应该使用的表格结构,因为我已经决定,这肯定会进入不同的表格(零售商),而不是我的默认客户表格。 – codekmarv 2012-03-13 04:55:46

在一列中存储分隔列表的数据是一种极其糟糕的做法。它会创建查询问题(当您必须使用非可疑的where子句进行查询时,会出现性能问题)。创建一个单独的表。

+0

好的,同意了。你会建议哪种表格结构?我已经有了我的顾客表,我可以在注册表中存储所有请求的基本信息。因此,我想我将不得不创建一个新表来存储此部分的所有信息[此部分注册表仅适用于申请零售商帐户的人] – codekmarv 2012-03-12 16:25:35

+1

这是正确的创建一个新的相关表,其中包含客户ID和您需要的任何其他字段。确保创建一个外键关系。 – HLGEM 2012-03-12 17:36:07

+0

好吧,我想知道你是否可以看看我的注册表格,并帮助我设计新表格。我想我至少需要一张新桌子,但你对复选框有什么建议?我是否会在这个新表中为他们每个人创建一个新列?如果是的话,这不就像拥挤我的原始客户表一样吗? – codekmarv 2012-03-13 05:36:01