У меня есть этот код здесь и по какой-то причине он будет принимать либо первые 3 ifs как true, либо последний if. Я не могу заставить его перейти к одному или другому, не удалив одно из них.
Например, входной сигнал — «TBN D664» или «Другой», и он будет там разбираться. Но независимо от того, какой вклад я добавлю, «TAN 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>
Вот где я превращаю это в сессию
$_SESSION['Petrochemical_app']=$_POST['Petrochemical_app'];
Также, когда я делаю print_r (); Я получаю это или оно меняется всякий раз, когда я делаю другой выбор с флажками
Array ( [0] => TBN D4739 )
Также, если у меня все они отмечены, я получаю это
Array ( [0] => TAN D664 [1] => TBN D2869 [2] => TBN D4739 [3] => H2S and Mercaptan Bromine Number [4] => Other )
Постскриптум Спасибо за помощь с парнями в формате кода! Я долгое время creeper stackoverflow, и это мой первый пост: P
После ваших обновлений ошибка вполне понятна, я думаю.
if (strpos($_SESSION['Petrochemical_app'],'TAN D664') !== false) {
$i=37;
}
должно быть
if (in_array('TAN D664', $_SESSION['Petrochemical_app'])) {
$i=37;
}
Поскольку форма имеет несколько флажков с одинаковыми именами, значения помещаются в массив, который затем сохраняется в сеансе. Ваш код использовал строковые функции в этом массиве, которые, очевидно, не могут работать. Вы хотите проверить, есть ли конкретное значение в массиве и, следовательно, следует использовать in_array([needle], [haystack])
чтобы проверить это.
Других решений пока нет …