Changeset 399 for trunk/mapbender/http/nav/alkisnav_eig.php
- Timestamp:
- 02/15/18 17:46:51 (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/mapbender/http/nav/alkisnav_eig.php
r376 r399 1 1 <?php 2 /* Navigation mit ALKIS-Daten im Mapbender 2.7 - Teil EigentÃŒmer-Suche 3 Diese Version des Programms verwendet die Datenbank-Struktur aus dem norGIS-ALKIS-Importer. 4 5 Version vom 2 /* Navigation mit ALKIS-Daten im Mapbender 2 - Teil EigentÃŒmer-Suche 3 Datenbank-Struktur aus dem norGIS-ALKIS-Importer. 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-07-18 Personendaten: Zeilen getauscht. Wie Brief-Anschrift. 9 8 2016-11-28 Gemeinsam genutzte Datenbanken ermöglichen 9 2018-02-15 Strikte Input-Validation der Parameter 10 10 */ 11 11 12 // Variable initialisieren13 $gbkennz="";14 $blattgml="";15 $person ="";16 17 12 $cntget = extract($_GET); 18 $gemeinde=str_pad($gemeinde, 3, "0", STR_PAD_LEFT); // temporÀr .. 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 if (isset($blattgml) and $blattgml != "" ) { 43 if (!preg_match('#^[0-9a-zA-Z]{16}$#', $blattgml)) {die("Eingabefehler GML-ID Blatt");} 44 } else { 45 $blattgml=""; 46 } 47 if (isset($person) and $person != "" ) { 48 if (!preg_match('#^[0-9a-zA-Z]{16}$#', $person)) {die("Eingabefehler GML-ID Person");} 49 } else { 50 $person=""; 51 } 52 if (isset($gbkennz) and $gbkennz != "" ) { // gggg-bbbbbbA-0001 53 if (!preg_match('#^[0-9A-E -]{4,17}$#', $gbkennz)) {die("Eingabefehler Grundbuch-Kennzeichen");} 54 } else { 55 $gbkennz=""; 56 } 57 19 58 include("../../conf/alkisnav_conf.php"); // Konfigurations-Einstellungen 20 59 include("alkisnav_fkt.php"); // Funktionen … … 53 92 function familiensuche() { 54 93 // Einen Link generieren, um nach anderen Personen mit gleichem Familiennamen (Nachnamen) zu suchen. 55 // Bei versehendlich falschem Vornamen muss nicht von vorn begonnen werden. 94 // Bei versehendlich falschem Vornamen muss somit nicht von vorn begonnen werden. 95 56 96 global $gkz, $gemeinde, $epsg, $name; 57 if(isset($name)) { // Familiensuche 58 echo "\n<div class='back' title='Andere Personen mit diesem Nachnamen'>"; 59 echo "\n\t\t<img class='nwlink' src='ico/Eigentuemer_2.png' width='16' height='16' alt='FAM' title='Andere Personen mit diesem Nachnamen'> "; 60 echo "\n<a class='back' href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&gemeinde=".$gemeinde."&epsg=".$epsg."&name=".$name."'>\"".$name."\"</a>"; 61 echo "\n</div>\n<br>"; 97 $lnknam=urlencode(substr($name,0,50)); 98 $dspnam=htmlentities($name, ENT_QUOTES, "UTF-8"); 99 if(isset($name)) { 100 echo "\n<div class='back' title='Andere Personen mit diesem Nachnamen'>" 101 ."\n\t\t<img class='nwlink' src='ico/Eigentuemer_2.png' width='16' height='16' alt='FAM' title='Andere Personen mit diesem Nachnamen'> " 102 ."\n<a class='back' href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&gemeinde=".$gemeinde."&epsg=".$epsg."&name=".$lnknam."'>\"".$dspnam."\"</a>" 103 ."\n</div>\n<br>"; 62 104 } 63 105 return; … … 68 110 global $gkz, $gemeinde, $epsg, $name, $person, $blattgml, $auskpath; // $debug 69 111 70 $sql ="SELECT p.nachnameoderfirma, p.vorname, p.geburtsdatum, p.namensbestandteil, 71 a.ort_post, a.postleitzahlpostzustellung AS plz, a.strasse, a.hausnummer72 FROM ax_person p LEFT JOIN ax_anschrift a ON a.gml_id=ANY(p.hat)73 WHERE p.gml_id= $1 AND p.endet IS NULL AND a.endet IS NULL LIMIT 1;";112 $sql ="SELECT p.nachnameoderfirma, p.vorname, p.geburtsdatum, p.namensbestandteil, " 113 ."a.ort_post, a.postleitzahlpostzustellung AS plz, a.strasse, a.hausnummer " 114 ."FROM ax_person p LEFT JOIN ax_anschrift a ON a.gml_id=ANY(p.hat) " 115 ."WHERE p.gml_id= $1 AND p.endet IS NULL AND a.endet IS NULL LIMIT 1;"; 74 116 // Es wird nur EINE Zeile ausgewertet 75 117 … … 160 202 161 203 if($match1 != '%'){ 162 $sql.="nachnameoderfirma ILIKE $1 AND p.vorname ILIKE $2 " ;163 $sql.="ORDER BY p.nachnameoderfirma, p.vorname LIMIT $3 ;";204 $sql.="nachnameoderfirma ILIKE $1 AND p.vorname ILIKE $2 " 205 ."ORDER BY p.nachnameoderfirma, p.vorname LIMIT $3 ;"; 164 206 $v=array($match, $match1, $linelimit); 165 207 }else{ 166 $sql.="nachnameoderfirma ILIKE $1 " ;167 $sql.="ORDER BY p.nachnameoderfirma, p.vorname LIMIT $2 ;";208 $sql.="nachnameoderfirma ILIKE $1 " 209 ."ORDER BY p.nachnameoderfirma, p.vorname LIMIT $2 ;"; 168 210 $v=array($match, $linelimit); 169 211 } … … 189 231 } elseif($cnt == 1){ // Eindeutig! 190 232 $person = $persongml; 233 $name = $nachname; // familiensuche() verwendet sonst den Suchbegriff 191 234 } else { 192 235 echo "\n<p class='anz'>".$cnt." Eigentümer mit '".$name."'</p>"; // im Limit … … 213 256 // Body 214 257 // Suche nach GrundbÃŒchern der Person 215 $sql ="SELECT gb.gml_id AS gml_g, gb.buchungsblattnummermitbuchstabenerweiterung as blatt, b.bezirk, b.bezeichnung AS beznam 216 FROM ax_namensnummer n JOIN ax_buchungsblatt gb ON n.istbestandteilvon=gb.gml_id217 JOIN ax_buchungsblattbezirk b ON gb.land=b.land AND gb.bezirk=b.bezirk218 WHERE n.bennennt = $1 AND n.endet IS NULL AND gb.endet IS NULL AND b.endet IS NULL;";258 $sql ="SELECT gb.gml_id AS gml_g, gb.buchungsblattnummermitbuchstabenerweiterung as blatt, b.bezirk, b.bezeichnung AS beznam " 259 ."FROM ax_namensnummer n JOIN ax_buchungsblatt gb ON n.istbestandteilvon=gb.gml_id " 260 ."JOIN ax_buchungsblattbezirk b ON gb.land=b.land AND gb.bezirk=b.bezirk " 261 ."WHERE n.bennennt = $1 AND n.endet IS NULL AND gb.endet IS NULL AND b.endet IS NULL;"; 219 262 220 263 // Parameter $gbkennz, z.B. nach Klick auf Zeile "Bezirk" … … 275 318 $nxtbltblatt=urlencode($blatt); 276 319 $nxtbltseite=$bltseite + 1; 277 echo "\n - <a class='blt' href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&gemeinde=".$gemeinde."&epsg=".$epsg."&person=".$person."&bltbez=".$nxtbltbez."&bltblatt=".$nxtbltblatt."&bltseite=".$nxtbltseite."' " ;278 echo "title='Blättern ab ".htmlentities($beznam)." Blatt ".$blatt."'>weitere</a>";279 echo"</p>";320 echo "\n - <a class='blt' href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&gemeinde=".$gemeinde."&epsg=".$epsg."&person=".$person."&bltbez=".$nxtbltbez."&bltblatt=".$nxtbltblatt."&bltseite=".$nxtbltseite."' " 321 ."title='Blättern ab ".htmlentities($beznam)." Blatt ".$blatt."'>weitere</a>" 322 ."</p>"; 280 323 } elseif($cnt == 1) { // Eindeutig! 281 324 $blattgml=$gml; // dann Stufe 3 gleich nachschieben … … 305 348 306 349 // Grundbuch-Daten ermitteln 307 $sql ="SELECT gb.gml_id AS gml_g, gb.buchungsblattnummermitbuchstabenerweiterung as blatt, b.bezirk, b.bezeichnung AS beznam " ;308 $sql.="FROM ax_buchungsblatt gb JOIN ax_buchungsblattbezirk b ON gb.land=b.land AND gb.bezirk=b.bezirk ";309 $sql.="WHERE gb.gml_id= $1 AND gb.endet IS NULL and b.endet IS NULL LIMIT 1 ;";350 $sql ="SELECT gb.gml_id AS gml_g, gb.buchungsblattnummermitbuchstabenerweiterung as blatt, b.bezirk, b.bezeichnung AS beznam " 351 ."FROM ax_buchungsblatt gb JOIN ax_buchungsblattbezirk b ON gb.land=b.land AND gb.bezirk=b.bezirk " 352 ."WHERE gb.gml_id= $1 AND gb.endet IS NULL and b.endet IS NULL LIMIT 1 ;"; 310 353 $v=array($blattgml); 311 354 $res=pg_prepare("", $sql); … … 353 396 354 397 // Baustein 1: SQL-Anfang fuer beide Varianten 355 $sql1 ="SELECT gb.gml_id AS gml_g, gb.buchungsblattnummermitbuchstabenerweiterung as blatt, b.bezirk, b.bezeichnung AS beznam, 356 s1.gml_id as bsgml, s1.laufendenummer AS lfd, f.gml_id, f.flurnummer, f.zaehler, f.nenner, f.gemeinde, ot.gemashl, trim(trailing from ot.gemarkung) AS gemarkungsname, ";398 $sql1 ="SELECT gb.gml_id AS gml_g, gb.buchungsblattnummermitbuchstabenerweiterung as blatt, b.bezirk, b.bezeichnung AS beznam, " 399 ."s1.gml_id as bsgml, s1.laufendenummer AS lfd, f.gml_id, f.flurnummer, f.zaehler, f.nenner, f.gemeinde, ot.gemashl, trim(trailing from ot.gemarkung) AS gemarkungsname, "; 357 400 if($epsg == "25832") { // Transform nicht notwendig 358 $sql1.="st_x(st_centroid(f.wkb_geometry)) AS x, "; 359 $sql1.="st_y(st_centroid(f.wkb_geometry)) AS y "; 401 $sql1.="st_x(st_centroid(f.wkb_geometry)) AS x, st_y(st_centroid(f.wkb_geometry)) AS y "; 360 402 } else { 361 $sql1.="st_x(st_transform(st_centroid(f.wkb_geometry), ".$epsg.")) AS x, " ;362 $sql1.="st_y(st_transform(st_centroid(f.wkb_geometry), ".$epsg.")) AS y ";403 $sql1.="st_x(st_transform(st_centroid(f.wkb_geometry), ".$epsg.")) AS x, " 404 ."st_y(st_transform(st_centroid(f.wkb_geometry), ".$epsg.")) AS y "; 363 405 } 364 406 365 407 // NamenNummer >istbestandteilvon> buchungsblatt <istbestandteilvon< buchungsstelle-1 366 $sql1.="FROM ax_namensnummer nn 367 JOIN ax_buchungsblatt gb ON gb.gml_id=nn.istbestandteilvon368 JOIN ax_buchungsblattbezirk b ON gb.land=b.land AND gb.bezirk=b.bezirk369 JOIN ax_buchungsstelle s1 ON gb.gml_id=s1.istbestandteilvon ";408 $sql1.="FROM ax_namensnummer nn " 409 ."JOIN ax_buchungsblatt gb ON gb.gml_id=nn.istbestandteilvon " 410 ."JOIN ax_buchungsblattbezirk b ON gb.land=b.land AND gb.bezirk=b.bezirk " 411 ."JOIN ax_buchungsstelle s1 ON gb.gml_id=s1.istbestandteilvon "; 370 412 371 413 // Baustein A: Auswahl 1 oder 2 … … 374 416 375 417 // buchungsStelle1 (herr.) >an> buchungsStelle2 (dien.) <istGebucht< FS 376 $sqla2 ="JOIN ax_buchungsstelle s2 ON s2.gml_id=ANY(s1.an) " ;377 $sqla2.="JOIN ax_flurstueck f ON s2.gml_id=f.istgebucht ";418 $sqla2 ="JOIN ax_buchungsstelle s2 ON s2.gml_id=ANY(s1.an) " 419 ."JOIN ax_flurstueck f ON s2.gml_id=f.istgebucht "; 378 420 379 421 // Baustein 2: SQL-Ende fuer beide Varianten 380 $sql2 ="JOIN gema_shl ot ON f.land || f.gemarkungsnummer = ot.gemashl ";// Ortsteil381 $sql2.="WHERE nn.benennt = $1 AND nn.endet IS NULL AND gb.endet IS NULL AND s1.endet IS NULL AND f.endet IS NULL ";422 $sql2 ="JOIN gema_shl ot ON f.land || f.gemarkungsnummer = ot.gemashl " // Ortsteil 423 ."WHERE nn.benennt = $1 AND nn.endet IS NULL AND gb.endet IS NULL AND s1.endet IS NULL AND f.endet IS NULL "; 382 424 $sqlw2="AND s2.endet IS NULL "; 383 425 … … 407 449 $bltwhere =""; 408 450 } else { // BlÀttern, Fortsetzen bei ... 409 $bltwhere ="AND ((b.bezeichnung > '".$bltbez."') " ;410 $bltwhere.="OR (b.bezeichnung = '".$bltbez."' AND gb.buchungsblattnummermitbuchstabenerweiterung > '".$bltblatt."') ";411 $bltwhere.="OR (b.bezeichnung = '".$bltbez."' AND gb.buchungsblattnummermitbuchstabenerweiterung = '".$bltblatt."' AND cast(s1.laufendenummer AS integer) >= ".$bltbvnr." )) ";451 $bltwhere ="AND ((b.bezeichnung > '".$bltbez."') " 452 ."OR (b.bezeichnung = '".$bltbez."' AND gb.buchungsblattnummermitbuchstabenerweiterung > '".$bltblatt."') " 453 ."OR (b.bezeichnung = '".$bltbez."' AND gb.buchungsblattnummermitbuchstabenerweiterung = '".$bltblatt."' AND cast(s1.laufendenummer AS integer) >= ".$bltbvnr." )) "; 412 454 } // FlurstÃŒcke in der angeblÀtterten BVNR werden ggf. wiederholt 413 455 … … 489 531 $nxtbltblatt=urlencode($blatt); 490 532 $nxtbltseite=$bltseite + 1; 491 echo "\n - <a class='blt' href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&gemeinde=".$gemeinde."&epsg=".$epsg."&person=".$person ;492 echo "&gbkennz=".$zgbbez;// Filter Bezirk493 echo "&bltbez=".$nxtbltbez."&bltblatt=".$nxtbltblatt."&bltbvnr=".$bvnr."&bltseite=".$nxtbltseite."&bltrecht=ohne' ";494 echo "title='Blättern ab ".htmlentities($beznam)." Blatt ".$blatt." BVNR ".$bvnr."'>weitere</a>";495 echo"</p>";533 echo "\n - <a class='blt' href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&gemeinde=".$gemeinde."&epsg=".$epsg."&person=".$person 534 ."&gbkennz=".$zgbbez // Filter Bezirk 535 ."&bltbez=".$nxtbltbez."&bltblatt=".$nxtbltblatt."&bltbvnr=".$bvnr."&bltseite=".$nxtbltseite."&bltrecht=ohne' " 536 ."title='Blättern ab ".htmlentities($beznam)." Blatt ".$blatt." BVNR ".$bvnr."'>weitere</a>" 537 ."</p>"; 496 538 } elseif($zfs1 > 1) { // Meldung (Plural) ab 2, im Limit 497 539 echo "\n<p class='anz'>"; … … 567 609 $nxtbltblatt=urlencode($blatt); 568 610 $nxtbltseite=$bltseite + 1; 569 echo "\n - <a class='blt' href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&gemeinde=".$gemeinde."&epsg=".$epsg."&person=".$person ;570 echo "&gbkennz=".$zgbbez;// Filter Bezirk571 echo "&bltbez=".$nxtbltbez."&bltblatt=".$nxtbltblatt."&bltbvnr=".$bvnr."&bltseite=".$nxtbltseite."&bltrecht=nur' ";572 echo "title='Blättern ab ".htmlentities($beznam)." Blatt ".$blatt." BVNR ".$bvnr."'>weitere</a>";573 echo"</p>";611 echo "\n - <a class='blt' href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&gemeinde=".$gemeinde."&epsg=".$epsg."&person=".$person 612 ."&gbkennz=".$zgbbez // Filter Bezirk 613 ."&bltbez=".$nxtbltbez."&bltblatt=".$nxtbltblatt."&bltbvnr=".$bvnr."&bltseite=".$nxtbltseite."&bltrecht=nur' " 614 ."title='Blättern ab ".htmlentities($beznam)." Blatt ".$blatt." BVNR ".$bvnr."'>weitere</a>" 615 ."</p>"; 574 616 } elseif($zfs2 > 1) { // ab 2 575 617 echo "\n<p class='anz'>"; … … 589 631 // 3. gb = gml_id des Grundbuches -> Suche nach FlurstÃŒcken 590 632 591 if(isset($epsg)) { 592 $epsg = str_replace("EPSG:", "" , $_REQUEST["epsg"]); 633 // Validation: Eingabefeld aus Formular. Wird aber auch an Link angehÀngt (LÀnge!) 634 // Suchbegriff (EigentÃŒmer) 635 // Hier formatierte Meldung und html-Foot. 636 if (isset($name) and $name != "" ) { 637 if (!preg_match('#^[a-zA-Z0-9ÀöÌÃÃÃÃ*,. \-&/]{1,50}$#', $name)) { 638 echo "<p class='err'>Eingabe unzulässig!</p>"; 639 // if ($debug > 1) {echo "<p class='err'>Name='".$name."' LÀnge='".strlen($name)."</p>";} 640 $name=""; 641 } 593 642 } else { 594 $epsg=$gui_epsg; // aus Conf 595 } 596 if ($gemeinde == "") { 597 $gfilter = 0; // Gemeinde ungefiltert 598 } elseif(strpos($gemeinde, ",") === false) { 599 $gfilter = 1; // Gemeinde Einzelwert 600 } else { 601 $gfilter = 2; // Gemeinde Filter-Liste 602 } 603 604 $kennztyp=ZerlegungGBKennz($gbkennz); // Grundbuch-Kennzeichen aus Parameter zerlegen: $z__ 643 $name=""; 644 } 645 646 $kennztyp=ZerlegungGBKennz($gbkennz); // Grundbuch-Kennzeichen aus Parameter zerlegen 605 647 // 2=Such Bezirk-Nummer, 3=Such Blatt, 4=Such Buchung BVNR 606 648 … … 633 675 if ($kennztyp > 1) { 634 676 $trans="Grdb. und Flst. von .. in .."; // Filter GB-Bez, 635 // darunter sind dann Name und Bezirk farblich markiert636 677 } else { 637 $trans="Grundb. und Flurst. von .."; // der EigentÃŒmersteht darunter678 $trans="Grundb. und Flurst. von .."; // Name steht darunter 638 679 } 639 680 getGBuFSbyPerson(); // Schritte 2+3 gleichzeitig, dabei Gemeinde-Filter auf Stufe 3 … … 645 686 getEigByName(); // Suchen nach Namensanfang 646 687 647 if($person != "") { // genau EIN Treffer zum Namen688 if($person != "") { // genau EIN Treffer zum gesuchten Namen 648 689 if ($gfilter == 0) { 649 690 $trans="Grundbücher zum Namen";
Note: See TracChangeset
for help on using the changeset viewer.