2017-11-22 4 views
0

현재 사용자가 3 개의 입력 필드를 채울 수있는 양식이 있습니다. 그 중 3 가지는 텍스트 필드 (제목, 저자 및 ISBN)이며 그 중 1 개는 선택 옵션 (범주)입니다.고급 검색 PHP가있는 기능

사용자가 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"; 
    } 

코드 세트가 작동합니다

은 내가 currenly있는 것은이 (예를 들어, 아니 실제 코드 자체)입니다. 예를 들어 작성자 입력 만 채우고 나머지 세 옵션은 비워두면 원하는 값으로 반환됩니다. 그러나 한 번에 2 개 이상의 필드를 채우려고하면 반환 된 값이 올바르지 않습니다.

그래서 어떻게하면 필드가 채워 졌는지 확인하고 입력 된 필드를 기반으로 조건을 올바르게 설정하는 if else 문을 생각해 낼 수 있습니까?

전진 해 주셔서 감사합니다. 매우 감사! :)

+0

각각의 모든 조건에서 같은 명령을 실행하는 것은 의미가 없다. BTW, "반환 된 값이 잘못되었습니다." 방법? 질문에 답을 돌려 주시겠습니까? –

+2

'else'없이 4'if's를 사용하십시오. –

+0

제 잘못, @Ofir Baruch. 이 함수는 실제로 다른 함수 아래에 있기 때문에 의미가 있습니다. 그래서이 모든 일이 먼저, 그것은 데이터베이스의 모든 레코드를 검색합니다. 그런 다음 모든 레코드를 반복하여 일치하는지 확인합니다. 일치하는 경우 데이터를 resultArray로 푸시합니다.이 후 resultArray를 세션에 사용합니다. 따라서 조건이 충족되면 결과 데이터가 resultArray로 전달됩니다. –

답변

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. 
} 
+0

옙, 나는 이것을 시도했다. 그러나 우리가 –

+0

을 말하면서 duplicates를 실행했다. 나는 중복을 제거하기 위해 코드를 업데이트했다. 그러나 이것은 모든 시나리오에서 작동하지 않을 것이다 (나는 $ allMyArray가 무엇인지 알지 못한다). 시도해보고 효과가 있는지 알려주십시오. –

+0

아, 내가 직접 테스트했지만 아직 오류가 있습니다. 먼저 디버깅을 시도한 다음 다시 연락 할 것입니다. 당신의 도움을 주셔서 감사합니다! –