我有一个从我的数据库填充的组合框:
<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”)。
我还想将所选选项的名称发送到我的数据库(“一个”,“两个”或“三个”)。
有人知道是否可以将所选值的名称发布到数据库中吗?
答案 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']
One
或Two
答案 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']在数据库插入时。