2014-10-30 2 views
-2

나는이 코드를 여기에두고 어떤 이유로 3 번째 ifs를 true 또는 last if로 받아 들일 것이다. 나는 그것들 중 하나를 제거하지 않고서 그것들을 하나 또는 다른 것에 가도록 보일 수는 없다.이상한 일을하는 PHP strpos

예를 들어 들어오는 입력은 'TBN D664'또는 '기타'이며 거기에서 분류됩니다. 그러나 내가 'DAN D664'라는 입력을 던지더라도 항상 사실입니다.

내가 다시 배열하더라도 그들은 여전히 ​​어떤 진술도 사실이라고 말합니다. 내 프로그램에서 다른 곳에서도 비슷한 코드를 사용 했으므로 문제가되지 않는다.

if($Category == 'Petrochemical') { 

    if (strpos($_SESSION['Petrochemical_app'],'TAN D664') !== false) { 
     $i=37; 
    } 

    elseif (strpos($_SESSION['Petrochemical_app'],'TBN D2869') !== false) { 
     $i=37; 
    } 

    elseif (strpos($_SESSION['Petrochemical_app'],'TBN D4739') !== false) { 
     $i=37; 
    } 

    elseif ((strpos($_SESSION['Petrochemical_app'],'H2S') !== false) || 
     (strpos($_SESSION['Petrochemical_app'],'Other') !== false)) { 
     if((strpos($sample,'75to120') !==false) || 
      (strpos($sample,'120to200') !==false) || 
      (strpos($sample,'200ormore') !==false)){ 
      $i=26; 
     } 
     if((strpos($sample,'10to30') !== false) || 
      (strpos($sample,'less10') !== false)){ 
      $i=24; 
     } 
     if(strpos($sample,'30to75') !== false) { 
      $i=25; 
     } 
    } 
} 

도움이 될 경우이 특정 선택 항목을 가져 오는 확인란입니다. 여기

<fieldset> 
    <b>Petrochemical</b><br /> 
    <input onclick="document.getElementById('selector_button').disabled = false; document.getElementById('charstype').disabled = true;"name="Petrochemical_app[]" type="checkbox" value="TAN D664" id="D664"> <label for="D664">TAN: D664</label> 
    <input onclick="document.getElementById('selector_button').disabled = false; document.getElementById('charstype').disabled = true;"name="Petrochemical_app[]" type="checkbox" value="TBN D2869" id="D2869"> <label for="D2869">TBN: D2869</label> 
    <input onclick="document.getElementById('selector_button').disabled = false; document.getElementById('charstype').disabled = true;"name="Petrochemical_app[]" type="checkbox" value="TBN D4739" id="D4739"> <label for="D4739">TBN: D4739</label> 
    <input onclick="document.getElementById('selector_button').disabled = false; document.getElementById('charstype').disabled = true;"name="Petrochemical_app[]" type="checkbox" value="H2S and Mercaptan Bromine Number" id="H2S"> <label for="H2S">H2S and Mercaptan Bromine Number</label> 
    <input onclick="document.getElementById('selector_button').disabled = false; document.getElementById('charstype').disabled = true;"name="Petrochemical_app[]" type="checkbox" value="Other" id="Other"> <label for="Other">Other: specify below</label> 
    <label for="Other5">Please Specify:</label> <input name="Other5" type="text" id="Other5"> 
    </fieldset> 

내가) (A 인 print_r을 수행 할 때 내가

$_SESSION['Petrochemical_app']=$_POST['Petrochemical_app']; 

또한 세션으로 바꿀 경우입니다; 내가 그들 모두 체크 해제 한 경우 I이

Array ([0] => TAN D664 [1] => TBN D2869 [2] => TBN D4739 [3] => H2S and Mercaptan Bromine Number [4] => Other) 

P.S.를 얻을 나는이를 얻거나 내가 체크 박스 또한

Array ([0] => TBN D4739) 

과 다른 선택을 할 때마다 변경 코드 형식 녀석을 도와 주셔서 감사합니다! 나는 오랜 시간 동안 stackoverflow creeper이고 이것은 나의 첫 번째 게시물이다 : P

+1

입력 내용은'$ _SESSION [ 'Petrochemical_app']'에 무엇입니까? – Paul

+0

두 번째와 세 번째는 똑같은가요? – Barmar

+1

알다시피, ** elseif **를 사용할 수 있습니까? PHP ** switch() ** exsists에서 알겠습니까? – donald123

답변

0

업데이트 후 오류가 분명하다고 생각한다. 양식이 동일한 이름을 가진 여러 개의 체크 박스를 가지고 있기 때문에

if (strpos($_SESSION['Petrochemical_app'],'TAN D664') !== false) { 
    $i=37; 
} 

if (in_array('TAN D664', $_SESSION['Petrochemical_app'])) { 
    $i=37; 
} 

해야한다, 값은 다음 세션에 저장 배열로 배치됩니다. 귀하의 코드는 분명히 작동하지 않을 수 배열에 문자열 함수를 사용했습니다. 특정 값이 배열에 있는지 확인하려면 in_array([needle], [haystack])을 사용하여 확인해야합니다.

+0

정말 고마워요! 그것은 티켓이고 그것은 짜증나는데 왜냐하면 그것이 if 문으로 시작한 것이기 때문에 나는 그것을 작동시킬 수 없었습니다. 너는 영웅이다. – dup3