Согласно Документация результатов генерации запроса CodeIgniter
row ()
Этот метод возвращает одну строку результата.Если ваш запрос содержит более одной строки, он возвращает только первую строку.Результат возвращается как объект .
Поскольку вы используете синтаксис ->row()
для получения переменных $currentbulanan
и $previousbulanan
, как показано ниже
$currentbulanan = $this->db->query("SELECT bulanan
FROM sla
WHERE id='$id'")
->row();
$previousbulanan = $this->db->query("SELECT bulanan
FROM sla
WHERE id='$idminus1'")
->row();
тогда тип переменных $currentbulanan
и $previousbulanan
равен object , поэтому сравнение, подобное этому
if ($currentbulanan > $previousbulanan)
, не будет работать так же, как сравнение двух чисел.Вам необходимо преобразовать bulanan
свойство $currentbulanan
и $previousbulanan
в число с плавающей точкой
$cbulanan = floatval($currentbulanan->bulanan);
$pbulanan = floatval($previousbulanan->bulanan);
и затем сравнить их, как показано ниже
if ($cbulanan > $pbulanan)
Другая проблема заключается в следующем синтаксисе
if ($currentbulanan = $previousbulanan)
Это всегда будет истинно, поэтому $progres
всегда будет установлено на yellow
.Согласно Документация операторов сравнения PHP , правильный синтаксис для проверки равенства равен ==
.
Ниже приведен полный измененный код
$id = $this->input->post('txtId');
$idminus1 = floatval($id) - 1;
$currentbulanan = $this->db->query("SELECT bulanan
FROM sla
WHERE id='$id'")
->row();
$previousbulanan = $this->db->query("SELECT bulanan
FROM sla
WHERE id='$idminus1'")
->row();
// convert $currentbulanan->bulanan and $previousbulanan->bulanan to float
$cbulanan = floatval($currentbulanan->bulanan);
$pbulanan = floatval($previousbulanan->bulanan);
// compare the float values
if ($cbulanan > $pbulanan) {
$progres = "green";
}
if ($cbulanan < $pbulanan) {
$progres = "red";
}
if ($cbulanan == $pbulanan) { // use the correct comparison operator
$progres = "yellow";
}
// $progres will have the correct value here