[ milanvla @ 06.05.2004. 22:28 ] @
Kako da u mysql upitu ubacim i funkciju
evo na primer:

function distance($lon1, $lat1, $lon2, $lat2) {
// $convert to radians
$lon1 = ($lon1*pi()) / 180;
$lon2 = ($lon2*pi()) / 180;
$lat1 = ($lat1*pi()) / 180;
$lat2 = ($lat2*pi()) / 180;
// haversine formula
$dlon = $lon2 - $lon1;
$dlat = $lat2 - $lat1;
$a = (sin($dlat/2) * sin($dlat/2)) + cos($lat1) * cos($lat2) * (sin($dlon/2) * sin($dlon/2));
$c = 2 * atan2(sqrt($a), sqrt(1-$a));
// figure out in miles & kilometers
$mi = round(3956 * $c, 2);
$km = round(6367 * $c, 2);
//return "$km km ($mi mi)";
return $km;
}

ovo mi vraca rastojanje u km izmedju 2 tacke na osnovu njihovih koordinata.

sada bih hteo da formiram upit koji ce mi prikazati na primer sva mesta koja su od jednog mesta na rastojanju manjem od zadate kilometraze.

$query="select * from $tabela where distance(47.496113, 8.906944, $tabela.breite,$tabela.laenge)<$razdaljina";
mysql_query($query);

ali mi javlja gresku da ne valja upit
kada u sledecem redu stavim
while($niz=mysql_fetch_array($result)){
[ -zombie- @ 07.05.2004. 00:18 ] @
u kombinaciji php+mysql, teško..

probaj bolje php5+SQLite.. http://www.zend.com/php5/articles/php5-sqlite.php
tj preciznije http://www.zend.com/php5/articles/php5-sqlite.php#Heading13

[ milanvla @ 07.05.2004. 09:11 ] @
Hm
ok hvala, toga sam se i bojao

a da li bi moglo na PostgreSQL?

razmisljao sam da prebacim sve na tu bazu
[ alex @ 07.05.2004. 10:36 ] @
Sa PostgreSQL bazom je to i vise nego trivijalno uraditi.. Uz to, mozes da biras u kom ces jeziku da to uradis - PL/pgSQL, PL/Tcl, PL/C, PL/Perl, PL/Python.. You name it.. :)

Za vise detalja pogledaj PostgreSQL dokumentaciju, odnosno Server Programming deo.
[ milanvla @ 07.05.2004. 11:04 ] @
Hvala prijatelju na pomoci

dalje cu moci sam!
[ NetworkAdmin @ 24.05.2004. 12:25 ] @
Citat:

http://dev.mysql.com/doc/mysql/en/Adding_UDF.html
23.2.2 Adding a New User-defined Function

For the UDF mechanism to work, functions must be written in C or C++ and your operating system must support dynamic loading. The MySQL source distribution includes a file `sql/udf_example.cc' that defines 5 new functions. Consult this file to see how UDF calling conventions work.
...
[ NetworkAdmin @ 05.07.2004. 09:37 ] @
Imao sam slican problem i odradio sam to relativno dobro i dosta optimizovano. Ne treba ici na racunanje kompletr udaljenosti svakog zip koda jer u mojoj bazi ima 74,000 zip kodova e to racunati bi bilo jako glupo ako ti treba recimo 50 milja radijus.

Prvo selektuju se svi zip codes koji su u kvadradtu oko zip koda to postizes sa max i min latitude i longitude... onda unutar tog seta racunaj distancu u posebnoj php funkciji.