Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用ajax函数基于下拉菜单更改select语句的表?_Php_Html_Mysql_Ajax - Fatal编程技术网

Php 使用ajax函数基于下拉菜单更改select语句的表?

Php 使用ajax函数基于下拉菜单更改select语句的表?,php,html,mysql,ajax,Php,Html,Mysql,Ajax,我正在尝试在我的站点上设置一个表,该表根据用户从下拉菜单中选择的填充。下拉菜单应组成将执行SELECT语句的变量。 为此,我有一个HTML下拉列表和一个AJAX函数。这是函数 <script> function showUser(str) { if (str=="") { document.getElementById("loadhere").innerHTML=""; return; } if (window.XMLHttpRequest) {// code for IE7+,

我正在尝试在我的站点上设置一个表,该表根据用户从下拉菜单中选择的填充。下拉菜单应组成将执行SELECT语句的变量。 为此,我有一个HTML下拉列表和一个AJAX函数。这是函数

<script>
function showUser(str)
{
if (str=="")
{
document.getElementById("loadhere").innerHTML="";
return;
} 
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("loadhere").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","ajaxtest.php?q="+str,true);
xmlhttp.send();
}
</script> 
这是HTML

<form action="">
<select name="users" onchange="showUser(this.value)">
<option value="">Please choose</option>
<option value="1200">Courses</option>
<option value="">TEST</option>
<option value="">TEST</option>
<option value="">TEST</option>
</select>
</form>     
<br>
<div id="loadhere"><b>Details will be listed here after selection.</b></div>
然后调用一个php脚本
$q=$_GET["q"];


$sql="SELECT * FROM clntcoursetbl WHERE mbrid = '".$q."'";

$result = mysql_query($sql);

echo "<table id='box-table-b'>
<tr>
<th>Course</th>
<th>Start Date</th>
<th>Finish Date</th>
</tr>";

while($row = mysql_fetch_array($result))
{
echo "<tr>";
echo "<td>" . $row['course'] . "</td>";
echo "<td>" . $row['startdate'] . "</td>";
echo "<td>" . $row['finishdate'] . "</td>";
echo "</tr>";
}
echo "</table>";


?>
目前,我的选择选项“当然”的值为1200,这是用户的客户端ID,只是为了测试以确保一切正常。确实如此

现在,我想更改它,以便将select中的值放入select语句中,以选择要搜索的表。 沿着SELECT*FROM SELECT value行的内容,其中mbrid='.$q'

这可能吗

如果是这样的话,我怎样才能同时使mbrid成为动态的呢?我可以将会话变量传递到函数中吗


一如既往,谢谢你的帮助

您可以在showUser函数中调用ajax,如下所示

var url = "url of the file you want to get data from"; 
var e = document.getElementById("#<Your Select Items ID>"); 
var data = 'q='+e.options[e.selectedIndex].value;
         $.ajax({
             type: "post",
             url: url,
             data: data,
             success: function(msg) {
             }
         });
然后,您可以使用$\u POST['q']在目标页面中获取值


还可以尝试将所有回显数据附加到一个变量,并在循环执行完成时进行回显。

1。停止使用mysql_*函数,改用PDO或MySQLi;2.建议使用jQuery等库来处理AJAX请求,以实现更好的跨浏览器兼容性;3.建议在普通PHP字符串中使用单引号以减少额外的解析时间。但是我可以在select语句中更改表名吗?选择*FROM tablename,我需要能够更改表名,下拉列表上的每个选项将代表不同的表。是的,您可以,只需将表名与ajax数据一起发送。您可以使用data+='&tableName='+'进行追加;然后在您的帖子中以$tableName=$\u post['tableName'];的形式接收它和数据'q';。并在sql语句中以$sql=SELECT*的形式从“$tableName.”中使用它,其中mbrid=“$q.”;