在下拉菜单中进行选择时更新数据库
Posted
技术标签:
【中文标题】在下拉菜单中进行选择时更新数据库【英文标题】:Update database when a selection is made in a drop down menu 【发布时间】:2012-02-28 10:47:38 【问题描述】:我不知道从哪里开始,所以如果已经有像我这样的问题的答案,我将不胜感激!基本上问题说明了一切,这就是我想要的:
有一个下拉菜单,简单的下拉菜单,没什么花哨的。在该下拉菜单中进行选择时,将运行一个 php mysql 查询,其中数据库将使用该值更新。我拥有所有的东西,我所需要的只是能够启动它的代码。
例如,当您在表单上点击提交时,您通常会输入:
if (isset($_POST['submit']))
//grab information and insert into db
如何在不点击提交按钮的情况下为下拉选择执行此操作。
【问题讨论】:
【参考方案1】:正如 cmets 中所说,您监听选择框的 onchange
事件并提交表单或使用 AJAX。这不是我的意思。
从可用性 POV 来看,我建议您重新评估这个命题,如果它真的导致数据库更新:曾经使用鼠标滚轮滚动,但不小心将焦点放在选择框上?大奖!您只是在不知情的情况下更改了数据库设置。
所以在选择框上使用onchange
来启动某些东西,立即可见 恕我直言,这是一件好事 - 当您触发它时,您就会知道。恕我直言,更改除了选择框更改值之外没有任何反馈的数据库设置是一件坏事。或者等待发生的事故。
【讨论】:
我已经准备好触发、逃离、演奏所有爵士乐。我只需要在进行下拉选择时提交表单。我尝试了以下两种方法,但都没有奏效。【参考方案2】:你应该在寻找这样的东西
<form id="testform">
<select id="yourselect" name="yourselect" onChange="updateDb()">
<option value="somevalue">Please select</option>
<option value="somevalue1">Something</option>
</select>
</form>
你的 javascript 函数看起来像这样
function updateDb()
// I am using jquery for ajax
$.post("yourserverhandle.php", $("#testform").serialize());
这就是你的“yourserverhandle.php”的样子
<?php
$query = "update yourtable set something='".mysql_escape_string($_POST["yourselect"])."' where id='something'";
.... mysql connect, execute
?>
【讨论】:
不起作用,当我在下拉菜单中进行选择时没有任何反应。 您需要更改文件名和表单 ID 以适合您。有一个单词拼写错误,现已更正。在您的 PHP 文件中尝试打印帖子以对其进行故障排除。您应该放入 yourserverhandle.php 的唯一行应该是 print_r($_POST) 以查看发生了什么。确保 php 文件的路径正确 这里是 jsfiddle 视图 jsfiddle.net/q8v5g jsfiddle 只展示了它是如何工作的。您需要根据我之前的评论更改内容【参考方案3】:$("#DDL_ID").change(function()
$.ajax(
url:'/some.php',
type:'POST',
data:submit:$(this).val(),
success:function(data)
//do something here if the server return anything
,
error:function()
console.log("something bad happened");
);
);
在php方面
if (isset($_POST['submit']))
//grab information and insert into db
附:总是清理输入见mysql_real_escape_string
【讨论】:
以上是关于在下拉菜单中进行选择时更新数据库的主要内容,如果未能解决你的问题,请参考以下文章