用户从php MySQL数据库中筛选出结果

时间:2011-07-07 21:46:49

标签: php mysql database filter

PHP / MySQL新手在这里。

我设法开发了一个网页,通过在线教程显示我的数据库中的信息。现在,我只想为用户添加一种过滤该信息的方法。我理解如何使用WHERE过滤它,但我无法弄清楚如何让用户更新该信息。

这是我试过的:

$query_rsLodging = "SELECT name, address, city FROM lodging WHERE lodging.city = '". $searchVar . "' ORDER BY lodging.name";

然后我尝试使用jumpmenu将信息传递给变量:

<form name="form" id="form">
<select name="jumpMenu" id="jumpMenu" onChange="MM_jumpMenu('parent',this,0)">
  <option value="#">Sort by...</option>
  <option value="directory.php?searchVar=Miami">Miami</option>
  <option value="directory.php?searchVar=Miami Beach">Miami Beach</option>
</select></form>

页面使用附加的网址重新加载,但不会影响结果。但是,在查询上方放置以下代码会:

$searchVar = "Miami"

显然,我没有正确地将信息传递给变量,但我觉得我很接近。

问题:让我的用户过滤数据库结果的最佳方式是什么(最好通过下拉菜单)?

4 个答案:

答案 0 :(得分:1)

要将查询字符串变量放入PHP范围,请使用$ _GET和$ _POST。 在您的情况下,您推送$searchVar = "Miami"的位置将其替换为$searchVar = $_GET['searchVar']

正如我之前写的那样,Boby tables会吃掉你的数据库。 Read here how to avoid sql injection

答案 1 :(得分:1)

可能你必须从超级全局数组$ _GET:

获取$ searchVar
<?  $searchVar = $_GET['searchVar'] ?>

PHP不直接从查询字符串中读取变量,因为它是安全问题。

答案 2 :(得分:0)

您需要使用Javascript和AJAX将信息发送回服务器。

PHP在服务器上执行,PHP呈现HTML并将HTML发送到客户端。然后完成PHP脚本的执行。客户端收到HTML后,浏览器会呈现HTML并将结果显示给用户。用户与HTML的组件交互(例如下拉列表)。关键是,尽管看起来很像,PHP在任何HTML执行之前都会完全执行。因此,客户端和HTML之间的交互并不像您最初想象的那么容易。

那就是说,这是许多人遇到并解决的常见问题;解决方案是以AJAX的形式出现的,其中在HTML客户端上运行的Javascript向服务器发送动态请求,可以在PHP中执行以检索数据,然后返回到客户端Javascript,然后可以格式化数据并适当修改页面。

还有另一种方法可以做到这一点,但是用户体验稍微不那么愉快;您可以让HTML页面使用您希望在服务器上选择的数据返回服务器,然后PHP可以读取POST变量并从那里进行查询。它更简单,但问题是用户体验不太愉快,因为需要刷新整个页面。

答案 3 :(得分:0)

您的<option>标签几乎肯定有错误的值,而且您的表单构造不正确:

<form action="mysearch.php" method="post">
<select name="jumpMenu">
   <option value="Miami">Miami</option>
   <option value="Miami Beach">Miami beach</option>
</select>
</form>

您的表单正如您的样本中所构建的那样:

SELECT ... WHERE loding.city = 'directory.php?searchVar=Miami'

你应该去哪里

SELECT ... WHERE lodging.city = 'Miami'