如何使用ajax从下拉菜单中更新mysql数据库

时间:2014-11-01 12:29:29

标签: javascript php jquery mysql ajax

正如问题建议你能告诉我如何在ajax的帮助下使用下拉菜单更新mysql数据库。我想在不重新加载整个网页的情况下更新我的数据库。当用户单击编辑按钮时,下拉列表中的所选选项会更新。在搜索了一段时间后,我找到了这个方法的一些教程并从那里获取了ajax代码。但是当我在我的数据库中尝试这些时;它没有成功。下面是我的php脚本的示例代码,父文件包含一个名为 samefile.php 的php文件中的ajax脚本和php代码。下面的脚本只包含有问题的代码,故意删除一些html和php代码。

  //THIS AJAX SCRIPT FETCHES VALUES FROM THE SELECTED DROPDOWN 
<script>

    function get_da(str){
        $.ajax({
            url: "samefile.php",
            type: "POST",
            async: true, 
            data: { dropdown1:$("#dropdown").val()}, //your form data to post goes here as a json object
            dataType: "html",    
            success: function(data) {
                $('#output').html(data); 
                drawVisualization();   
            },  
        });
    } 
);
</script>
///////////////////////////////FIRST BLOCK//////////////////

<?php
//THIS PHP SCRIPT GENERATES DROP DOWN VALUES FROM DATABASE
echo "<select name='dropdown' onChange='get_da(this.value)'>";
while ($row = mysql_fetch_array($result)) 
{

    if($row['id']==$row['user'])
    {
        echo "<option value='" . $row['id'] . "' selected>" . $row['name'] . "</option>";
    }
    else{

        echo "<option value='" . $row['id'] . "'>" . $row['name'] . "</option>";
    }

}
echo "</select>";
/////////////////////////////SECOND BLOCK//////////////////////////////

//THIS PHP SCRIPT VALIDATES THE SELECTED DROPOWN VALUE AND PASS THOSE VALES FOR FURTHER PROCESSING.
if(isset($_REQUEST['dropdown1']))
{
    $name=get_the_selected_dropdown_name; //i dont know how to fetch name from dropdown menu                    
    $sql = "UPDATE table SET name = '$name' WHERE id =10";

    mysql_real_escape_string($sql);
    $result = mysql_query($sql) or die (mysql_error());
    if ($result==1)  { 
        echo "Success";
    }
    else { echo "Failed";}
}   
//////////////////////////////THIRD BLOCK////////////////////////////////////
?>

我相信这就是我上面的脚本的工作原理。当用户从下拉菜单中选择特定选项时,此函数onChange='get_da(this.value)'将值(id和名称)发送到ajax查询。在ajax查询中,收集下拉值(id和name)并重命名为dropdown1(data: { dropdown1:$("#dropdown").val()})并将其传递给同一文件中的php脚本。 Php脚本使用此if(isset($_REQUEST['dropdown1']))确认来自ajax的请求,并且将执行内部脚本。

如果我弄乱了我的代码,请原谅我。我厌倦了java脚本和ajax,所以我不确定我的编码是否适合这些脚本。如果可能,您可以使用ajax下拉列表建议任何其他脚本来更新mysql数据库。

EDITED

ID                        DROPDOWN VALUE
1                           ROY
2                           TOM
3                           CHASE
4                           THOMAS
5                           GEORGE
6                           MICHAEL

1 个答案:

答案 0 :(得分:2)

尝试打印您在ajax请求中发送的值。您将this.value传递给函数get_da(str)。但我认为你在任何地方使用它,在ajax帖子中你发送的值就像

data: {dropdown1:$('#dropdown').val()}

但是这不会从下拉列表中发布您选择的vaule,请尝试这样:

<script>

function get_da(this){
    var id = $("#dropdown option:selected").val();
    var selectedName = $("#dropdown option:selected").text();
    $.ajax({
        url: "samefile.php",
        type: "POST",
        async: true, 
        data: { dropdown1:id, name:selectedName}, //your form data to post goes here as a json object
        dataType: "html",    
        success: function(data) {
            $('#output').html(data); 
            //drawVisualization();   
        },  
    });
} 

</script>

希望这会奏效。

您的下拉列表应如下所示:

<?php

echo "<select name="dropdown" onchange="get_da()" id="dropdown">";
while ($row = mysql_fetch_array($result)) 
{

if($row['id']==$row['user'])
{
    echo "<option value='" . $row['id'] . "' selected>" . $row['name'] . "</option>";
}
else{

    echo "<option value='" . $row['id'] . "'>" . $row['name'] . "</option>";
}

}
echo "</select>";

这会将您选择的值从下拉列表发送到您的samefile.php.And你也不能用你的PHP脚本做得好,它应该是这样的:      

 if(isset($_REQUEST['dropdown1']))
 {
  $id=$_REQUEST['dropdown1'];
  $name=$_REQUEST['name'];
  $sql = "UPDATE table SET name = '$name' WHERE id ='$id'";

   mysql_real_escape_string($sql);
   $result = mysql_query($sql) or die (mysql_error());
   if ($result==1)  { 
    echo "Success";
   }
   else { echo "Failed";}
   }   

  ?>