为mysql、php表创建过滤器
我正在尝试为我的表创建一个过滤器选项卡,当单击该选项卡时,该选项卡将有几个不同的选项从表中过滤数据并显示一组新的结果,然后从每个下拉列表中选择一个选项将过滤表结果。 我尝试了一些教程,但没有效果(我是PHP、js的初学者) 这是我的密码 在页面上显示表格为mysql、php表创建过滤器,php,jquery,html,mysql,ajax,Php,Jquery,Html,Mysql,Ajax,我正在尝试为我的表创建一个过滤器选项卡,当单击该选项卡时,该选项卡将有几个不同的选项从表中过滤数据并显示一组新的结果,然后从每个下拉列表中选择一个选项将过滤表结果。 我尝试了一些教程,但没有效果(我是PHP、js的初学者) 这是我的密码 在页面上显示表格 <?php $con=mysqli_connect("localhost","root", "", "database"); // Check connection if (mysqli_connect_errno()) { echo
<?php
$con=mysqli_connect("localhost","root", "", "database");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$result = mysqli_query($con,"SELECT * FROM table GROUP BY id DESC LIMIT 25");
if (!$result) {
printf("Error: %s\n", mysqli_error($con));
exit();
}
echo "<table border='5' class='table'>
<tr>
<th>Game ID</th>
<th>Game Name</th>
<th>Category</th>
<th>Suggested LVL</th>
<th>Insert Date</th>
</tr>";
while($row = mysqli_fetch_array($result))
{
echo "<tr>";
echo "<td>" . $row['id'] . "</td>";
echo "<td>" . $row['gamename'] . "</td>";
echo "<td>" . $row['gamecategory'] . "</td>";
echo "<td>" . $row['gamelevel'] . "</td>";
echo "<td>" . $row['listdate'] . "</td>";
echo "</tr>";
}
echo "</table>";
?>
我希望过滤器是什么样的;
这只是一个例子,汽车与我的游戏数据库无关
<div class="input-group">
<select>
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="mercedes">Mercedes</option>
<option value="audi">Audi</option>
</select>
</div>
沃尔沃汽车
萨博
梅赛德斯
奥迪
我只是有点迷惑不解,有没有方便的免费jquery插件、AJAX或其他选项
感谢您的帮助您需要一种更灵活的方式来构造查询。一个框架将使这变得容易。本例使用的是Laravel
$q = DB::table('table')->groupBy('id');
if ( isset($_POST['color']) ) {
$q = $q->where('some-column', $_POST['color']);
}
if ( isset($_POST['car']) ) {
$q = $q->where('some-other-column', $_POST['car']);
}
$results = $q->get();
请注意,Laravel的DB类将自动过滤传递给它的变量
您可以使用纯PHP做同样的事情,但这需要您编写大量的boilterplate
// Store user submitted filters in an array
$where = array();
if ( isset($_POST['color']) ) {
$where[] = "some-column = '".validate_your_user_inputs($_POST['color'])."'";
}
if ( isset($_POST['car']) ) {
$where[] = "some-other-column = '".validate_your_user_inputs($_POST['car'])."'";
}
// Create WHERE clause or empty string that gets put into the SQL
if ( sizeof($where) > 0 ) {
$where = ' WHERE '.implode(' AND ', $where);
} else {
$where = '';
}
$q = sprintf('SELECT * FROM table %s GROUP BY id LIMIT 25', $where);
这显然是一个非常简单的示例,它忽略了在将变量直接传递给MySQL之前需要进行的验证,但这应该让您开始了。只是想说,在更改select选项时,可以从数据库中重新查询数据 在使用了几个不同的框架之后,我发现在javascript框架中这样做变得非常简单和容易理解(angularjs是一个很好的选择)。但是,通过包装原始选择列表
<div class="input-group">
<select>
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="mercedes">Mercedes</option>
<option value="audi">Audi</option>
</select>
</div>
沃尔沃汽车
萨博
梅赛德斯
奥迪
在类似so的表单标记中,并将名称attr添加到select标记中:
<form action="urltoscript" method="POST">
<div class="input-group">
<select name="changingValues">
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="mercedes">Mercedes</option>
<option value="audi">Audi</option>
</select>
</div>
<input type="submit" name="buttonSubmit" />
</form>
沃尔沃汽车
萨博
梅赛德斯
奥迪
将允许您使用PHP检索后端上每个项目的选定值,利用issetisset($\u POST[“changingValues”])
,然后作为$result重新查询数据。每次更改后都将刷新页面,除非使用javascript合并了一些AJAX调用,否则必须单击submit按钮
我再次建议使用JS或PHP框架来完成过滤器之类的工作,但这种方法应该可以工作,我希望我在写问题时就知道这一点。有很多免费的jQuery插件和AJAX示例,但它们中的任何一个都不太可能正是您想要做的,因此您必须修改您发现的任何内容。你的过滤器(以汽车为例)如何与你的桌子(游戏)匹配?尚不清楚你想做什么。@sean我刚刚从谷歌上取了汽车的例子作为例子。