PHP表单将值发布到数据库

时间:2011-10-12 18:32:46

标签: php sql

基本上,我有一个工作表单,用户输入有关其笔记本电脑的详细信息,以便销售给我的商店。 一旦他们提交了笔记本电脑的规格,我就给他们一个报价。 目前我有选项框和复选框,每个选项框和复选框都有一个值 - 例如这些。 ---

<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”。

是否有将选项名称放入数据库而不是值?

4 个答案:

答案 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 {//....}