Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Porównywanie wartości
Forum PHP.pl > Forum > Przedszkole
knypraca
Witam!
Mam skrypt sprawdzający wartość, jeśli jest mniejsza załącza się alarm.
  1. if ($rzwlot[6] <= 120) {
  2. echo "<font color='red' >ALARM! Niski tlen ($rzwlot[6]) na sondzie ($rzwlot[2]) ALARM!</font><br>";
  3. $x = "ALARM!Wlot";
  4. $alarm = 1;
  5. }

W tej postaci wszystko działa rzwlot pokazuje wartośc "81.8 %sat" i uruchamia się alarm.
Chciałem mieć możliwość przestawiania/wyłączania alarmu.
Zrobiłem w mysql tabelkę alarmy.
Ściągam dane z niej:
  1. $zapytanie = "SELECT * FROM $tabela WHERE id = 1";
  2. $wynik = mysql_query($zapytanie);
  3. while ( $row = mysql_fetch_row($wynik) ) {

echo "$row[1]"; pokazuje mi wartość 120. Jeśli jednak próbuję
  1. if ($rzwlot[6] <= $row[1])

To alarm się nie uruchamia.
Dlaczego?
Próbowałem już nawet
  1. $bla = $row[1] - $rzwlot[6];
  2. echo "$row[1] - $rzwlot[6] = $bla<br>";
i ładnie mi minusuje (120 - 81.7 %sat = 38.3), natomiast jak row jest wstawione do warunku, to nie działa.
Prosiłbym o pomoc.

nospor
var_dump($rzwlot[6]);
var_dump($row[1]);
if ($rzwlot[6] <= $row[1])

I pokaz dokladnie co to zwraca. Pamietaj, by ten kod wstawic bezposrednio przed IF
knypraca
  1. string(9) "81.3 %sat" string(3) "120" WLOT TLEN - W normie
nospor
Kurcze, ale ty masz porownywac liczby a nie teksty...
81.3 %sat - przeciez to tekst a nie liczba...

zrzutuj na INT obie wartosci, potem porownuj. Teraz porownujesz tekst z tekstem, to logiczne ze nie dziala jak trzeba
knypraca
No ale mnie zastanawia dlaczego jak podstawiam liczbę 120 to wszystko działa jak należy. Tak samo z równaniem, które również wykonuje się poprawnie.
Czy jest jakaś możliwość zamiany tego na samą liczbę?
Akurat daną rzwlot pobieram z preg_match :/

Edit:
Dobra mam smile.gif
$rzwlot = (int) $rzwlot[6];
Podziękował smile.gif
nospor
Cytat
No ale mnie zastanawia dlaczego jak podstawiam liczbę 120 to wszystko działa jak należy
Bo masz jawnie podane, ze to liczba i wowczas php sam w tle rzutuje tekst na liczbe.

Tak ma byc:
if (((int)$rzwlot[6]) <= ((int)$row[1]))
knypraca
  1. $rzwloty = (float) $rzwlot[6];
  2. if ($rzwloty <= $row[1]) {
  3. echo "<font color='red' >ALARM! Niski tlen ($rzwlot[6]) na sondzie ($rzwlot[2]) ALARM!</font><br>";

Ten kod mi chodzi ładnie.
Jest jakaś równica między tym co podałeś?
No może jest ciut dłuższy smile.gif

btw. row[x] jest już int'em wprost z bazy.
nospor
Cytat
Jest jakaś równica między tym co podałeś?

Taka, ze ja rzutuje na int a ty na float. Naprawde tego nie widzisz? tongue.gif
knypraca
Nie no luzik smile.gif to widziałem smile.gif wolę float używać smile.gif dzięki jeszcze raz za pomoc smile.gif
SOLVED!
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.