#php #mysql #if-statement
#php #mysql #if-оператор
Вопрос:
Не делал много php / mysql, но кажется, что это должно быть легко исправить, я, вероятно, просто что-то напортачил. Извините за длинное объяснение, хотел быть подробным
У меня есть база данных mysql, полная результатов тестирования пригодности, и на сайте есть страница, на которой отображаются результаты зарегистрированного пользователя.
Существует определенная информация, называемая симметрией баланса, которую собирает наше оборудование, и результатом является либо положительный, либо отрицательный процент. Если у человека симметрия -15% или меньше, ему требуется дополнительная работа над левой ногой, а если симметрия 15% или меньше, ему требуется больше работы над правой ногой.
Это очень важный фактор, поэтому я пытаюсь сообщить им об этом с помощью «красного флага» в верхней части страницы. Данные хранятся в базе данных либо как отрицательное, либо как положительное число.
Я в основном хочу, чтобы код делал это:
- if the data is >= 15 then it spits out that they need more work on their right leg
- if the data is <= -15 then it spits out that they need more work on their left leg
- if the data is anything else, so between -14 and 14, or if it is null (sometimes they may not have done the balance part of the fitness test due to injury) then nothing is displayed
Способ, которым это работает с приведенным ниже кодом, таков
- if >= 15 works perfectly tells them to work on their right leg
- if <= -15 works perfectly tells them to work on their left leg
- if between -14 and 14 works perfectly tells them nothing
- if null tells them to work on their left leg for some reason. how do I make it so that the null value is handled the same way as the values between -14 and 14
PHP
<?php
if ($row['field_symmetry_value'] >= 15){
echo " <div class='train_row1'>
<div class='train_row_inside'>
<div class='train_column1rf'><img src='http://racebattlerecover.com/images/redflag.png' /></div>
<div class='train_column3rf'><h3>IMPORTANT: Your balance symmetry between your left and right leg is off by more than 15%. You need to add extra balance exercises to your right leg.</h3></div>
</div>
</div>";
}
elseif ($row['field_symmetry_value'] <= -15){
echo " <div class='train_row1'>
<div class='train_row_inside'>
<div class='train_column1rf'><img src='http://racebattlerecover.com/images/redflag.png' /></div>
<div class='train_column3rf'><h3>IMPORTANT: Your balance symmetry between your left and right leg is off by more than 15%. You need to add extra balance exercises to your left leg.</h3></div>
</div>
</div>";
}
?>
Спасибо за любую помощь!
Комментарии:
1. Почему бы просто не проверить сначала
null
значение и ошибку / исключение (или отменить вывод)?2. Кроме того, взгляните на операторы сравнения , поскольку PHP не является строго типизированным при проверке.
3. Первоначальное тестирование на null сработало. Я пытался поместить его в конец как другой оператор elseif, который не сработал, но когда я вставил его в качестве исходного оператора if, он работает отлично. Спасибо.
4. Что вам действительно нужно сделать, так это сначала проверить, является ли это (не) числовым значением, а затем проверить значение слева / справа. Если я добавлю это в качестве ответа, вы проголосуете и отметите как ответ?
5. Да, это звучит как хороший способ сделать это
Ответ №1:
Я не уверен, почему, но по какой-то причине null
считается меньше -15. Я бы подумал, что null
при числовых сравнениях будет обрабатываться как 0, но, по-видимому, нет. Вы можете исправить это довольно легко:
else if (!is_null($row['field']) amp;amp; $row['field'] <= -15) {
Вы также можете выполнить эту проверку в запросе:
COALESCE(field_symmetry_value, 0)
Это вернет 0, если field_symmetry_value
равно NULL
, что ничего не напечатает.