使用MySQL数据库中的表数据动态编辑HTML字段
问题描述:
我有问题试图找出如何使用数据库字段动态填充表单字段。我正在使用的代码如下:使用MySQL数据库中的表数据动态编辑HTML字段
<form id="notes" name="notes" method="post" action="<?php $_SERVER['PHP_SELF']; ?>">
<table width="700" border="0.5" align="center">
<tr>
<td colspan="6" style="text-align:center">
<select name="noteselect" id="noteselect" onchange="<?php ?>">
<option value="new">
Add new...
</option>
<?php
if(isset($_COOKIE['deceasedID']))
{
$SqlStatement = "SELECT PK_Notes, Note_Title, Date_Entered FROM Notes WHERE FK_Deceased = '".$_COOKIE['deceasedID']."'";
$res = ExecuteSQL($SqlStatement, true);
while($row = mysqli_fetch_array($res))
{
echo "<option value='".$row['PK_Notes']."'>".$row['Note_Title']." - ".$row['Date_Entered']."</option>";
}
$error = " ";
}
在这个片段中,该功能的ExecuteSQL运行mysqli_connect /查询/关闭功能,然后返回一个结果集
我希望做的是使用select标签的onchange事件来运行一个php脚本,该脚本运行一个mysqli函数,该函数用数据填充字段。我想我必须使用JavaScript来动态编辑字段的innerHTML与结果集中的数据,但是如何将javascript嵌入到php函数中?我试着做以下,请记住,在$的SQLStatement变量包含SQL语句,该语句不工作,我直接在数据库运行它,它的工作原理:
$res = ExecuteSQL($SqlStatement, true)
$row = mysqli_fetch_array($res)
<script type="text/javascript">document.getElementById(*fieldname*).value = $row['db_row_name']</script>
然而,这确实没什么,所以我不知道这里有什么错。是不是可以使用PHP函数来运行JavaScript和动态更新字段?或者是否会更好地使用100%的JavaScript来做到这一点,并通过嵌入式PHP在JavaScript中运行任何SQL?任何帮助,将不胜感激。
答
我试图在这里提供一个示例来解决这类问题。
这将给出如何使用AJAX来填充来自PHP的动态内容的想法。
** HTML文件** $(文件)。就绪(函数(){ $( '#选择1')。改变(函数(){
//Get current item's value
var select1 = $(this).val();
$.ajax({
url : "getOptions.php?select1=" + select1,
success : function(data) {
var result, opts = "";
//We get comma separated data
result = data.split(',');
//Prepare options
for(var i = 0; i < result.length; i++) {
opts += "<option value='" + result[i] + "'>" + result[i] + "</option>";
}
//Populate second select
$('#select2').html(opts);
},
error : function() {
alert("Error");
}
});
});
//By default populate options for currently selected item
$('#select1').trigger('change');
});
</script>
</head>
<body>
<form>
<p>
Select 1
<select id='select1'>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
</select>
</p>
<p>
Select 2
<select id='select2'>
</select>
</p>
</form>
</body>
</html>
** PHP文件(getOptions.php)**
<?php
$select1 = $_GET['select1'];
$result = "";
/*
Here fetch data and return to front-end
*/
//following is used to generate some dummy code.
for ($i=1; $i<=5; $i++) {
if($result != "") $result .= ",";
$result .= $select1.$i;
}
echo $result;
?>
我只是从后端发送逗号分隔值,你可以尝试JSON。
另外我从后端发送一些虚拟代码。您可以使用您的数据库获取结果并发送到前端。
PHP脚本在服务器上执行。 Javascript在客户端执行。他们不是在同一时刻执行的。如果你想在select中选择一个值之后做一些事情,你必须使用AJAX调用。当用户选择一个选项时,Javascript向你的服务器发送一个AJAX调用(到一个新的脚本),然后当脚本生成JSON响应时(在示例中),在客户端,JS正在处理响应并修改UI 。 – MatRt 2013-03-19 05:16:33