Beispiel #1
0
function outputLocidSelectionForm($locSql, $urlparams)
{
    global $tplname, $locline, $stylepath, $bgcolor1, $bgcolor2;
    require_once $stylepath . '/selectlocid.inc.php';
    unset($urlparams['queryid']);
    unset($urlparams['locid']);
    $urlparams['searchto'] = 'search' . $urlparams['searchtype'];
    unset($urlparams['searchtype']);
    $tplname = 'selectlocid';
    // urlparams zusammenbauen
    $urlparamString = '';
    foreach ($urlparams as $name => $param) {
        // workaround for attribs
        if (is_array($param)) {
            $pnew = '';
            foreach ($param as $p) {
                if ($pnew != '') {
                    $pnew .= ';' . $p;
                } else {
                    $pnew .= $p;
                }
            }
            $param = $pnew;
        }
        if ($urlparamString != '') {
            $urlparamString .= '&' . $name . '=' . urlencode($param);
        } else {
            $urlparamString = $name . '=' . urlencode($param);
        }
    }
    $urlparamString .= '&locid={locid}';
    sql('CREATE TEMPORARY TABLE `locids` ENGINE=MEMORY ' . $locSql);
    sql('ALTER TABLE `locids` ADD PRIMARY KEY (`loc_id`)');
    $rs = sql('SELECT `geodb_textdata`.`loc_id` `loc_id`, `geodb_textdata`.`text_val` `text_val` FROM `geodb_textdata`, `locids` WHERE `locids`.`loc_id`=`geodb_textdata`.`loc_id` AND `geodb_textdata`.`text_type`=500100000 ORDER BY `text_val`');
    $nr = 1;
    $locations = '';
    while ($r = sql_fetch_array($rs)) {
        $thislocation = $locline;
        // locationsdings zusammenbauen
        $locString = '';
        $land = landFromLocid($r['loc_id']);
        if ($land != '') {
            $locString .= htmlspecialchars($land, ENT_COMPAT, 'UTF-8');
        }
        $rb = regierungsbezirkFromLocid($r['loc_id']);
        if ($rb != '') {
            $locString .= ' > ' . htmlspecialchars($rb, ENT_COMPAT, 'UTF-8');
        }
        $lk = landkreisFromLocid($r['loc_id']);
        if ($lk != '') {
            $locString .= ' > ' . htmlspecialchars($lk, ENT_COMPAT, 'UTF-8');
        }
        $thislocation = mb_ereg_replace('{parentlocations}', $locString, $thislocation);
        // koordinaten ermitteln
        $r['loc_id'] = $r['loc_id'] + 0;
        $rsCoords = sql('SELECT `lon`, `lat` FROM `geodb_coordinates` WHERE loc_id=' . $r['loc_id'] . ' LIMIT 1');
        if ($rCoords = sql_fetch_array($rsCoords)) {
            $coordString = help_latToDegreeStr($rCoords['lat']) . ' ' . help_lonToDegreeStr($rCoords['lon']);
        } else {
            $coordString = '[keine Koordinaten vorhanden]';
        }
        $thislocation = mb_ereg_replace('{coords}', htmlspecialchars($coordString, ENT_COMPAT, 'UTF-8'), $thislocation);
        $thislocation = mb_ereg_replace('{locationname}', htmlspecialchars($r['text_val'], ENT_COMPAT, 'UTF-8'), $thislocation);
        $thislocation = mb_ereg_replace('{urlparams}', $urlparamString, $thislocation);
        $thislocation = mb_ereg_replace('{locid}', urlencode($r['loc_id']), $thislocation);
        $thislocation = mb_ereg_replace('{nr}', $nr, $thislocation);
        $thislocation = mb_ereg_replace('{secondlocationname}', '', $thislocation);
        if ($nr % 2) {
            $thislocation = mb_ereg_replace('{bgcolor}', $bgcolor1, $thislocation);
        } else {
            $thislocation = mb_ereg_replace('{bgcolor}', $bgcolor2, $thislocation);
        }
        $nr++;
        $locations .= $thislocation . "\n";
    }
    tpl_set_var('locations', $locations);
    tpl_set_var('resultscount', mysql_num_rows($rs));
    tpl_set_var('pages', $first_img_inactive . ' ' . $prev_img_inactive . ' 1 ' . $next_img_inactive . ' ' . $last_img_inactive);
    tpl_BuildTemplate();
    exit;
}
 $sql = 'SELECT ' . getSqlDistanceFormula($rLocations['lon'], $rLocations['lat'], 10, 1, 'lon', 'lat', 'geodb_coordinates') . ' `distance`,
                         `geodb_coordinates`.`loc_id` `loc_id`
                   FROM `geodb_coordinates`
                   WHERE `lon` > ' . $minlon . ' AND
                         `lon` < ' . $maxlon . ' AND
                         `lat` > ' . $minlat . ' AND
                         `lat` < ' . $maxlat . '
                   HAVING `distance` < 10
                   ORDER BY `distance` ASC
                   LIMIT 1';
 $rs = sql($sql);
 if (mysql_num_rows($rs) == 1) {
     $r = sql_fetch_array($rs);
     mysql_free_result($rs);
     $locid = $r['loc_id'];
     $admtxt1 = landFromLocid($locid);
     if ($admtxt1 == '0') {
         $admtxt1 = '';
     }
     // bundesland ermitteln
     $rsAdm2 = sql("SELECT `full_name`, `short_form` FROM `gns_locations` WHERE `rc`='&1' AND `fc`='A' AND `dsg`='ADM1' AND `cc1`='&2' AND `adm1`='&3' AND `nt`='N' LIMIT 1", $rLocations['rc'], $rLocations['cc1'], $rLocations['adm1']);
     if (mysql_num_rows($rsAdm2) == 1) {
         $rAdm2 = sql_fetch_array($rsAdm2);
         $admtxt2 = $rAdm2['short_form'];
         if ($admtxt2 == '') {
             $admtxt2 = $rAdm2['full_name'];
         }
     } else {
         $admtxt3 = '';
     }
     $admtxt3 = regierungsbezirkFromLocid($locid);