Changeset 399 for trunk/mapbender/http/nav/alkisnav_fls.php
- Timestamp:
- 02/15/18 17:46:51 (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/mapbender/http/nav/alkisnav_fls.php
r376 r399 1 1 <?php 2 /* Navigation mit ALKIS-Daten im Mapbender 2.7 - Teil FlurstÃŒck-Suche 3 Diese Version des Programms verwendet die Datenbank-Struktur aus dem norGIS-ALKIS-Importer. 4 5 Hinweis: In der Mapbender-Konfiguration muss die Gemeindenummer nun 3stellig mit fÃŒhrenden 0 angegeben sein. 6 2 /* Navigation mit ALKIS-Daten im Mapbender 2 - Teil FlurstÃŒck-Suche 3 Datenbank-Struktur aus dem norGIS-ALKIS-Importer. 7 4 Version vom 8 5 2016-02-11 Version fÃŒr norGIS-ALKIS-Import aus Version Classic abgeleitet. 9 6 2016-03-02 $gemeinde auf feste LÀnge korrigieren 10 7 2016-11-28 Gemeinsam genutzte Datenbanken ermöglichen 8 2017-03-06 Korrektur: Gemeinde-Suche bei Kreis-DB in norGIS-Struktur 9 2018-02-15 Strikte Input-Validation der Parameter 11 10 */ 12 11 13 // Variable initialisieren14 $hist="n";15 $gm="";16 17 12 $cntget = extract($_GET); 18 $gemeinde=str_pad($gemeinde, 3, "0", STR_PAD_LEFT); // temporÀr bei Umstellung auf norGIS, besser im Mapbender 3stellig konfigurieren. 13 14 // Input-Validation 15 // Parameter aus Konfiguration oder Links sollten keine "Eingabefehler" enthalten. 16 // Entweder falsche Konfiguration oder Hack. Programm sofort abbrechen. 17 if (!isset($gkz) or !preg_match('#^[0-9]{3}$#', $gkz)) {die("Eingabefehler gkz");} // Mandant, muss! 18 19 if(isset($epsg)) { // SRS, kann. Wenn als Parameter ... 20 if (preg_match('#^EPSG:[0-9]{4,5}$#', $epsg)) { // Prefix aus MB-Mapframe 21 $epsg = str_replace("EPSG:", "" , $epsg); 22 } elseif (!preg_match('#^[0-9]{4,5}$#', $epsg)) { // nur die Nummer 23 die("Eingabefehler epsg"); 24 } 25 } else { // Nichts ÃŒbergeben 26 $epsg=$gui_epsg; // dann default aus Conf 27 } 28 29 // Filter-Parameter fÃŒr Gemeindenummer in Kreis-Datenbank aus der Mapbender GUI-Konfiguration 30 if (isset($gemeinde) AND trim($gemeinde, '0') != "") { 31 if (!preg_match('#^[0-9]{1,3}$#', $gemeinde)) {die("Eingabefehler Gemeinde");} 32 $gemeinde=str_pad($gemeinde, 3, "0", STR_PAD_LEFT); 33 if(strpos($gemeinde, ",") === false) { 34 $gfilter = 1; // Einzelwert 35 } else { 36 $gfilter = 2; // Liste 37 } 38 } else { // Kein Filter 39 $gemeinde = ""; 40 $gfilter = 0; 41 } 42 43 // Suche nach historischen FS 44 if(isset($hist)) { // Wenn ÃŒbergeben 45 if (!preg_match('#^[jn]{1}$#', $hist)) {die("Eingabefehler hist");} // Ja/Nein 46 if ($hist == "j") { 47 $phist = true; // als Boolean 48 } else { 49 $phist = false; 50 } 51 } else { // Nichts ÃŒbergeben 52 $phist = false; // default = aktuelle FS 53 } 54 55 // Gemeinde-Nummer als Link aus der Baumstruktur 56 if (isset($gm) ) { 57 if (!preg_match('#^[0-9]{8}$#', $gm)) {die("Eingabefehler gm");} 58 } else { 59 $gm=""; // Var. init. 60 } 61 19 62 include("../../conf/alkisnav_conf.php"); 20 63 include("alkisnav_fkt.php"); // Funktionen … … 252 295 switch ($gfilter) { 253 296 case 1: // Einzelwert 254 $sql.="WHERE substring(gemshl from 6 for 3) = '".$gemeinde."' "; break; 297 $sql.="WHERE substring(gemshl from 6 for 3) = '".$gemeinde."' "; 298 break; 255 299 case 2: // Liste 256 $sql.="WHERE substring(gemshl from 6 for 3) in ('".str_replace(",", "','", $gemeinde)."') "; break; 300 $sql.="WHERE substring(gemshl from 6 for 3) in ('".str_replace(",", "','", $gemeinde)."') "; 301 break; 257 302 default: break; 258 303 } 259 $sql.=" AND endet IS NULLORDER BY gemname LIMIT $1 ;";304 $sql.="ORDER BY gemname LIMIT $1 ;"; 260 305 $res=pg_prepare("", $sql); 261 306 $res=pg_execute("", array($linelimit)); … … 269 314 $gnr=$row["gemshl"]; 270 315 $gemeindename=$row["gemname"]; 271 zeile_gemeinde($gnr, $gemeindename );316 zeile_gemeinde($gnr, $gemeindename, false); 272 317 $cnt++; 273 318 } … … 327 372 if(preg_match("/\*/",$fskennz)){ 328 373 $match = trim(preg_replace("/\*/i","%", strtoupper($fskennz))); 374 // Durchsuchte Namenspalte ist rechts mit Leerstellen aufgefÃŒllt. Darum Wildcard am Ende erzwingen. 375 if (substr($match, strlen($match), 1) != "%") {$match.="%";} 329 376 } else { 330 377 $match = trim($fskennz)."%"; … … 333 380 // Pass auf! GemeindeschlÃŒssel ist in den beiden SchlÃŒsseltabellen linksbÃŒndig gefÃŒllt, 334 381 // aber unterschiedlich lang hinten mit Leerstellen aufgefÃŒllt. 335 $sql ="SELECT substring(g.gemshl from 1 for 8) AS gemshl, g.gemashl, trim(trailing from g.gemarkung) AS gemarkung, trim(trailing from s.gemname) AS gemname 336 FROM gema_shl g JOIN gem_shl s ON substring(g.gemshl from 1 for 8) = substring(s.gemshl from 1 for 8) WHERE g.gemarkung ILIKE $1 ";382 $sql ="SELECT substring(g.gemshl from 1 for 8) AS gemshl, g.gemashl, trim(trailing from g.gemarkung) AS gemarkung, trim(trailing from s.gemname) AS gemname " 383 ."FROM gema_shl g JOIN gem_shl s ON substring(g.gemshl from 1 for 8) = substring(s.gemshl from 1 for 8) WHERE g.gemarkung ILIKE $1 "; 337 384 338 385 switch ($gfilter) { … … 735 782 // Start hier! 736 783 // =========== 737 if(isset($epsg)) { 738 $epsg = str_replace("EPSG:", "" , $_REQUEST["epsg"]); 784 if ($debug >= 1) {echo "\n<p class='dbg'>gemeinde='".$gemeinde."'. gfilter='".$gfilter."'</p>";} 785 786 // Validation: Eingabefeld aus Formular. 787 // Suchbegriff (Gemarkungsname) oder FlurstÃŒcks-Kennzeichen (ll)gggg-fff-zzzz/nnn (11). 788 // Hier formatierte Meldung und html-Foot. 789 if (isset($fskennz) and $fskennz != "" ) { 790 if (!preg_match('#^[0-9a-zA-ZÀöÌÃÃÃÃ* -]{1,25}$#', $fskennz)) { 791 echo "<p class='err'>Eingabe unzulässig!</p>"; 792 $fskennz=""; 793 } 739 794 } else { 740 #if ($debug >= 1) {echo "\n<p class='dbg'>kein EPSG gesetzt</p>";} 741 $epsg=$gui_epsg; // Conf 742 } 743 744 // Filter aus Mapbender-GUI-Einbindung 745 if ($gemeinde == "") { 746 $gfilter = 0; 747 } elseif(strpos($gemeinde, ",") === false) { 748 $gfilter = 1; // Einzelwert 749 } else { 750 $gfilter = 2; // Liste 751 } 752 if ($hist == "j") {$phist = true;} else {$phist = false;} 753 795 $fskennz=""; 796 } 797 754 798 if($gm != "") { // Self-Link aus Gemeinde-Liste 755 799 $trans="Gemarkungen zur Gemeinde"; … … 821 865 } 822 866 823 // Nach Durchlaufen des PHP-Scriptes die zuletzt ausgefÃŒhrte Transaktion 824 // im Kopf des Ergebnisrahmens anzeigen. 867 // Nach Durchlaufen des PHP-Scriptes die zuletzt ausgefÃŒhrte Transaktion im Kopf des Ergebnisrahmens anzeigen. 825 868 // Dazu die im HTML-Header definierte Javascript-Function benutzen. 826 869 // Alternativ wird auch aus dem Javascript "positionieren Karte" dieser Titel gesetzt. … … 829 872 transtitle('".$trans."'); 830 873 </script>"; 831 832 874 ?> 833 875
Note: See TracChangeset
for help on using the changeset viewer.