【问题标题】: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

}

如何在不点击提交按钮的情况下为下拉选择执行此操作。

【问题讨论】:

    标签: php javascript jquery mysql post


    【解决方案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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-22
      • 2011-12-30
      • 1970-01-01
      相关资源
      最近更新 更多