将列表框选中的选项插入数据库NOT值

时间:2011-10-24 10:24:34

标签: php html listbox

我正在为一所大学提供用户注册表格。我需要计算费用并将其显示给用户,同时需要插入数据库..

我使用了类似的列表框

<select name="subject" id="select2"> ***(value=fees for the subject)
<option value="100">Arts</option>
<option value="150">English</option>

计算是可以的,给出的值(我使用javascript计算) 现在我想将主题插入数据库 例如:

INSERT INTO user(name, email, subject)
VALUES ('$_POST[name]','$_POST[email]','$_POST[subject]')");

我想将选择添加到数据库主题字段的主题添加为英语而不是费用。

我希望你能理解我在说什么。请帮助

谢谢

4 个答案:

答案 0 :(得分:0)

这将要求服务器端知道SELECT元素的文本,因为只回发了所选的值。

在ASP.NET中可以,因为SELECT元素是服务器端知道的。但是我不确定这是否适用于PHP。

答案 1 :(得分:0)

在php中,当您填充列表时,请在地图中保留value =&gt;标签映射并返回正确的值,如:

$arr = array(100 => "Arts", 150 => "English");
echo $arr[$_POST[subject]]; //if $_POST[subject]==100, return "Arts"

否则,在javascript中,您可以使用

获取它
var index=document.getElementById("select2").selectedIndex;
document.getElementById("select2").options[index].text; 

然后您可以将其存储在隐藏的输入文本中......

警告: 不要直接在sql请求中插入值! 请注意injection SQL

希望这能帮到你......

答案 2 :(得分:0)

理想情况下,您应该将标签用作以下值:

<select name="subject">
<option value="Arts">Arts</option>
<option value="English">English</option>

如果出于任何原因想要发布标签和费用,您可以使用隐藏变量和JavaScript,如:

<select name="subject_fee" id="subject_fee" onchange="populate_subject_name();">
<option value="100">Arts</option>
<option value="150">English</option>
</select>
<input type="hidden" name="subject_name" id="subject_name" value="">
<script type="text/javascript">
    function populate_subject_name() {
        var f = document.getElementById("subject_fee");
        var n = document.getElementById("subject_name");
        n.value = f.options[f.selectedIndex].text;
    }
</script>

顺便说一下,我还是会推荐第一种方法。还有其他方法来计算费用 - 只是即兴。有一种可能性,请参见thisthis

答案 3 :(得分:0)

您必须添加表单的句柄onsubmit事件和隐藏字段,以保留列表项的选定text

<script type="text/javascript">
function submitIt()
 {
  var list=document.getElementById("select2");
  var item=list.item(list.selectedIndex);
  document.getElementById("subjectTest").value=item.text;
  return true;
}
</script>

<form method="post" action="your_page.php" onsubmit="return submitIt()">
   <input type="hidden" id="subjectTest" name="subjectText" />
   <select name="subject" id="select2"> ***(value=fees for the subject)
    <option value="100">Arts</option>
    <option value="150">English</option>
   <input type="submit" name="cmd" value="Submit"/>
</form>