Changeset 399 for trunk/mapbender/http/nav/alkisnav_grd.php
- Timestamp:
- 02/15/18 17:46:51 (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/mapbender/http/nav/alkisnav_grd.php
r376 r399 1 1 <?php 2 /* Navigation mit ALKIS-Daten im Mapbender 2.7 - Teil Grundbuch-Suche 3 Diese Version des Programms verwendet die Datenbank-Struktur aus dem norGIS-ALKIS-Importer. 4 2 /* Navigation mit ALKIS-Daten im Mapbender 2 - Teil Grundbuch-Suche 3 Datenbank-Struktur aus dem norGIS-ALKIS-Importer. 5 4 Version vom 6 5 2016-02-11 Version fÃŒr norGIS-ALKIS-Import aus Version Classic abgeleitet. 7 6 2016-03-02 $gemeinde auf feste LÀnge korrigieren 8 7 2016-11-28 Gemeinsam genutzte Datenbanken ermöglichen 8 2018-02-15 Strikte Input-Validation der Parameter 9 9 */ 10 10 11 // Variable initialisieren12 $ag="";13 $gbkennz="";14 $buchunggml="";15 $blattgml="";16 17 11 $cntget = extract($_GET); 18 $gemeinde=str_pad($gemeinde, 3, "0", STR_PAD_LEFT); // temporÀr .. 12 13 // Input-Validation 14 // Parameter aus Konfiguration oder Links sollten keine "Eingabefehler" enthalten. 15 // Entweder falsche Konfiguration oder Hack. Programm sofort abbrechen. 16 if (!isset($gkz) or !preg_match('#^[0-9]{3}$#', $gkz)) {die("Eingabefehler gkz");} // Mandant, muss! Formularfeld hidden 17 18 if(isset($epsg)) { // SRS, Formularfeld hidden 19 if (preg_match('#^EPSG:[0-9]{4,5}$#', $epsg)) { // Prefix aus MB-Mapframe 20 $epsg = str_replace("EPSG:", "" , $epsg); 21 } elseif (!preg_match('#^[0-9]{4,5}$#', $epsg)) { // nur die Nummer 22 die("Eingabefehler epsg"); 23 } 24 } else { // Nichts ÃŒbergeben 25 $epsg=$gui_epsg; // dann default aus Conf 26 } 27 28 // Filter-Parameter fÃŒr Gemeindenummer in Kreis-Datenbank aus der Mapbender GUI-Konfiguration, Formularfeld hidden 29 if (isset($gemeinde) AND trim($gemeinde, '0') != "") { 30 if (!preg_match('#^[0-9]{1,3}$#', $gemeinde)) {die("Eingabefehler Gemeinde");} 31 $gemeinde=str_pad($gemeinde, 3, "0", STR_PAD_LEFT); 32 if(strpos($gemeinde, ",") === false) { 33 $gfilter = 1; // Einzelwert 34 } else { 35 $gfilter = 2; // Liste 36 } 37 } else { // Kein Filter 38 $gemeinde = ""; 39 $gfilter = 0; 40 } 41 42 // Optionale Parameter. Links aus der Baumstruktur. Wenn nicht gesetzt, dann die Variable initialisieren. 43 if (isset($ag) and $ag != "" ) { // Amtsgericht-Nummer 44 if (!preg_match('#^[0-9]{4}$#', $ag)) {die("Eingabefehler Amtsgericht");} 45 } else { 46 $ag=""; 47 } 48 if (isset($buchunggml) and $buchunggml != "" ) { 49 if (!preg_match('#^[0-9a-zA-Z]{16}$#', $buchunggml)) {die("Eingabefehler GML-ID Buchung");} 50 } else { 51 $buchunggml=""; 52 } 53 if (isset($blattgml) and $blattgml != "" ) { 54 if (!preg_match('#^[0-9a-zA-Z]{16}$#', $blattgml)) {die("Eingabefehler GML-ID Blatt");} 55 } else { 56 $blattgml=""; 57 } 58 if (isset($gbbeznam) and $gbbeznam != "" ) { 59 if (!preg_match('#^[a-zA-ZÀÌöÃÃÃÃ12 -]{3,40}$#', $gbbeznam)) {die("Eingabefehler Grundbuch-Bezirks-Name '".$gbbeznam."'");} 60 } else { 61 $gbbeznam=""; 62 } 63 19 64 include("../../conf/alkisnav_conf.php"); // Konfigurations-Einstellungen 20 65 include("alkisnav_fkt.php"); // Funktionen … … 59 104 $linelimit=40; 60 105 61 $sql ="SELECT stelle, bezeichnung AS ag FROM ax_dienststelle 62 WHERE stelle IN (".$liste_ag.") AND stellenart = 1000 AND endet IS NULL 63 ORDER BY bezeichnung LIMIT $1 ;"; 106 $sql="SELECT stelle, bezeichnung AS ag FROM ax_dienststelle " 107 ."WHERE stelle IN (".$liste_ag.") AND stellenart = 1000 AND endet IS NULL ORDER BY bezeichnung LIMIT $1 ;"; 64 108 $res = pg_prepare("", $sql); 65 109 $res = pg_execute("", array($linelimit)); … … 99 143 // Body 100 144 // Die Subquery stellt sicher, dass nur Bezirke aufgelistet werden, die auch BlÀtter enthalten 101 $sql ="SELECT g.bezirk, g.bezeichnung FROM ax_buchungsblattbezirk g 102 JOIN ax_dienststelle a ON g.stelle=a.stelle 103 WHERE a.stelle = $1 AND a.stellenart = 1000 AND a.endet IS NULL AND g.endet IS NULL 104 AND NOT (SELECT gml_id FROM ax_buchungsblatt b WHERE b.land=g.land AND b.bezirk=g.bezirk AND b.endet IS NULL LIMIT 1) IS NULL 105 ORDER BY g.bezeichnung LIMIT $2 ;"; 145 $sql ="SELECT g.bezirk, g.bezeichnung FROM ax_buchungsblattbezirk g JOIN ax_dienststelle a ON g.stelle=a.stelle " 146 ."WHERE a.stelle = $1 AND a.stellenart = 1000 AND a.endet IS NULL AND g.endet IS NULL " 147 ."AND NOT (SELECT gml_id FROM ax_buchungsblatt b WHERE b.land=g.land AND b.bezirk=g.bezirk AND b.endet IS NULL LIMIT 1) IS NULL " 148 ."ORDER BY g.bezeichnung LIMIT $2 ;"; 106 149 107 150 $v = array($agkey, $linelimit); … … 135 178 // Parameter = SchlÃŒssel des Bezirks 136 179 #global $debug; 137 $sql ="SELECT a.stelle, a.bezeichnung AS ag, g.bezeichnung FROM ax_buchungsblattbezirk g 138 JOIN ax_dienststelle a ON g.stelle=a.stelle WHERE g.bezirk= $1 AND g.endet IS NULL AND a.endet IS NULL LIMIT 1;";180 $sql ="SELECT a.stelle, a.bezeichnung AS ag, g.bezeichnung FROM ax_buchungsblattbezirk g " 181 ."JOIN ax_dienststelle a ON g.stelle=a.stelle WHERE g.bezirk= $1 AND g.endet IS NULL AND a.endet IS NULL LIMIT 1;"; 139 182 $v=array($gbbez); 140 183 $res=pg_prepare("", $sql); … … 166 209 $linelimit=80; 167 210 168 $sql ="SELECT a.stelle, a.bezeichnung AS ag, g.bezirk, g.bezeichnung FROM ax_buchungsblattbezirk g 169 JOIN ax_dienststelle a ON g.stelle=a.stelle170 WHERE g.bezeichnung ILIKE $1 AND g.endet IS NULL AND a.endet IS NULL171 ORDER BY a.bezeichnung, g.bezeichnung LIMIT $2 ;";// "AND a.stellenart=1000 " Amtsgericht211 $sql ="SELECT a.stelle, a.bezeichnung AS ag, g.bezirk, g.bezeichnung FROM ax_buchungsblattbezirk g " 212 ."JOIN ax_dienststelle a ON g.stelle=a.stelle " 213 ."WHERE g.bezeichnung ILIKE $1 AND g.endet IS NULL AND a.endet IS NULL " 214 ."ORDER BY a.bezeichnung, g.bezeichnung LIMIT $2 ;"; // "AND a.stellenart=1000 " Amtsgericht 172 215 if ( $gbkennz == "") { 173 216 $match = "%"; … … 175 218 if(preg_match("/\*/",$gbkennz)){ 176 219 $match = trim(preg_replace("/\*/i","%", strtoupper($gbkennz))); 220 if (substr($match, strlen($match), 1) != "%") {$match.="%";} // Wildcard am Ende obligatorisch 177 221 } else { 178 222 $match = trim($gbkennz)."%"; … … 227 271 } 228 272 // Body 229 $sql ="SELECT b.gml_id, b.buchungsblattnummermitbuchstabenerweiterung AS blatt FROM ax_buchungsblatt b 230 WHERE b.bezirk= $1 AND b.endet IS NULL ORDER BY b.buchungsblattnummermitbuchstabenerweiterung LIMIT $2 ;";273 $sql ="SELECT b.gml_id, b.buchungsblattnummermitbuchstabenerweiterung AS blatt FROM ax_buchungsblatt b " 274 ."WHERE b.bezirk= $1 AND b.endet IS NULL ORDER BY b.buchungsblattnummermitbuchstabenerweiterung LIMIT $2 ;"; 231 275 $v=array($zgbbez, $linelimit); 232 276 $res=pg_prepare("", $sql); … … 251 295 echo "\n<p>Geben sie ein: '".$zgbbez."-999A'<br>wobei '999A' = gesuchtes GB-Blatt</p>"; 252 296 // Vorbelegen des Eingabefeldes fÃŒr neue Suche 253 echo "<script type='text/javascript'>parent.GrdGazetteerFrame.gbkennz.value='".$zgbbez."- ?';</script>";297 echo "<script type='text/javascript'>parent.GrdGazetteerFrame.gbkennz.value='".$zgbbez."-';</script>"; 254 298 } elseif ($cntbl > 1) { 255 299 echo "\n<p class='anz'>".$cntbl." Blätter</p>"; // im Limit … … 261 305 // Kennzeichen "Bezirk + Blatt" eingegeben. Dazu die gml_id des Blattes ermitteln. 262 306 global $debug, $zgbbez, $zblatt, $zblattn, $zblattz; 263 $sql ="SELECT b.gml_id, b.buchungsblattnummermitbuchstabenerweiterung AS blatt FROM ax_buchungsblatt b 264 WHERE b.bezirk= $1 AND b.endet IS NULL AND b.buchungsblattnummermitbuchstabenerweiterung ";307 $sql ="SELECT b.gml_id, b.buchungsblattnummermitbuchstabenerweiterung AS blatt FROM ax_buchungsblatt b " 308 ."WHERE b.bezirk= $1 AND b.endet IS NULL AND b.buchungsblattnummermitbuchstabenerweiterung "; 265 309 266 310 if ($zblattz == "") { // Ohne Buchstabenerweiterung: Formate '123','000123 ','0000123' … … 310 354 311 355 // Blatt -> B u c h u n g s s t e l l e 312 $sql ="SELECT s.gml_id FROM ax_buchungsstelle s 313 JOIN ax_buchungsblatt b ON s.istbestandteilvon=b.gml_id314 WHERE b.bezirk= $1 AND s.endet IS NULL AND b.endet IS NULL AND b.buchungsblattnummermitbuchstabenerweiterung ";356 $sql ="SELECT s.gml_id FROM ax_buchungsstelle s " 357 ."JOIN ax_buchungsblatt b ON s.istbestandteilvon=b.gml_id " 358 ."WHERE b.bezirk= $1 AND s.endet IS NULL AND b.endet IS NULL AND b.buchungsblattnummermitbuchstabenerweiterung "; 315 359 316 360 if ($zblattz == "") { // Ohne Buchstabenerweiterung … … 425 469 // Recht "an" (dienende Buchungen und ihre Flurst.) 426 470 427 $sql =$sqlanf.", sd.gml_id AS diengml, sd.laufendenummer AS dienlfd, 428 bd.gml_id AS dienbltgml, bd.buchungsblattnummermitbuchstabenerweiterung AS dienblatt, 429 gd.stelle, gd.gml_id AS dienbezgml, gd.bezirk, gd.bezeichnung AS diengbbez 430 FROM ax_buchungsstelle sh 431 JOIN ax_buchungsstelle sd ON sd.gml_id=ANY(sh.an) 432 JOIN ax_flurstueck f ON f.istgebucht=sd.gml_id 433 JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer 434 JOIN ax_buchungsblatt bd ON sd.istbestandteilvon=bd.gml_id 435 JOIN ax_buchungsblattbezirk gd ON bd.land=gd.land AND bd.bezirk=gd.bezirk 436 WHERE sh.gml_id = $1 AND sh.endet IS NULL AND sd.endet IS NULL AND f.endet IS NULL AND bd.endet IS NULL AND gd.endet IS NULL " 437 438 .$sqlfilter."ORDER BY gd.bezeichnung, bd.buchungsblattnummermitbuchstabenerweiterung, cast(sd.laufendenummer AS integer), f.gemarkungsnummer, f.flurnummer, f.zaehler, f.nenner;"; 471 $sql =$sqlanf.", sd.gml_id AS diengml, sd.laufendenummer AS dienlfd, bd.gml_id AS dienbltgml, bd.buchungsblattnummermitbuchstabenerweiterung AS dienblatt, " 472 ."gd.stelle, gd.gml_id AS dienbezgml, gd.bezirk, gd.bezeichnung AS diengbbez " 473 ."FROM ax_buchungsstelle sh JOIN ax_buchungsstelle sd ON sd.gml_id=ANY(sh.an) " 474 ."JOIN ax_flurstueck f ON f.istgebucht=sd.gml_id " 475 ."JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer " 476 ."JOIN ax_buchungsblatt bd ON sd.istbestandteilvon=bd.gml_id " 477 ."JOIN ax_buchungsblattbezirk gd ON bd.land=gd.land AND bd.bezirk=gd.bezirk " 478 ."WHERE sh.gml_id = $1 AND sh.endet IS NULL AND sd.endet IS NULL AND f.endet IS NULL AND bd.endet IS NULL AND gd.endet IS NULL " 479 480 .$sqlfilter."ORDER BY gd.bezeichnung, bd.buchungsblattnummermitbuchstabenerweiterung, cast(sd.laufendenummer AS integer), f.gemarkungsnummer, f.flurnummer, f.zaehler, f.nenner;"; 439 481 440 482 $v=array($buchunggml); … … 496 538 // Start hier! 497 539 // =========== 498 if(isset($epsg)) { 499 $epsg = str_replace("EPSG:", "" , $_REQUEST["epsg"]); 540 541 // Validation: Eingabefeld aus Formular. 542 // Suchbegriff (Bezirksname) oder Grundbuch-Kennzeichen gggg-999999z-BVNR (17). 543 // Hier formatierte Meldung und html-Foot. 544 if (isset($gbkennz) and $gbkennz != "" ) { 545 if (!preg_match('#^[0-9a-zA-ZÀöÌÃÃÃÃ* -]{1,25}$#', $gbkennz)) { 546 echo "<p class='err'>Eingabe unzulässig!</p>"; 547 $gbkennz=""; 548 } 500 549 } else { 501 $epsg=$gui_epsg; // aus Conf 502 } 503 504 // Filter aus Conf-Datei 505 if ($gemeinde == "") { 506 $gfilter = 0; // ungefiltert 507 } elseif(strpos($gemeinde, ",") === false) { 508 $gfilter = 1; // Einzelwert 509 } else { 510 $gfilter = 2; // Liste 511 // $gemeinde = "'".str_replace(",", "','", $gemeinde)."'"; // Jedes Element in '' 550 $gbkennz=""; 512 551 } 513 552
Note: See TracChangeset
for help on using the changeset viewer.