Hallo liebe Gemeinde.
Ich hab hier einen Code mit dem ich eine Umkreissuche über die GeoDB laufen lasse. Das hat immer toll funktioniert aber nun muss ich das Script umbauen auf mysqli und ich bekomme
es einfach nicht hin. Hätte jemand von Euch Lust mir hierbei zu helfen?
Ich sitze schon die ganze Zeit dran aber bekomme keine Ergebnisse mehr aus dem Script :/
Hier mal der "alte" Code:
Ich würd sogar was springen lassen
Danke und LG Patrick
Ich hab hier einen Code mit dem ich eine Umkreissuche über die GeoDB laufen lasse. Das hat immer toll funktioniert aber nun muss ich das Script umbauen auf mysqli und ich bekomme
es einfach nicht hin. Hätte jemand von Euch Lust mir hierbei zu helfen?
Ich sitze schon die ganze Zeit dran aber bekomme keine Ergebnisse mehr aus dem Script :/
Hier mal der "alte" Code:
PHP-Code:
$mysqli = mysqli_connect("localhost", "USER", "PASS", "DB");
if(!$mysqli)
{
exit("Verbindungsfehler: ".mysqli_connect_error());
}
$zip = $_GET['zip'];
$range = $_GET['range'];
// Die Werte für die Radius-Auswahl
$selectableRanges = array(10, 50, 75, 100);
// Eingaben prüfen
$selectedZip = '';
$selectedRange = '';
if (array_key_exists('zip', $_GET) && $_GET['zip']) {
$selectedZip = intval($_GET['zip']);
}
if (array_key_exists('range', $_GET) && $_GET['range']) {
$selectedRange = intval($_GET['range']);
}
// Ergebnisse berechnen
$results = false;
if ($selectedZip && $selectedRange) {
$results = find_by_zip_and_range($selectedZip, $selectedRange);
}
function find_by_zip_and_range($zip, $rangeInKm) {
$target = geocode_zip($zip);
if ($target) {
$sql = generate_query($target->lat, $target->lng, intval($rangeInKm));
$results = db_query($sql);
return $results;
}
else {
return false;
}
}
function geocode_zip($zip) {
$zip = intval($zip);
$zip = $zip . str_repeat('0', 5-strlen($zip));
$results = db_query("SELECT `lat`, `lng`
FROM `geodb` ORDER BY ABS(`zipcode`-{$zip}) ASC LIMIT 1");
return $results[0];
}
function generate_query($lat, $lng, $distanceInKm) {
$lng1 = $lng - $distanceInKm/abs(cos($lat*pi()/180)*111.04);
$lng2 = $lng + $distanceInKm/abs(cos($lat*pi()/180)*111.04);
$lat1 = $lat-($distanceInKm/111.04);
$lat2 = $lat+($distanceInKm/111.04);
return 'SELECT tour.*, 6371 * 2 * ASIN(SQRT(POWER(SIN(RADIANS('. $lat
. ' - ABS(geodb.lat))), 2) + COS(RADIANS('. $lat
. ')) * COS(RADIANS(geodb.lat)) * POWER(SIN(RADIANS('
. $lng .' - geodb.lng)), 2))) AS distance'
. ' FROM tour'
. ' LEFT JOIN geodb ON tour.plz = geodb.zipcode'
. ' WHERE tour.active AND tour.datum > NOW()'
. ' AND geodb.lng BETWEEN '. $lng1 .' AND '. $lng2
. ' AND geodb.lat BETWEEN '. $lat1 .' AND '. $lat2
. ' GROUP BY tour.datum'
. ' HAVING distance < '. $distanceInKm
. ' ORDER BY distance ASC';
}
function db_connect() {
global $config;
static $db = null;
if (!$db) {
$db = mysql_connect($config['host'], $config['user'], $config['pass']);
mysql_select_db($config['db'], $db);
}
return $db;
}
function db_query($q) {
$result = mysql_query($q, db_connect());
if ($result) {
$results = array();
while ($row = mysql_fetch_object($result)) {
$results[] = $row;
}
return $results;
}
else {
return false;
}
}
function db_get($query, $num=0) {
return mysql_result(mysql_query($query .' LIMIT 1', db_connect()), $num);
}
Danke und LG Patrick
Kommentar