将所选名称发布到数据库

时间:2018-09-24 19:08:07

标签: php

我有一个从我的数据库填充的组合框:

<select id="product" name="product">
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
</select>

我正在使用表单方法post将选定的值发送到我的数据库:

$product = $_POST['product'] ;

将数据发送到数据库时,我只会在数据库中获得选定的值(“ 1”,“ 2”或“ 3”)。

我还想将所选选项的名称发送到我的数据库(“一个”,“两个”或“三个”)。

有人知道是否可以将所选值的名称发布到数据库中吗?

5 个答案:

答案 0 :(得分:0)

这样做不是一个好主意。如果您确实需要服务器端脚本中的文本值,则应该从服务器端脚本中的数据库获取文本。

如果要从数据库加载此组合框,并且正确定义了表键,则无需发回该字段的文本值。

您需要为此数据定义一个键值,并将其用于字段的“值”。如果此表中没有键字段,并且想要获取组合的文本值,则可以将文本用作组合中的值,而忘记当前使用的值,但这是不推荐的< / p>

答案 1 :(得分:-1)

在使用JavaScript更改选项时,您可以使用隐藏字段并更新该字段。

h1

JavaScript:

<input type="hidden" name="numberWritten" id="numberWritten" value="" />

您现在有一个document.getElementById('product').onchange = function() { var element = document.getElementById('product'); var otherValueFromOption = element[element.selectedIndex].innerHTML; document.getElementById('numberWritten').value = otherValueFromOption; } 。其值为$_POST['numberWritten'] OneTwo

答案 2 :(得分:-1)

在HTML表单中使用字段时,仅发送字段的值。 我的建议是,在接收POST的脚本上,将接收到的内容转换为要插入数据库的内容,例如使用switch语句或其他评估发布内容的方式。

$value_to_insert = '';
switch($_POST['product']){
    case '1':
    $value_to_insert = 'One';
    break;
case '2':
    ...
}

另一种可能性是使用select的onChange,将所选项目的值设置为隐藏的输入字段,该字段也将出现在帖子中。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>setvalue</title>
</head>
<body>
    <script>
        function setValue(sel){
            document.getElementById('valueToPost').value = sel.options[sel.selectedIndex].text;
        }
    </script>
    <form action="xpto.php" method="post">
        <input type="text" id="valueToPost" name="valueToPost" value="One">
        <select onchange="setValue(this)">
            <option value="1" selected>One</option>
            <option value="2">Two</option>
            <option value="3">Three</option>
        </select>
    </form>
</body>
</html>

P.S .:将<input type="text"更改为<input type="hidden"以隐藏字段。

答案 3 :(得分:-1)

您必须创建一个动态变量,该变量将根据用户的选择进行更改。

我希望这对您有帮助

<?php
$product = $_POST['product'];
$productName;
if(product == 1){
$productName = 'One';
}
if(product == 2){
$productName = 'Two';
}
if(product == 3){
$productName = 'Three';
}

$insert = ("INSERT INTO table (product, productName) VALUES ('$product', '$productName')");

// query SQL to insert data..



//hope this is helpful 

?>

答案 4 :(得分:-2)

对此有一个非常棘手的解决方案。如果您的下拉列表是从Database填充的,则用变量名替换我的解决方案。使用以下方式:-

<select id="product" name="product">
    <option value="One|1">One</option>
    <option value="Two|2">Two</option>
    <option value="Three|3">Three</option>
</select>

现在用'|'炸开$ _POST ['product']在数据库插入时。