![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 50 Pomógł: 0 Dołączył: 22.01.2018 Ostrzeżenie: (10%) ![]() ![]() |
Witam.
Proszę o pomoc. Skrypt pobiera dane z bazy i wyświetla w infowindow. Działają tylko te które w bazie mają liczby całkowite a te z dziesiętnymi już nie. Przykład: gdy w kolumnie 1, 2 i 3 są liczby całkowite (23,34 - 23 - 34) to ok . W chwili gdy w jednak pojawiają się liczby dziesiętne (23.5,34 - 23.5 - 34) pojawia się problem: Kod Query error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 11 - Invalid query: SELECT SUM(modify_effect.population), SUM(modify_effect.culture), SUM(modify_effect.gdp), SUM(modify_effect.treasury), SUM(modify_effect.military), SUM(modify_effect.support) FROM modify_effect LEFT JOIN land_modifier ON modify_effect.id = land_modifier.modify_effect_key WHERE land_modifier.land_key =; większy wycinek kodu:
Czy ktoś może mi pomóc jak to rozwiązać? Gdzie szukać by to poprawić? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 707 Pomógł: 266 Dołączył: 3.07.2012 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Pokaż jak wywołujesz get_sum_effects_of_land(...).
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 50 Pomógł: 0 Dołączył: 22.01.2018 Ostrzeżenie: (10%) ![]() ![]() |
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 707 Pomógł: 266 Dołączył: 3.07.2012 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
W którymś momencie $land_square['id'] zawiera pusty string, false albo innego czorta.
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 50 Pomógł: 0 Dołączył: 22.01.2018 Ostrzeżenie: (10%) ![]() ![]() |
kłopot w tym że nie wiem..
tak to wygląda w rzeczywistości (po kliknięciu w pola z koordynatami pełnymi (liczby całkowite) nie ma kłopotu.. Problem pojawia się gdy klikamy w pol z koordynatami z liczbami dziesiętnymi.. https://cvinto.pl/land/world/7?land=-49.5,-26 Nie wiem czy nie odpowiada za to ta część kodu (może z tabeli tylko zatwierdza wyniki z liczbami całkowitymi. Chociaż na przykładzie powyższym sama lokalizacja pola 49.5,-26 działa bez zarzutu a jedynie nie chce ładować się infowindow:
infowindow :
Ten post edytował warland 30.01.2018, 23:54:16 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 1 707 Pomógł: 266 Dołączył: 3.07.2012 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Nie za bardzo mam ochotę analizować taki kod spaghetti, ale sprawdź po prostu czy nie robisz czegoś dziwnego po drodze z tą liczbą. Wypisuj sobie dla testu wartości w różnych miejscach kodu i zobacz co jest nie tak.
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 50 Pomógł: 0 Dołączył: 22.01.2018 Ostrzeżenie: (10%) ![]() ![]() |
tak też robię ale na razie bez rezultatu. Dziękuję za próbę pomocy.
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 1 707 Pomógł: 266 Dołączył: 3.07.2012 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
A czy problemem nie jest przypadkiem to, że po prostu operujesz na nieistniejącej krainie?
Co to zwraca, kiedy kraina nie zostaje znaleziona? Włącz sobie wyświetlanie wszystkich błędów, łącznie z notice. To naprawdę pomaga. |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 50 Pomógł: 0 Dołączył: 22.01.2018 Ostrzeżenie: (10%) ![]() ![]() |
Cały problem tkwi w tym kodzie. round_down zaokrągla wszystkie wartości dziesiętne przez co pozycje z kolumny które mają taką wartość dziesiętną są zaokrąglane i pokrywają się z innymi przez co powstaje konflikt.
Przykład: wynik w kolumnie 55 skrypt odczytuje 55 czyli poprawnie wynik w kolumnie 55.4 skrypt odczytuje też jako 55 czyli nie poprawnie i wywołuje konflikt. Jak to teraz zapisać by zaokrąglało do 0.5 (lub jednym miejscu po przecinku)? w // For rounding land coords i wczytywało do // Set land window ? Proszę o pomoc (próbowałem na wiele sposobów ale mi nie idzie za nic). Dotyczy to liczb dodatnich i ujemnych Czy na to wszystko może też mieć wpływ kod w // For number formatting iż skrypt nie wyświetla pozycji które są z liczbą dziesiętną?
Ten post edytował warland 31.01.2018, 09:57:19 |
|
|
![]()
Post
#10
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Porzadkuj kod.
Przeciez te dwa bloki IF/ELSE if (n > 0) { return Math.ceil(n / land_size) * land_size; } else if (n < 0) { return Math.ceil(n / land_size) * land_size; } Robia dokladnie to samo. Co do zaokraglania to https://stackoverflow.com/questions/6137986...-to-nearest-0-5 |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 50 Pomógł: 0 Dołączył: 22.01.2018 Ostrzeżenie: (10%) ![]() ![]() |
bez rezultatu
możliwe że nie potrafię tego odpowiednio podmienić w kodzie. Wszelkie próby kończą się tym że set_window się nie wyświetla dla pola z liczbą dziesiętną lat-szerokość geograficzna lng-długość geograficzna gdy lat i lng ma np. 55.0 i 48.0 to set_window wyświetla się dla 55 i 48 bez liczby po przecinku gdy lat i lng ma np. 55.5 i 48.5 to set_window nie wyświetla się dla tego pola ponieważ te kordy odczytywane są jako 55 i 48 czyli duplikują się z tymi z powyższego pola. za nic nie wiem czemu nie chce czytać z bazy lat i lng jako wartości dziesiętne. Pewnie bez kogoś kto nie przerobi mi tego kodu ostatniego co podałem nie poradzę sobie (IMG:style_emoticons/default/sad.gif) |
|
|
![]()
Post
#12
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Ty mi nie pisz, ze bez rezultatu, tylko pokaz kod na jaki zmieniles. Skad mam wiedziec co masz nadal zle.
I generalnei wez sie troche do roboty, opisuj problem dokladniej, sprawdzaj jakie wartosci sa na kazdym etapie, np tu: var coord_slug = lat + ',' + lng; Masz zrobic: var coord_slug = lat + ',' + lng; alert(coord_slug); by zobaczyc co dokladnie ci sie generuje |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 50 Pomógł: 0 Dołączył: 22.01.2018 Ostrzeżenie: (10%) ![]() ![]() |
Udało się. Dziękuję wszystkim na naprowadzenie mnie na właściwą ścieżkę która rozwiązała problem.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 20:59 |