Autor Zpráva
Kateřina
Profil *
Mám v mySQL několik GPS souradnic a chtěla bych si povolit jen ty, které jsou v rámci ČR - samozřejmě zhruba. Zadala jsem si tedy šířku a výšku a zadala si ji do IF, aby to propouštělo jen to co má.

 if ($gps_x != "" AND $gps_y != "")
 {
 $kontrola_x = round($gps_x,1);
 $kontrola_y = round($gps_y,1);

  // zapiseme GPS pouze pro slevy v ramci Ceske republiky
  if (($kontrola_x >= "48.4" AND $kontrola_x <= "51.3") AND ($kontrola_y >= "12.5" AND $kontrola_y <= "18.5"))
  {
  sql("UPDATE detail SET povoleno = '1' WHERE id='$data[0]'");
  }
 }


Výběr mám zacyklený přes foreach s maximálním výpisem po 20-ti záznamech po 5-ti minutách - napojeno přes CRON.

Nevím proč, ale dostává se mě tam i GPS, která tam nemá co dělat: 49.1 - 18.9
Přitom IF je nastaven tak, že co je nad nebo ještě rovno 18.5 proleze, ale ostatní ne. Přitom 18.9 mě tam proleze.

Nevíte prosím Vás, čím to může být? Vidím to na nějakou pitomost, ale nevím vůbec o jakou.

PS: sql(); mám funkci, která se připojuje k mysql - tohle mě tam funguje dobře. Jen ten IF dělá binec.
TomášK
Profil
Porovnáváte čísla s řetězci. Teď sice nevidím, proč 18.9 projde, čekal bych, že naopak neprojde ani 18.1, ale myslím, že to bude tím.
 if (($kontrola_x >= 48.4 AND $kontrola_x <= 51.3) AND ($kontrola_y >= 12.5 AND $kontrola_y <= 18.5))
Kateřina
Profil *
Bohužel ani tohle mou chybu nevyřeší a přes IF to projde. Je ale zajímavé, že, když si IF udělám zvlášť - osamocený v souboru (necykluje se to přes FOREACH), tak IF funguje. Ale to by přeci vliv nemělo mít.

Jak říkám, je to opravdu zvláštní a setkala jsem se s tím poprvé.
TomášK
Profil
Kateřina:
V tom případě bude chyba zřejmě jinde než u ifu. Každopádně zvažte, zda vůbec ukládat do databáze sloupec povoleno, je tam pravděpodobně nadbytečný, neb obsahuje informace, které se dají dopočítat z ostatních sloupců. Alternativních řešení je hned několik:
* přidat do databáze omezení (CONSTRAINT), aby takové souřadnice vůbec nemohly být vložené
* řešit to podmínkou až při výpisu dat z databáze
* vytvořit si pohled (VIEW), který bude sloupec povoleno dopočítávat ze souřadnic
Joker
Profil
Kateřina:
Já bych tipnul, jelikož $gps_x a $gps_y jsou nejspíš taky řetězce, není náhodou ta hodnota 18,6 s čárkou, tj. převedeno na číslo 18, což projde?
Kateřina
Profil *
GPS sosám z XML od http://maps.googleapis.com/maps/api/geocode/xml?address= kde do address vkládám přes FOREACH adresu CRONem po 20-ti záznamech. Neosvědčilo se mě to tahat naráz třeba 100-300 záznamů a tak jsem si to udělala takto.

XML pak parsuji za pomocí:
$xml_gps = simplexml_load_file($gps_url);
$gps_x = $xml_gps->result->geometry->location->lat;
$gps_y = $xml_gps->result->geometry->location->lng;
petr 6
Profil
Kateřina:
Projde 18.9, projde i 19 nebo třeba 23.5?

Zkuste na řádek 5 napsat
echo $kontrola_y;
Co se vypíše?

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0