Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z instrukcją
Forum PHP.pl > Forum > Bazy danych
roome
Witam,
Mam wynik zapytania mssql po odbc. Wynik zapytania jest otrzymywany tutaj : $stat = odbc_result($result, "stat");
Jest to wartość liczbowa np. 15 (liczby z zakresu od 0-18)

Chciałbym teraz zrobić żeby w zależności od otrzymanego wyniku zmiennej $stat wykonywana była inna akcja np. innym kolorem wyświetlany tekst, nuł wyświetlany inny tekst.
Pewnie trzeba wykorzystać instrukcję if else ale jak to poprawnie połączyć i zagnieździć ?


  1.  
  2.  
  3. $result = odbc_exec($connect, $query);
  4.  
  5. for ($i=0;$i<1;$i++)
  6.  
  7. {
  8. $wynik=odbc_fetch_row($result);
  9. $stat = int;
  10. $stat = odbc_result($result, "stat");
  11.  
  12. echo $stat;
  13.  
  14. .............
  15.  
  16. if $stat=0 {
  17. echo 'aaa'}
  18.  
  19. if $stat=1 {
  20. echo 'bbb'}
  21.  
  22. if $stat=3 {
  23. echo 'ccc'}
  24.  
  25. itd
  26.  
  27.  


Bardzo proszę o wskazówki, kombinuje z manualami ale nie działa jak trzeba ;(

darko
Jeśli znasz zakres liczbowy to użyj instrukcji switch - case
// edit
chyba jednak szybciej będzie zdefiniować tablicę asocjacyjną z kluczami o wartościach z zakresu i wartościami dotyczącymi pożądanej akcji, np.:
  1. $actionReactionArray = array(
  2. 1 => 'aaa',
  3. 2 => 'bbb',
  4. // itd.
  5. );


zamiast ifów czy switch-case robisz po prostu:
  1. echo $actionReactionArray[$stat];
roome
Cytat(darko @ 21.10.2011, 12:44:14 ) *
Jeśli znasz zakres liczbowy to użyj instrukcji switch - case
// edit
chyba jednak szybciej będzie zdefiniować tablicę asocjacyjną z kluczami o wartościach z zakresu i wartościami dotyczącymi pożądanej akcji, np.:
  1. $actionReactionArray = array(
  2. 1 => 'aaa',
  3. 2 => 'bbb',
  4. // itd.
  5. );


zamiast ifów czy switch-case robisz po prostu:
  1. echo $actionReactionArray[$stat];


Darko
Bardzo dziękuje Ci za pomoc - opcja z tablicą rozwiązała sprawnie problem !

Może jeszcze zerknąłbyś na to zapytanie:

  1. $query = "select dz.Time, u.UserFirstName+u.UserLastName as pracownik, u.UserID as wyr, dz.UserActionId as stat from TUserActionLog as dz, TUser as u
  2. where u.UserID=16 and dz.Time = (select max(dz.Time) as czas from TUserActionLog dz)";


w skrócie chodzi o wyciągnięcie "najświeższej" wartości dla usera=16. Sprawdza po dacie lecz niestety niekiedy zwraca dwie wartości - ta sama data dodania do bazy. Czy można to jeszcze jakoś zmodyfikować żeby liczył (szukał) dokładniej ?
Jest to zapytanie do bazy MS SQL poprzez odbc jak już pisałem - niestety nie wszystkie polecenia działają jak w przypadku Mysql sad.gif
Buduje statystyki i potrzebuje wykazywać aktualny status użytkownika pobierany z bazy mssql.
Statusy mają się wizualnie zmieniać w zależności od wartości.

Narazie rozgryzam zadanie na przykładzie jednego usera pozniej bede musiał to zrobić dla wszystkich.

Dzieki jeszcze raz wink.gif


darko
Ogólnie z baz danych jestem słaby, ale w mysql zrobiłbym po prostu na końcu order by dz.Time desc limit 1 albo próbował z select distinct i użył between oraz now();
roome
Cytat(darko @ 21.10.2011, 14:54:49 ) *
Ogólnie z baz danych jestem słaby, ale w mysql zrobiłbym po prostu na końcu order by dz.Time desc limit 1 albo próbował z select distinct i użył between oraz now();


No właśnie order by dz.Time desc limit 1 itp nie za bardzo chcą działać przy mssqlu przy mysqlu to by zadziało.

Dzieki !
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.