当前位置: 首页 > 知识库问答 >
问题:

搜索不按预期工作

危晨
2023-03-14

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

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

共有1个答案

濮阳繁
2023-03-14

这还不是答案,只是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)))
  • 这样就没有任何东西可以覆盖了

如果我是你,我会将代码结构如下。

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倍。

 类似资料:
  • 问题内容: 我已经为此奋斗了2天,尽我所能用Google搜索和stackoverflow,但是我无法解决。 我正在构建一个简单的节点应用程序(+ Express + Mongoose),其登录页面重定向到主页。这是我的服务器JS代码: 登录页面向发出POST请求,在此验证发布的数据。这可行。我可以在Node控制台中看到“我们在这里:’/ credentials’”。 然后是问题:res.redir

  • 问题内容: 根据JavaDoc for ,该函数在比较期间不考虑比例。 现在,我有一个测试用例,看起来像这样: 我希望函数返回的值是10,小数位数为10。打印该值可显示预期的结果。但是该功能似乎并未按照我认为的方式工作。 这里发生了什么? 问题答案: 并 没有 代表0.7。 它代表0.69999999999999999999555910790149937383830547332763671875(

  • 问题内容: 我是否错过了明显痛苦的事情?还是世界上没有人真正使用java.util.BitSet? 以下测试失败: 我真的不清楚,为什么我没有得到长度为2的BitSet和值为10的结果。我偷看了java.util.BitSet的源代码,并且在随意检查时似乎无法对两者进行足够的区分。设置为false且从未设置为任何值… (请注意,在构造函数中显式设置BitSet的大小无效,例如: 问题答案: 人们确

  • 问题内容: 以下Dockerfile: 具有输出: 构建时(docker build命令) 看来RUN cd tmp123没有任何作用 为什么呢? 问题答案: 实际上是预期的。 泊坞窗文件不过是docker run + docker commit的包装器。 与做相同的事情: 每次运行时,都会生成一个新容器,因此pwd为’/’。 如果您愿意,可以在github上打开一个问题,以便向Dockerfil

  • 我编写了一个递归函数,该函数生成 所以如果我写 它应该屈服 但这并不像预期的那样奏效。(显示0)。 在正常的递归函数(返回int而不返回Ienumerable)中,它工作得很好。 问题: 我如何修复代码,使它产生预期的值? 注意:不,没有理由使用递归IEnumerables。这是我玩过递归收益后才想到的。

  • 我试着将一个双精度值四舍五入到小数点后两位: var x=0.68999995 var roundX=round(x*100.0)/100.0 println(roundX)//打印0.69 如果打印值是正确的...但var值不是我期望的,继续0.68999999999999995 我需要双值...不像其他StackOverflow答案那样字符串:(