Php 通过选择下拉菜单筛选mysql结果

Php 通过选择下拉菜单筛选mysql结果,php,mysql,Php,Mysql,我是StackOverflow的新成员,虽然我已经使用该网站很长时间了,但这是我第一次发布问题,希望有人能帮助我。首先,我要说的是,我对PHP和MySQL的知识是基本的,但我认为我正在尝试做的事情并不太复杂,所以希望我不会要求太多。我以前做过很多研究,但就是找不到正确的答案 简而言之,这就是我要做的: 我有一个html表单,它在提交时将数据写入数据库,然后在一个单独的html页面上发布一个表。每次成功提交都会生成并发布一个新表,而旧表会被推到下面。这一切都很好,我还实现了分页,这样每页只有5个表

我是StackOverflow的新成员,虽然我已经使用该网站很长时间了,但这是我第一次发布问题,希望有人能帮助我。首先,我要说的是,我对PHP和MySQL的知识是基本的,但我认为我正在尝试做的事情并不太复杂,所以希望我不会要求太多。我以前做过很多研究,但就是找不到正确的答案

简而言之,这就是我要做的:

我有一个html表单,它在提交时将数据写入数据库,然后在一个单独的html页面上发布一个表。每次成功提交都会生成并发布一个新表,而旧表会被推到下面。这一切都很好,我还实现了分页,这样每页只有5个表可见

我希望能够做到的是,通过从发布表格的页面上的下拉列表中选择评级,允许人们仅查看/显示基于特定标准的结果(表格),在本例中为“评级”。Rating是我表单中的一个字段,它被提交到数据库,然后在表中的一行中发布

下面是发布表的代码。提前感谢您的帮助

<?php
include('dbconnect.php'); 

mysql_select_db("vtracker", $con);
$result  = mysql_query("SELECT * FROM userdata");
$age = "Age:";
$rating = "Rating:";
$country = "From:";
$name = "Name:";

        while($row = mysql_fetch_array($result))
        {

                        echo "<table id='mft_table' cellspacing='0'>";
                        echo "<tbody>";
                        echo "<tr>";
                        echo "<td class='row1'>" .$name . " " . $row['personsname'] . "</td>";
                        echo "<td rowspan='4'>";
                        echo "<div class='mft_column'>" . $row['mft'] . "</div>";
                        echo "</td>";
                        echo "</tr>";
                        echo "<tr>";
                        echo "<td class='row2'>" . $country . " " . $row['nationality'] . "</td>";
                        echo "</tr>";
                        echo "<tr>";
                        echo "<td class='row3'>" . $age . " " . $row['personsage'] . "</td>";
                        echo "</tr>";
                        echo "<tr>";
                        echo "<td class='row4'>" . $rating . " " . $row['rating'] . "</td>";
                        echo "</tr>";
                        echo "</tbody>";
                        echo "<br>";
                        echo "</table>"; 

        }
    ?>

不知道这是否有效,这只是一个暗示。哈哈。 它将查看评级是否为真(非空),如果为真,它将回显结果

while($row = mysql_fetch_array($result))
{
if ($rating)
                echo "<table id='mft_table' cellspacing='0'>";
                echo "<tbody>";
                echo "<tr>";
                echo "<td class='row1'>" .$name . " " . $row['personsname'] . "</td>";
                echo "<td rowspan='4'>";
                echo "<div class='mft_column'>" . $row['mft'] . "</div>";
                echo "</td>";
                echo "</tr>";
                echo "<tr>";
                echo "<td class='row2'>" . $country . " " . $row['nationality'] . "</td>";
                echo "</tr>";
                echo "<tr>";
                echo "<td class='row3'>" . $age . " " . $row['personsage'] . "</td>";
                echo "</tr>";
                echo "<tr>";
                echo "<td class='row4'>" . $rating . " " . $row['rating'] . "</td>";
                echo "</tr>";
                echo "</tbody>";
                echo "<br>";
                echo "</table>"; 
}

}
while($row=mysql\u fetch\u array($result))
{
若有($评级)
回声“;
回声“;
回声“;
回显“$name.”“$row['personname']”;
回声“;
回显“$row['mft']”;
回声“;
回声“;
回声“;
回显“$country.”“$row['national']”;
回声“;
回声“;
回显“$age.”“$row['personsage']”;
回声“;
回声“;
回显“$rating.”“$row['rating']”;
回声“;
回声“;
回声“
”; 回声“; } }
一旦选择下拉列表并将其发布到您的显示页面,请使用以下代码:

$temp_rating = $_POST['rating_dropdown'];
mysql_query("SELECT * FROM userdata WHERE rating = '$temp_rating'");
但是,请记住,您应该使用PDO或mysqli扩展,而不是mysql扩展。根据PHP网站:

从PHP5.5.0开始,此扩展已被弃用,并将在中删除 未来。相反,应该使用MySQLi或PDO_MySQL扩展。 有关更多信息,请参见MySQL:选择API指南和相关常见问题解答 信息


对于正确和错误使用,您可以在代码中添加thid:

if($_POST['rating_dropdown']!='')
{
    $temp_rating = $_POST['rating_dropdown'];
    $query=mysql_query("SELECT * FROM userdata WHERE rating = '$temp_rating'");
}
else
{
    $query=mysql_query("SELECT * FROM userdata");
}

谢谢你的回复。带有评级选项的下拉列表总是在显示页面上,我已经链接到一个“filter.php”文件,当用户单击“提交”按钮时,该文件将被调用。filter.php文件中我的代码的逻辑实际上与您建议的相同,但不起作用,即结果(表)不会根据用户选择进行过滤。下面是filter.php文件中的代码:在filter.php文件中:$filtered=mysql\u real\u escape\u string($\u POST[“filtered”])$result=mysql_查询(“从userdata中选择*,其中评级=“$filtered”);然后是一个while循环,它会打印表,就像我的原始代码一样。根据您所写的,它看起来应该可以工作。通过
echo
调用
$filtered
变量开始调试,看看它是否确实包含您期望的内容。谢谢,一切正常,我已经采纳了您的建议。谢谢大家的参与。