为mysql、php表创建过滤器

为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、js的初学者)

这是我的密码

在页面上显示表格

<?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检索后端上每个项目的选定值,利用isset
isset($\u POST[“changingValues”])
,然后作为$result重新查询数据。每次更改后都将刷新页面,除非使用javascript合并了一些AJAX调用,否则必须单击submit按钮


我再次建议使用JS或PHP框架来完成过滤器之类的工作,但这种方法应该可以工作,我希望我在写问题时就知道这一点。

有很多免费的jQuery插件和AJAX示例,但它们中的任何一个都不太可能正是您想要做的,因此您必须修改您发现的任何内容。你的过滤器(以汽车为例)如何与你的桌子(游戏)匹配?尚不清楚你想做什么。@sean我刚刚从谷歌上取了汽车的例子作为例子。