我有一个包含视频游戏项目的数据库。剑,盾牌等我标记了所有物品的等级,效果,找到的位置和类似的东西。
我可以硬编码从数据库中提取的页面。比如诅咒查询的硬编码匕首:
$results = $mysqli->query("SELECT name, type, level, effect
FROM Items
WHERE type = 'Dagger'
AND effect = "Stun"
ORDER BY name ASC");
while ($item= $results->fetch_assoc()) { $result_array[] = $item; }
但是,我希望用户通过下拉菜单,以便他们可以自己过滤数据库中的结果。我不知道该怎么做。我试过谷歌搜索,但很多似乎过时或当我尝试它只是不起作用。
这个网站的类似内容 - http://www.wowhead.com/items
因此,例如,用户可以选择“效果”下拉菜单,然后创建另一个下拉菜单,供您选择;冻结,治愈,晕眩或其他什么。然后从下拉菜单中选择级别并输入50.然后数据库将从数据库中提取眩晕的结果,这些眩晕可以在50级使用。
谢谢!
答案 0 :(得分:1)
这很简单。首先你有表单元素。
<form type="post" action="controller.php">
<select name="weapon">
<option value="Dagger"> Dagger </option>
<option value="Sword"> Sword </option>
</select>
<select name="effect">
<option value="Stun"> Stun </option>
<option value="Knock Back"> Knock Back </option>
</select>
</form>
当用户从这些下拉列表中选择一个值时,它们将被发送到$ _POST数组中的服务器,其键与select元素的“name”匹配。 controller.php
文件是将处理表单提交的文件。您可以更改此文件的位置等。
然后在表单提交处理程序中,您希望处理$ _POST数组,然后在我们处理用户输入时为安全性创建prepared
语句。
/**
| ---------------------------------------------------
| controller.php
| ---------------------------------------------------
*/
if(isset($_POST)){
$weapon = isset($_POST['weapon']) ? $_POST['weapon'] : false;
$effect = isset($_POST['effect']) ? $_POST['effect'] : false;
if($weapon && $effect){
$mysqli = new mysqli('host', 'user', 'pass', 'database');
$result = $mysqli->prepare("SELECT name, type, level, effect
FROM Items
WHERE type = ?
AND effect = ?
ORDER BY name ASC");
$result->bind_param('ss', $weapon, $effect);
if($result->execute()){
while($row = $result->fetch_assoc()){
//access column names here by $row['index'];
}
}
}
}
上面的脚本正在检查是否填充了post数组,然后检查我们的特定变量。从那里,我们建立数据库连接,创建安全预准备语句,将我们的参数绑定到我们的预准备语句,执行查询,然后我们用fetch_assoc迭代返回的结果集。
我希望这会对你有所帮助。