PHP的高级搜索功能

时间:2017-11-22 07:13:57

标签: php forms loops if-statement advanced-search

目前我有一个允许用户填写3个输入字段的表单。其中3个是文本字段(标题,作者和ISBN),其中1个是选择选项(类别)。

我想要实现的是允许用户填写4个字段中的任意数量,并返回所尊重的值。这意味着如果用户填写2个输入字段,则后端将检查2个条件。填写3个输入意味着3个条件。

我目前所拥有的是一个例子,而不是实际的代码本身:

    if($title == $allMyArray["title"]){
        array_push($returningResult, $allMyArray);
    }else if($author == $allMyArray["author"]){
        array_push($returningResult, $allMyArray);
    }else if($ISBN == $allMyArray["ISBN"]){
        array_push($returningResult, $allMyArray);
    }else if($categoreis== $allMyArray["categories"]){
        array_push($returningResult, $allMyArray);
    }else{
        echo "nothing";
    }

当我只填写一个特定字段时,这组代码有效。例如,如果我只填写作者输入,并将其他3个选项留空,我将返回带有我想要的值。但是,如果我尝试一次填写2个或更多字段,则返回的值不正确。

那么我怎么能想出一个if else语句来检查哪些字段被填充,并根据输入的字段正确设置条件?

谢谢大家对我们的帮助!非常感激! :)

1 个答案:

答案 0 :(得分:1)

更改为以下代码将起作用。问题是当你使用ELSE时,你只是将条件语句限制为一个结果。

如果发现IF脏了,可以选择使用switch / case语句。

但它可能会产生重复,所以你需要解决这个问题。 (我不知道你的代码,这只是一个假设)

$atLeast1Result = false;
if($title == $allMyArray["title"]){
    array_push($returningResult, $allMyArray);
    $atLeast1Result = true;
}
if($author == $allMyArray["author"]){
    array_push($returningResult, $allMyArray);
    $atLeast1Result = true;
} 
if($ISBN == $allMyArray["ISBN"]){
    array_push($returningResult, $allMyArray);
    $atLeast1Result = true;
}
if($categoreis== $allMyArray["categories"]){
    array_push($returningResult, $allMyArray);
    $atLeast1Result = true;
}
if(!$atLeast1Result ) {
    echo "nothing";
} else {
    $returningResult = array_unique($returningResult); // this might now work on all versions, as i dont know what this array is.
}