基本上,我有一个工作表单,用户输入有关其笔记本电脑的详细信息,以便销售给我的商店。 一旦他们提交了笔记本电脑的规格,我就给他们一个报价。 目前我有选项框和复选框,每个选项框和复选框都有一个值 - 例如这些。 ---
<label for="state">State</label><br>
<select name="state">
<option value="10">Excellent</option>
<option value="5">Good</option>
<option value="0">Poor</option>
</select><br>
他们选择的选项的值在最后加起来并给出了引用 - 在上面的例子中 - “10”意味着10英镑额外的笔记本电脑等。
我使用$ _POST [state]来获取它的值以添加到引用的其他选项上。
但我的问题在于我将它们发布到数据库(因此我们可以检查它们何时进入)。 当它们被添加到数据库中时,显然它只是因为值而不是它的实际名称,如“优秀”或“好”。只是说“10”或“5”。
是否有将选项名称放入数据库而不是值?
答案 0 :(得分:1)
是否有将选项名称放入数据库而不是值?
有,但它涉及明确地执行它(在插入值之前将“10”转换为“优秀”)而不是基本上将$_POST
按原样扔到数据库中。如果您通过再次读取数组并使用键交换值来首先构建带有数组的<option>
s,则可以非常简单。
$values = array(
10 => 'Excellent',
5 => 'Good',
0 => 'Poor',
);
$post_value = $_POST['state'];
$db_value = $values[$post_value];
// further validation: make sure the array key exists or use a default value
// further usage: build your HTML <options> with this array
如果你打算这样做,你最好将值存储为数字,并在显示时将它们转换为单词(假设数字确实有一些含义)。这也允许您通过提供翻译进行本地化。
对评论的回应:
我建议使用评级系统,例如1到5,并在内部计算您的价格修改 - 不是直接从用户输入或硬编码值(在数据库中)。这允许您从应用程序中调整价格变化,而不是从较早时间创建的数据库值调整,例如,如果您确定“优秀”条件需要增加11而不是10 - 除非您特别想要价格在产品发布时永久“锁定”。
无论你做什么,一定要验证输入 - 我不能想到使用直接用户输入来计算价格的任何好理由 - 它应该根据产品ID和任何其他条件在内部完成。可以动态修改HTML源代码,以发布您从下拉列表中未预料到的值。
答案 1 :(得分:1)
$stateText = '';
switch ($state){
case 10:
$stateText = 'Excellent';
break;
case 5:
$stateText = 'Good';
break;
case 0:
$stateText = 'Poor';
break;
default:
// bad value
$stateText = '';
}
...然后将其存储到新列中的数据库中。
这只是众多方法之一。
答案 2 :(得分:1)
只有在查找时才能执行此操作,无论是数组还是存储键和值的其他表。
您应该小心不要将发布数据直接存储到数据库中而不进行清理,否则您可能会受到sql注入。
答案 3 :(得分:0)
您无法通过HTML表单获取它。但是你仍然可以做一个将值映射到适当条件的服务器端。
您可以使用开关语句或 if 语句进行映射。
if(value == 10){
$condition = 'Excellent';
} else {//....}