![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 429 Pomógł: 0 Dołączył: 8.11.2012 Ostrzeżenie: (0%) ![]() ![]() |
Witam napotkałem problem przy tworzeniu tablicy array
Tym sposobem wyświetlam odpowiednią ikonkę
Niestety wywala mi błąd
W bazie danych wartość wwindBearing = 97 więc powinna być widoczna ikona bo ta wartość znajduje się w tym przedziale >=90 && <100 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Naprawdę uważasz, że jeśli przypiszesz elementowi tablicy klucz '>=90 && <100', to podając 97 wybierzesz właśnie ten element?
Powinieneś utworzyć tablicę gdzie kluczami są wartości z dołu lub góry zakresu - w zależności od sposobu podejścia do wybierania. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 429 Pomógł: 0 Dołączył: 8.11.2012 Ostrzeżenie: (0%) ![]() ![]() |
Ale zakres to od 0 do 360 Chyba jest jakiś inny sposób aby zrobić to w danym zakresie np:
od 0 do 70 od 70 do 140 od 140 do 190 od 190 do 260 od 260 do 330 od 330 do 360 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Przykład, który pokazujesz, to nie zakres od 0 do 360, ale kilka zakresów. Rozwiązanie podałem Ci wyżej.
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 429 Pomógł: 0 Dołączył: 8.11.2012 Ostrzeżenie: (0%) ![]() ![]() |
Możesz jaśniej.
Pobierana wartość z bazy danych jest w zakresie od 0 do 360 więc może być to liczba w tym zakresie. Mam to tak robić?
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Tablicę z ikonami powinieneś zbudować tak, aby kluczem była dolna lub górna wartość przedziału. Nie przedziału, w którym zawiera się badana liczba, lecz przedziału, z którym porównujesz. Czyli tabela, którą pokazałeś na początku, i o której cały czas piszę, że jest niepoprawnie zbudowana.
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 429 Pomógł: 0 Dołączył: 8.11.2012 Ostrzeżenie: (0%) ![]() ![]() |
Teraz to już nic nie kumam zakręciłeś mnie w tym wszystkim.
Podaj mi jakiś przykład z podobnymi wartościami to może lepiej mi to wejdzie, bo po twoim ostatnim poście jestem zakręcony jak ... |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 429 Pomógł: 0 Dołączył: 8.11.2012 Ostrzeżenie: (0%) ![]() ![]() |
Niestety tak nie zadziała bo potrzeba jest dokładna wartość nie tylko 90 ale w tym przypadku 97.
Ten post edytował brzanek 19.11.2018, 19:44:11 |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
A nie wydaje Ci się, że 97 wpada w przedział między 90 a 100? Czyli powinieneś na podstawie tej tabeli podstawić ikonę wiatr_poludnie?
Jak sobie zbudujesz przedziały, to już Twoja sprawa. Na pewno nie ma kompletnie sensu robienie czegoś takiego:
Jeszcze raz: jako klucz tabeli ma być dolna, albo górna granica przedziału. |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 429 Pomógł: 0 Dołączył: 8.11.2012 Ostrzeżenie: (0%) ![]() ![]() |
Może inaczej mam 8 ikonek z kierunkiem wiatru. W bazie danych kierunek wiatru wyrażany jest w stopniach od 0 do 360. Potrzebuję wyświetlać ikonę z kierunkiem wiatru ale nie co 1 stopień tylko np. co 25 stopni - dlatego potrzebny jest mi przedział w tablicy.
|
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
To sobie zbuduj tablicę z przedziałami co 25, a nie co 10.
|
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 429 Pomógł: 0 Dołączył: 8.11.2012 Ostrzeżenie: (0%) ![]() ![]() |
Co 25 czyli?
Jeszcze raz podkreślam, że tak to nie działa. Tym wywołaniem wyświetlam ikonę
Jeśli teraz wwindBearing wynosi 74 to ta tablica
nie zadziała bo nie ma w niej wartości 74. |
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 429 Pomógł: 0 Dołączył: 8.11.2012 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Fatalnie.
Lecisz po tablicy, sprawdzasz czy zadana wartość jest większa lub równa od klucza pierwszego elementu, jeśli tak, to zapisujesz na boku wartość klucza. Przechodzisz do kolejnego elementu. Jeśli warunek w danym momencie nie jest spełniony, to klucz jest szukanym kluczem i wskazuje na odpowiedni przedział. A skoro wykorzystujesz bazę danych, to zrób to jednym zapytaniem: http://kawalekkodu.pl/kochanie-trzeba-brac...-w-przedzialach |
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 429 Pomógł: 0 Dołączył: 8.11.2012 Ostrzeżenie: (0%) ![]() ![]() |
Kombinuję trochę z zapytaniem
Ale pojawia mi się w tej linii błąd |
|
|
![]()
Post
#18
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Serio chcesz tyle przedziałów pchać do jednego zapytania? Powodzenia...
Zobacz jak wygląda prawidłowa składnia funkcji CASE. |
|
|
![]()
Post
#19
|
|
Grupa: Zarejestrowani Postów: 429 Pomógł: 0 Dołączył: 8.11.2012 Ostrzeżenie: (0%) ![]() ![]() |
Nie chcę ale kombinuję jak mogę.
Więc jak powinno to wyglądać z tablicą array? Po twoich wypowiedziach niestety nic mi nie przychodzi do głowy. |
|
|
![]()
Post
#20
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Nie przesadzaj podałem Ci dwa rozwiązania. W tym jednego gotowca, a Ty wymyślasz wciąż coraz bardziej karkołomne rozwiązania.
Pisałem o tym w poście nr 16. Sprawdzasz po kolei wartość z kluczami tablicy. |
|
|
![]()
Post
#21
|
|
Grupa: Zarejestrowani Postów: 429 Pomógł: 0 Dołączył: 8.11.2012 Ostrzeżenie: (0%) ![]() ![]() |
Podałeś odpowiedz? Może tak ale ja tego nie mogę zrozumieć i nie potrafię zamienić twoich słów na kod.
|
|
|
![]()
Post
#22
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
W linku, który podałem jest gotowiec. Wystarczy, że stworzysz dodatkową tabelę z zakresami, zamiast tworzyć ją w PHP. W opisie temperatury umieszczasz nazwę ikony.
Jeśli tworzysz tablicę w PHP, którą zresztą podałeś:
To masz w niej odszukać element, który spełnia Twoje kryteria. Ma to być pętla for, w której sprawdzasz czy szukana wartość jest większa lub równa kluczowi czy nie. Czyli dla wartości 27 jest ona większa lub równa od pierwszego klucza, ale mniejsza od drugiego. Czyli to ten klucz. Dla wartości 60, jest ona większa lub równa od pierwszego, ale i drugiego, ale też mniejsza od trzeciego. Czyli drugi klucz. Serio? Naprawdę nie potrafisz napisać pętli for i porównać szukane wartości z kluczem tablicy? |
|
|
![]()
Post
#23
|
|
Grupa: Zarejestrowani Postów: 429 Pomógł: 0 Dołączył: 8.11.2012 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki za nakierowanie jednak po nocy człowiek dużo lepiej myśli.
Utworzyłem nową tabelę i tam dałem zakresy od do i nazwy ikonek Potem tylko zapytanie
Raz jeszcze dzięki + poleciał. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 3.10.2025 - 05:08 |