php - 搜索未按预期工作

标签 php mysql

为什么我的搜索功能永远不会执行“else”(else 在没有找到结果时应该回显文本)?我在尝试显示所有结果时也遇到了一些问题(没有选择搜索条件,只需按搜索按钮)。我将上传页面的整个代码,因为我不知道您是否还需要 HTML 部分来解决问题。我知道这是一大堆代码,但如果可以的话请帮忙。谢谢!

这是我的代码的链接:http://pastebin.com/BXe1C0dr

最佳答案

这还不是答案,只是 Matei Panchios 代码的简要代码结构。因为很难理解长代码,所以我尝试简化它,以便其他人能够提供帮助。

$termeni = mysql_real_escape_string($_POST['termeni']);
$tip=$_POST['tip'];
$judet=$_POST['judet'];

if((!empty($termeni)) and (isset($tip))  and (isset($judet))) {
     $query = "SELECT * FROM oferte WHERE localitate LIKE '%$termeni%' AND 
              tip_locatie='$tip' AND judet='$judet'";
     // do the query and write some HTML
} elseif (isset($tip)) {
     $query = "SELECT * FROM oferte WHERE tip_locatie='$tip'";
     // do the query and write some HTML
} elseif (isset($judet)) {
     $query = "SELECT * FROM oferte WHERE judet='$judet'";
     // do the query and write some HTML
} elseif (!empty($termeni)) {
    ...
} elseif (!empty($termeni) AND (isset($judet))) {
    ...
} elseif (!empty($termeni) AND (isset($tip))) { 
    ...
} elseif ((isset($judet)) AND (isset($tip))) {
    ...
} elseif ((!isset($judet)) AND (!isset($tip)) AND (empty($termeni))) {
    ...
}  else {
    // I believe this where it does not get executed.
}

嗯,它没有被执行是有道理的,因为还有 elseif 没有涵盖的其他方式。如果从这个角度来看

  • 如果设置了三个变量
if((!empty($termeni)) and (isset($tip))  and (isset($judet))) {
  • 如果设置了两个变量
elseif (!empty($termeni) AND (isset($judet)))
elseif (!empty($termeni) AND (isset($tip)))
elseif (!empty($termeni) AND (isset($tip)))
elseif (!empty($termeni) AND (isset($tip)))
  • 如果设置了一个变量
elseif (isset($tip))
elseif (isset($judet))
elseif (!empty($termeni))
  • 未设置变量时
elseif ((!isset($judet)) AND (!isset($tip)) AND (empty($termeni)))
  • 留下 else 条件,没有任何内容可覆盖。
<小时/>

如果我是你,我会按如下方式构造代码。

if (!empty($termeni) and isset($tip)  and isset($judet)) {
    query = '....';
} elseif (!empty($termeni) and isset($judet) {
    query = '....';
} // .... the rest of the condition

$result =  mysql_query($query);
if (mysql_num_rows($result) > 0) {
   // write HTML table
} else {
   // write message that there is no result found
}

这会将代码大小减少 6 倍。

关于php - 搜索未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17001733/

相关文章:

Mysql关于多列分离索引的问题

PHP 代码不会在站点中显示数据库中的所有结果,而是将它们显示在数据库中

mysql - JPQL 中的成员未转换为 SQL 存在子句

php - 当文件本身不存在时,如何显示自定义 404 页面未找到页面?

php - 根据 3 个不同的值从数据库中选择行

php - get_headers 不一致

mysql - SQL:连接问题

PHP,通过 POST 传递数组

PHP session ID——它们是如何生成的?

mysql - 如何重置mysql密码