使用Ajax和mysql检索数据

时间:2015-10-24 00:57:59

标签: php mysql ajax

我试图从多个表中检索数据。因此,当用户单击并选择项目php文件以从相应的表中检索数据时。

这是我第一次试用Ajax使用w3学校代码并尝试修改,我猜我使用的方式如果条件是问题?在我尝试使用多个表之前,它有效。

我的剧本

 <script>
function showUser(str) {
if (str == "") {
    document.getElementById("txtHint").innerHTML = "Please Select type of users to view";
    return;
} else { 
    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("txtHint").innerHTML = xmlhttp.responseText;
        }
    }
    xmlhttp.open("GET","get_users.php?q="+str,true);
    xmlhttp.send();
  }
}
</script>

我的表格

<form>
<select name="users" onchange="showUser(this.value)">
<option value="">Select a person:</option>
<option value="1">Staff</option>
<option value="2">Admin</option>
<option value="3">Customers</option>
</select>
</form>

我的PHP页面

<?php
$q = intval($_GET['q']);

$con = mysqli_connect('localhost','X','X','X');
if (!$con) {
die('Could not connect: ' . mysqli_error($con));
}

mysqli_select_db($con);

if ($q='Admin')
{

$sql="SELECT * FROM admin";
$result = mysqli_query($con,$sql);

echo "<table>
<tr>
<th>Email</th>
<th>Name</th>
<th>Mobile</th>
<th>Address</th>
<th>Password</th>
</tr>";
while($row = mysqli_fetch_array($result)) {
echo "<tr>";
echo "<td>" . $row['email'] . "</td>";
echo "<td>" . $row['name'] . "</td>";
echo "<td>" . $row['mobile'] . "</td>";
echo "<td>" . $row['address'] . "</td>";
echo "<td>" . $row['password'] . "</td>";
echo "</tr>";
}
echo "</table>";

else if ($q='Staff')
 {
echo "This is from Database B
}

else
{
echo "This is from database C";
}

mysqli_close($con);
?>

1 个答案:

答案 0 :(得分:1)

您正在使用$q = intval($_GET['q']);为作业添加字符串值。

intval() “获取变量的整数值”

<option value="1">Staff</option>
<option value="2">Admin</option>
<option value="3">Customers</option>

使用assignment而不是comparisonif ($q='Admin')else if ($q='Staff')都是字符串,而不是选项中的整数。

应该与2个等号[{1}}和if ($q=='2')一起阅读,以匹配您选择的数值选项。

或者,在您从GET数组中删除else if ($q=='1')的同时,将您的选项更改为StaffAdmin(和Customers)。选择是你的。

您也不需要intval(),因为您已在初始连接中声明了4个参数,并且由于其他原因而失败;从技术上讲,你没有为它选择数据库。

您还错过中的引号和分号(解析语法错误)

mysqli_select_db($con);

应该读作

echo "This is from Database B

脚注:

我相信你自己的网页似乎是http://www.w3schools.com/php/php_ajax_database.asp

如果是这样,那么我建议你完全按照他们的例子并慢慢修改它以满足你的需要。在成功之前,我自己已经使用了那个演示(在遥远的过去)。

他们的示例也使用echo "This is from Database B"; 子句。

WHERE

编辑:只是为了记录,这个条件缺少一个支撑:

$sql="SELECT * FROM user WHERE id = '".$q."'";