正如问题建议你能告诉我如何在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
答案 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";}
}
?>