Changeset 399 for trunk/mapbender


Ignore:
Timestamp:
02/15/18 17:46:51 (6 years ago)
Author:
frank.jaeger
Message:

ALKIS-Navigation für Mapbender 2: Input Validation für alle Parameter. Kleine Korrekturen.

Location:
trunk/mapbender/http/nav
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/mapbender/http/nav/alkisnav_adr.php

    r376 r399  
    11<?php 
    2 /*      Navigation mit ALKIS-Daten im Mapbender 2.7 - Teil Adressen-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 Adressen-Suche  
     3        Datenbank-Struktur aus dem norGIS-ALKIS-Importer. 
    54Version vom  
    65        2016-02-11 Version fÃŒr norGIS-ALKIS-Import aus Version Classic abgeleitet. 
    76        2016-03-02 $gemeinde auf feste LÀnge korrigieren 
    87        2016-11-28 Gemeinsam genutzte Datenbanken ermöglichen 
    9  
    10         ToDo: 
     8        2018-02-15 Strikte Input-Validation der Parameter 
     9ToDo: 
    1110        -       Gruppierung (mit Zeile) der Straßenliste nach Gemeinde 
    1211        -       Eingabe aus "Balken" von Buchauskunft "Lage" zulassen: Numerisch: Gem-Str-Haus-lfd 
     
    1716*/ 
    1817 
    19 // Variable Initialisieren 
    20 $str_schl=""; 
    21 $skey=""; 
    22  
    2318$cntget = extract($_GET); 
    24 $gemeinde=str_pad($gemeinde, 3, "0", STR_PAD_LEFT); // temporÀr 
     19 
     20// Input-Validation 
     21// Parameter aus Konfiguration oder Links sollten keine "Eingabefehler" enthalten. 
     22// Entweder falsche Konfiguration oder Hack. Programm sofort abbrechen. 
     23if (!isset($gkz) or !preg_match('#^[0-9]{3}$#', $gkz)) {die("Eingabefehler gkz");} // Mandant, muss! 
     24 
     25if(isset($epsg)) { // SRS, kann. Wenn als Parameter ... 
     26        if (preg_match('#^EPSG:[0-9]{4,5}$#', $epsg)) { // Prefix aus MB-Mapframe 
     27                $epsg = str_replace("EPSG:", "" , $epsg); 
     28        } elseif (!preg_match('#^[0-9]{4,5}$#', $epsg)) { // nur die Nummer 
     29                die("Eingabefehler epsg"); 
     30        } 
     31} else { // Nichts ÃŒbergeben 
     32        $epsg=$gui_epsg; // dann default aus Conf 
     33} 
     34 
     35// Filter-Parameter fÃŒr Gemeindenummer in Kreis-Datenbank aus der Mapbender GUI-Konfiguration 
     36if (isset($gemeinde) AND trim($gemeinde, '0') != "") { 
     37        if (!preg_match('#^[0-9]{1,3}$#', $gemeinde)) {die("Eingabefehler Gemeinde");} 
     38        $gemeinde=str_pad($gemeinde, 3, "0", STR_PAD_LEFT); 
     39        if(strpos($gemeinde, ",") === false) { 
     40                $gfilter = 1; // Einzelwert 
     41        } else { 
     42                $gfilter = 2; // Liste 
     43        } 
     44} else { // Kein Filter 
     45        $gemeinde = ""; 
     46        $gfilter = 0; 
     47} 
     48// // http://skrzmaptest01.asp.krzwan.de/mapbender/nav/alkisnav_adr.php?gkz=210&gemeinde=004&epsg=25832&str_schl=0575800401798 
     49if (isset($str_schl) ) { 
     50        if (!preg_match('#^[0-9]{4,13}$#', $str_schl)) {die("Eingabefehler Stra&zlig;enschl&uuml;ssel");} 
     51} else { 
     52        $str_schl=""; 
     53} 
     54 
    2555include("../../conf/alkisnav_conf.php"); 
    2656include("alkisnav_fkt.php"); // Funktionen 
     
    75105        } 
    76106 
    77         $sql ="SELECT g.gemeinde, g.bezeichnung AS gemname, k.gml_id, k.bezeichnung, k.schluesselgesamt, k.lage  
    78         FROM ax_lagebezeichnungkatalogeintrag k  
    79         JOIN ax_gemeinde g ON k.land=g.land AND k.regierungsbezirk=g.regierungsbezirk AND k.kreis=g.kreis AND k.gemeinde=g.gemeinde  
    80         WHERE k.bezeichnung ILIKE $1 AND k.endet IS NULL AND g.endet IS NULL "; 
     107        $sql ="SELECT g.gemeinde, g.bezeichnung AS gemname, k.gml_id, k.bezeichnung, k.schluesselgesamt, k.lage " 
     108        ."FROM ax_lagebezeichnungkatalogeintrag k " 
     109        ."JOIN ax_gemeinde g ON k.land=g.land AND k.regierungsbezirk=g.regierungsbezirk AND k.kreis=g.kreis AND k.gemeinde=g.gemeinde " 
     110        ."WHERE k.bezeichnung ILIKE $1 AND k.endet IS NULL AND g.endet IS NULL "; 
    81111 
    82112        switch ($gfilter) { 
     
    143173                $match=str_pad($street, 5, "0", STR_PAD_LEFT); // "Wie eine Zahl" verarbeiten  
    144174        } 
    145         $sql ="SELECT g.bezeichnung AS gemname, k.gml_id, k.bezeichnung, k.schluesselgesamt, k.lage  
    146         FROM ax_lagebezeichnungkatalogeintrag as k  
    147         JOIN ax_gemeinde g ON k.land=g.land AND k.regierungsbezirk=g.regierungsbezirk AND k.kreis=g.kreis AND k.gemeinde=g.gemeinde  
    148         WHERE k.lage LIKE $1 AND k.endet IS NULL AND g.endet IS NULL "; 
     175        $sql ="SELECT g.bezeichnung AS gemname, k.gml_id, k.bezeichnung, k.schluesselgesamt, k.lage " 
     176        ."FROM ax_lagebezeichnungkatalogeintrag as k " 
     177        ."JOIN ax_gemeinde g ON k.land=g.land AND k.regierungsbezirk=g.regierungsbezirk AND k.kreis=g.kreis AND k.gemeinde=g.gemeinde " 
     178        ."WHERE k.lage LIKE $1 AND k.endet IS NULL AND g.endet IS NULL "; 
    149179        switch ($gfilter) { 
    150180                case 1: // Einzelwert 
     
    192222        // Head 
    193223        // Strasse zum Strassenschluessel 
    194         $sql ="SELECT g.bezeichnung AS gemname, k.gml_id AS kgml, k.bezeichnung, k.land, k.regierungsbezirk, k.kreis, k.gemeinde, k.lage  
    195         FROM ax_lagebezeichnungkatalogeintrag as k  
    196         JOIN ax_gemeinde g ON k.land=g.land AND k.regierungsbezirk=g.regierungsbezirk AND k.kreis=g.kreis AND k.gemeinde=g.gemeinde  
    197         WHERE k.schluesselgesamt = $1 AND k.endet IS NULL AND g.endet IS NULL LIMIT 1";  
     224        $sql ="SELECT g.bezeichnung AS gemname, k.gml_id AS kgml, k.bezeichnung, k.land, k.regierungsbezirk, k.kreis, k.gemeinde, k.lage " 
     225        ."FROM ax_lagebezeichnungkatalogeintrag as k " 
     226        ."JOIN ax_gemeinde g ON k.land=g.land AND k.regierungsbezirk=g.regierungsbezirk AND k.kreis=g.kreis AND k.gemeinde=g.gemeinde " 
     227        ."WHERE k.schluesselgesamt = $1 AND k.endet IS NULL AND g.endet IS NULL LIMIT 1";  
    198228 
    199229        $v=array($str_schl);    // Schluessel-Gesamt .. 
     
    220250                        $sqlko ="SELECT "; 
    221251                        if($epsg == "25832") { // Transform nicht notwendig 
    222                                 $sqlko.="st_x(st_Centroid(f.wkb_geometry)) AS x, "; 
    223                                 $sqlko.="st_y(st_Centroid(f.wkb_geometry)) AS y "; 
     252                                $sqlko.="st_x(st_Centroid(f.wkb_geometry)) AS x, st_y(st_Centroid(f.wkb_geometry)) AS y "; 
    224253                        } else { 
    225                                 $sqlko.="st_x(st_transform(st_Centroid(f.wkb_geometry), ".$epsg.")) AS x, "; 
    226                                 $sqlko.="st_y(st_transform(st_Centroid(f.wkb_geometry), ".$epsg.")) AS y "; 
     254                                $sqlko.="st_x(st_transform(st_Centroid(f.wkb_geometry), ".$epsg.")) AS x, " 
     255                                ."st_y(st_transform(st_Centroid(f.wkb_geometry), ".$epsg.")) AS y "; 
    227256                        } 
    228                         $sqlko.="FROM ax_lagebezeichnungohnehausnummer o "; 
    229                         $sqlko.="JOIN ax_flurstueck f ON o.gml_id=ANY(f.zeigtauf) "; 
    230                         $sqlko.="WHERE o.land= $1 AND o.regierungsbezirk= $2 AND o.kreis= $3 AND o.gemeinde= $4 AND o.lage= $5 ";        
    231                         $sqlko.="LIMIT 1;"; // die erstbeste Koordinate 
     257                        $sqlko.="FROM ax_lagebezeichnungohnehausnummer o JOIN ax_flurstueck f ON o.gml_id=ANY(f.zeigtauf) " 
     258                        ."WHERE o.land= $1 AND o.regierungsbezirk= $2 AND o.kreis= $3 AND o.gemeinde= $4 AND o.lage= $5 LIMIT 1;"; // die erstbeste Koordinate 
    232259 
    233260                        $v=array($land,$regb,$kreis,$gemnd,$nr); 
     
    249276 
    250277                        if ($x > 0) { // Koord. bekommen? 
    251                                 echo "\n\t<a title='Positionieren 1:".$scalestr."' href='javascript:"; // mit Link 
    252                                                 echo "transtitle(\"auf Stra&szlig;e positioniert\"); "; 
    253                                                 echo "parent.parent.parent.mb_repaintScale(\"mapframe1\",".$x.",".$y.",".$scalestr."); "; 
    254                                                 echo "parent.parent.showHighlight(".$x.",".$y."); "; 
    255                                         //      echo "document.location.href=\"".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;str_schl=".$str_schl."\""; 
    256                                         echo "' "; // end href 
    257                                         echo "\n\t\tonmouseover='parent.parent.showHighlight(" .$x. "," .$y. ")' "; 
    258                                         echo "\n\t\tonmouseout='parent.parent.hideHighlight()'"; 
    259                                 echo ">\n\t\t".$sname." (".$nr.")\n\t</a>"; 
     278                                echo "\n\t<a title='Positionieren 1:".$scalestr."' href='javascript:" // mit Link 
     279                                                ."transtitle(\"auf Stra&szlig;e positioniert\"); " 
     280                                                ."parent.parent.parent.mb_repaintScale(\"mapframe1\",".$x.",".$y.",".$scalestr."); " 
     281                                                ."parent.parent.showHighlight(".$x.",".$y."); " 
     282                                                ."' " // end href 
     283                                        ."\n\t\tonmouseover='parent.parent.showHighlight(" .$x. "," .$y. ")' " 
     284                                        ."\n\t\tonmouseout='parent.parent.hideHighlight()'" 
     285                                .">\n\t\t".$sname." (".$nr.")\n\t</a>"; 
    260286                        } else { // keine Koord. gefunden 
    261287                                echo $sname." (".$nr.")"; // nur Anzeige, ohne Link 
     
    276302                $sql="SELECT min(replace(h.hausnummer,' ','')) AS hsnr, "; 
    277303                if($epsg == "25832") { // Transform nicht notwendig 
    278                         $sql.="avg (st_x(p.wkb_geometry)) AS x, "; 
    279                         $sql.="avg (st_y(p.wkb_geometry)) AS y ";                
     304                        $sql.="avg (st_x(p.wkb_geometry)) AS x, avg (st_y(p.wkb_geometry)) AS y ";               
    280305                } else {   
    281                         $sql.="avg (st_x(st_transform(p.wkb_geometry,".$epsg."))) AS x, "; 
    282                         $sql.="avg (st_y(st_transform(p.wkb_geometry,".$epsg."))) AS y ";                
    283                 } 
    284                 $sql.="FROM ap_pto p JOIN ax_lagebezeichnungmithausnummer h ON h.gml_id=ANY(p.dientzurdarstellungvon)  
    285                 WHERE p.art='HNR' AND h.land= $1 AND h.regierungsbezirk= $2 AND h.kreis= $3 AND h.gemeinde= $4 AND h.lage= $5  
    286                 AND p.endet IS NULL AND h.endet IS NULL 
    287                 GROUP BY lpad(split_part(hausnummer,' ',1), 4, '0'), split_part(hausnummer,' ',2)  
    288                 ORDER BY lpad(split_part(hausnummer,' ',1), 4, '0'), split_part(hausnummer,' ',2);"; 
     306                        $sql.="avg (st_x(st_transform(p.wkb_geometry,".$epsg."))) AS x, " 
     307                        ."avg (st_y(st_transform(p.wkb_geometry,".$epsg."))) AS y ";             
     308                } 
     309                $sql.="FROM ap_pto p JOIN ax_lagebezeichnungmithausnummer h ON h.gml_id=ANY(p.dientzurdarstellungvon) " 
     310                ."WHERE p.art='HNR' AND h.land= $1 AND h.regierungsbezirk= $2 AND h.kreis= $3 AND h.gemeinde= $4 AND h.lage= $5 " 
     311                ."AND p.endet IS NULL AND h.endet IS NULL " 
     312                ."GROUP BY lpad(split_part(hausnummer,' ',1), 4, '0'), split_part(hausnummer,' ',2) " 
     313                ."ORDER BY lpad(split_part(hausnummer,' ',1), 4, '0'), split_part(hausnummer,' ',2);"; 
    289314                // Problem: In der Datenbank gibt es mehrere hausnummern-Koordinaten fÃŒr verschiedene  
    290315                // MaßstÀbe der Kartendarstellung 
     
    312337                        $x=$rowh["x"]; 
    313338                        $y=$rowh["y"]; 
    314                         echo "\n\t<td class='hsnr'>"; 
    315                                 echo "<a href='"; 
    316                                         echo "javascript:"; 
    317                                         echo "transtitle(\"auf Haus ".$hsnr." positioniert\"); "; 
    318                                         echo "parent.parent.parent.mb_repaintScale(\"mapframe1\",".$x.",".$y.",".$scalehs."); "; 
    319                                         echo "parent.parent.showHighlight(".$x.",".$y.");' "; 
    320                                 echo "onmouseover='parent.parent.showHighlight(".$x.",".$y.")' "; 
    321                                 echo "onmouseout='parent.parent.hideHighlight()"; 
    322                                 echo "'>".$hsnr."</a>"; 
    323                         echo "</td>"; 
     339                        echo "\n\t<td class='hsnr'>" 
     340                                ."<a href='javascript:transtitle(\"auf Haus ".$hsnr." positioniert\"); " 
     341                                        ."parent.parent.parent.mb_repaintScale(\"mapframe1\",".$x.",".$y.",".$scalehs."); " 
     342                                        ."parent.parent.showHighlight(".$x.",".$y.");' " 
     343                                        ."onmouseover='parent.parent.showHighlight(".$x.",".$y.")' " 
     344                                        ."onmouseout='parent.parent.hideHighlight()" 
     345                                ."'>".$hsnr."</a>" 
     346                        ."</td>"; 
    324347                        $cnt++; 
    325348                        $count++; 
     
    342365// Start hier! 
    343366// =========== 
    344 if(isset($epsg)) { 
    345         $epsg = str_replace("EPSG:", "" , $_REQUEST["epsg"]);    
     367 
     368// Validation: Eingabefeld aus Formular. 
     369// Suchbegriff (Straßenname) oder StraßenschlÃŒssel. 
     370// Hier formatierte Meldung und html-Foot. 
     371if (isset($street) and $street != "" ) { 
     372        if (!preg_match('#^[0-9a-zA-ZÀöÌÄÖÜß* -.]{1,25}$#', $street)) { 
     373                echo "<p class='err'>Eingabe unzul&auml;ssig!</p>"; 
     374                $street=""; 
     375        } 
    346376} else { 
    347         $epsg=$gui_epsg; // aus Conf 
    348 } 
    349  
    350 // Filter auf Zustaendigkeit z.B. ein Stadtgebiet 
    351 if ($gemeinde == "") { 
    352         $gfilter = 0; // ungefiltert 
    353 } elseif(strpos($gemeinde, ",") === false) { 
    354         $gfilter = 1; // Einzelwert 
    355 } else { 
    356         $gfilter = 2; // Liste 
    357 } 
    358 // ax_lagebezeichnungkatalogeintrag.gemeinde: z.B. Classic='40' / NorBit  = '040' 
    359 // Im Mapbender mit fuehrenden Nullen eingeben: gazetteer_alkis.SRC 
    360 // alkisnav.htm?..&gemeinde=040&.. 
    361  
    362 // +++Zerlegung Eingabe aus "Balken" von Buchauskunft "Lage": Numerisch: Gem-Str-Haus-lfd 
    363  
    364 if ($str_schl != "") { // Wert kommt aus aus Link 
     377        $street=""; 
     378} 
     379 
     380if ($str_schl != "") { // aus Link 
    365381        $trans="Hausnummern zur Stra&szlig;e"; 
    366382        suchHausZurStr(true); 
    367 // Wert aus Eingabe in Formular 
    368 } elseif($street != "") {  
     383} elseif($street != "") { // Eingabe in Formular 
    369384        if (trim($street, "*,0..9, ") == "") { // Zahl, ggf. mit Wildcard 
    370385                $trans="Suche Stra&szlig;enschl&uuml;ssel \"".$street."\""; 
  • trunk/mapbender/http/nav/alkisnav_eig.php

    r376 r399  
    11<?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. 
     4Version vom 
    65        2016-02-11 Version fÃŒr norGIS-ALKIS-Import aus Version Classic abgeleitet. 
    76        2016-03-02 $gemeinde auf feste LÀnge korrigieren 
    87        2016-07-18 Personendaten: Zeilen getauscht. Wie Brief-Anschrift. 
    98        2016-11-28 Gemeinsam genutzte Datenbanken ermöglichen 
     9        2018-02-15 Strikte Input-Validation der Parameter 
    1010*/ 
    1111 
    12 // Variable initialisieren 
    13 $gbkennz=""; 
    14 $blattgml=""; 
    15 $person =""; 
    16  
    1712$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. 
     17if (!isset($gkz) or !preg_match('#^[0-9]{3}$#', $gkz)) {die("Eingabefehler gkz");} // Mandant, muss! 
     18 
     19if(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 
     30if (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} 
     42if (isset($blattgml) and $blattgml != "" ) { 
     43        if (!preg_match('#^[0-9a-zA-Z]{16}$#', $blattgml)) {die("Eingabefehler GML-ID Blatt");} 
     44} else { 
     45        $blattgml=""; 
     46} 
     47if (isset($person) and $person != "" ) { 
     48        if (!preg_match('#^[0-9a-zA-Z]{16}$#', $person)) {die("Eingabefehler GML-ID Person");} 
     49} else { 
     50        $person=""; 
     51} 
     52if (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 
    1958include("../../conf/alkisnav_conf.php"); // Konfigurations-Einstellungen 
    2059include("alkisnav_fkt.php"); // Funktionen 
     
    5392function familiensuche() { 
    5493        // 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 
    5696        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."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;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."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;name=".$lnknam."'>\"".$dspnam."\"</a>" 
     103                ."\n</div>\n<br>";       
    62104        } 
    63105        return; 
     
    68110        global $gkz, $gemeinde, $epsg, $name, $person, $blattgml, $auskpath; // $debug 
    69111 
    70         $sql ="SELECT p.nachnameoderfirma, p.vorname, p.geburtsdatum, p.namensbestandteil,  
    71         a.ort_post, a.postleitzahlpostzustellung AS plz, a.strasse, a.hausnummer  
    72         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;";  
    74116        // Es wird nur EINE Zeile ausgewertet 
    75117 
     
    160202 
    161203        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 ;"; 
    164206                $v=array($match, $match1, $linelimit); 
    165207        }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 ;"; 
    168210                $v=array($match, $linelimit); 
    169211        }  
     
    189231        } elseif($cnt == 1){ // Eindeutig! 
    190232                $person = $persongml; 
     233                $name = $nachname; // familiensuche() verwendet sonst den Suchbegriff 
    191234        } else { 
    192235                echo "\n<p class='anz'>".$cnt." Eigent&uuml;mer mit '".$name."'</p>";   // im Limit 
     
    213256        // Body 
    214257        // 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_id  
    217         JOIN ax_buchungsblattbezirk b ON gb.land=b.land AND gb.bezirk=b.bezirk  
    218         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;"; 
    219262 
    220263        // Parameter $gbkennz, z.B. nach Klick auf Zeile "Bezirk" 
     
    275318                $nxtbltblatt=urlencode($blatt); 
    276319                $nxtbltseite=$bltseite + 1; 
    277                 echo "\n - <a class='blt' href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;person=".$person."&amp;bltbez=".$nxtbltbez."&amp;bltblatt=".$nxtbltblatt."&amp;bltseite=".$nxtbltseite."' "; 
    278                 echo "title='Bl&auml;ttern ab ".htmlentities($beznam)." Blatt ".$blatt."'>weitere</a>"; 
    279                 echo "</p>"; 
     320                echo "\n - <a class='blt' href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;person=".$person."&amp;bltbez=".$nxtbltbez."&amp;bltblatt=".$nxtbltblatt."&amp;bltseite=".$nxtbltseite."' " 
     321                ."title='Bl&auml;ttern ab ".htmlentities($beznam)." Blatt ".$blatt."'>weitere</a>" 
     322                ."</p>"; 
    280323        } elseif($cnt == 1) { // Eindeutig! 
    281324                $blattgml=$gml; // dann Stufe 3 gleich nachschieben 
     
    305348 
    306349                // 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 ;"; 
    310353                $v=array($blattgml); 
    311354                $res=pg_prepare("", $sql); 
     
    353396 
    354397        // 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, "; 
    357400        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 "; 
    360402        } 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 ";                     
    363405        } 
    364406 
    365407        // NamenNummer >istbestandteilvon> buchungsblatt <istbestandteilvon< buchungsstelle-1 
    366         $sql1.="FROM ax_namensnummer nn  
    367         JOIN ax_buchungsblatt gb ON gb.gml_id=nn.istbestandteilvon  
    368         JOIN ax_buchungsblattbezirk b ON gb.land=b.land AND gb.bezirk=b.bezirk 
    369         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 "; 
    370412 
    371413        // Baustein A: Auswahl 1 oder 2 
     
    374416 
    375417        // 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 "; 
    378420 
    379421        // Baustein 2: SQL-Ende fuer beide Varianten 
    380         $sql2 ="JOIN gema_shl ot ON f.land || f.gemarkungsnummer = ot.gemashl  "; // Ortsteil 
    381         $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 "; 
    382424        $sqlw2="AND s2.endet IS NULL "; 
    383425 
     
    407449                $bltwhere =""; 
    408450        } 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." )) "; 
    412454        } // FlurstÃŒcke in der angeblÀtterten BVNR werden ggf. wiederholt 
    413455 
     
    489531                        $nxtbltblatt=urlencode($blatt); 
    490532                        $nxtbltseite=$bltseite + 1; 
    491                         echo "\n - <a class='blt' href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;person=".$person; 
    492                         echo "&amp;gbkennz=".$zgbbez; // Filter Bezirk 
    493                         echo "&amp;bltbez=".$nxtbltbez."&amp;bltblatt=".$nxtbltblatt."&amp;bltbvnr=".$bvnr."&amp;bltseite=".$nxtbltseite."&amp;bltrecht=ohne' "; 
    494                         echo "title='Bl&auml;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."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;person=".$person 
     534                        ."&amp;gbkennz=".$zgbbez // Filter Bezirk 
     535                        ."&amp;bltbez=".$nxtbltbez."&amp;bltblatt=".$nxtbltblatt."&amp;bltbvnr=".$bvnr."&amp;bltseite=".$nxtbltseite."&amp;bltrecht=ohne' " 
     536                        ."title='Bl&auml;ttern ab ".htmlentities($beznam)." Blatt ".$blatt." BVNR ".$bvnr."'>weitere</a>" 
     537                        ."</p>"; 
    496538                } elseif($zfs1 > 1) { // Meldung (Plural) ab 2, im Limit 
    497539                        echo "\n<p class='anz'>"; 
     
    567609                        $nxtbltblatt=urlencode($blatt); 
    568610                        $nxtbltseite=$bltseite + 1; 
    569                         echo "\n - <a class='blt' href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;person=".$person; 
    570                         echo "&amp;gbkennz=".$zgbbez; // Filter Bezirk 
    571                         echo "&amp;bltbez=".$nxtbltbez."&amp;bltblatt=".$nxtbltblatt."&amp;bltbvnr=".$bvnr."&amp;bltseite=".$nxtbltseite."&amp;bltrecht=nur' "; 
    572                         echo "title='Bl&auml;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."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;person=".$person 
     612                        ."&amp;gbkennz=".$zgbbez // Filter Bezirk 
     613                        ."&amp;bltbez=".$nxtbltbez."&amp;bltblatt=".$nxtbltblatt."&amp;bltbvnr=".$bvnr."&amp;bltseite=".$nxtbltseite."&amp;bltrecht=nur' " 
     614                        ."title='Bl&auml;ttern ab ".htmlentities($beznam)." Blatt ".$blatt." BVNR ".$bvnr."'>weitere</a>" 
     615                        ."</p>"; 
    574616                } elseif($zfs2 > 1) { // ab 2 
    575617                        echo "\n<p class='anz'>"; 
     
    589631// 3. gb     = gml_id des Grundbuches -> Suche nach FlurstÃŒcken 
    590632 
    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. 
     636if (isset($name) and $name != "" ) {  
     637        if (!preg_match('#^[a-zA-Z0-9ÀöÌÄÖÜß*,. \-&/]{1,50}$#', $name)) { 
     638                echo "<p class='err'>Eingabe unzul&auml;ssig!</p>"; 
     639        //      if ($debug > 1) {echo "<p class='err'>Name='".$name."' LÀnge='".strlen($name)."</p>";} 
     640                $name=""; 
     641        } 
    593642} 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 
    605647// 2=Such Bezirk-Nummer, 3=Such Blatt, 4=Such Buchung BVNR 
    606648 
     
    633675                if ($kennztyp > 1) { 
    634676                        $trans="Grdb. und Flst. von .. in .."; // Filter GB-Bez, 
    635                         // darunter sind dann Name und Bezirk farblich markiert 
    636677                } else { 
    637                         $trans="Grundb. und Flurst. von .."; // der EigentÃŒmer steht darunter 
     678                        $trans="Grundb. und Flurst. von .."; // Name steht darunter 
    638679                } 
    639680                getGBuFSbyPerson(); // Schritte 2+3 gleichzeitig, dabei Gemeinde-Filter auf Stufe 3 
     
    645686        getEigByName(); // Suchen nach Namensanfang 
    646687 
    647         if($person != "") { // genau EIN Treffer zum Namen 
     688        if($person != "") { // genau EIN Treffer zum gesuchten Namen 
    648689                if ($gfilter == 0) { 
    649690                        $trans="Grundb&uuml;cher zum Namen"; 
  • trunk/mapbender/http/nav/alkisnav_fkt.php

    r376 r399  
    11<?php 
    2 /*      Navigation mit ALKIS-Daten im Mapbender 2.7 - Teil "Funktionen" 
     2/*      Navigation mit ALKIS-Daten im Mapbender 2 - Teil "Funktionen" 
    33        (Wird nicht direkt aufgerufen sonden in den anderen Modulen eingebunden). 
    4         Diese Version des Programms verwendet die Datenbank-Struktur aus dem norGIS-ALKIS-Importer. 
    5  
     4        Datenbank-Struktur aus dem norGIS-ALKIS-Importer. 
    65Version vom  
    76        2016-02-11 Version fÃŒr norGIS-ALKIS-Import aus Version Classic abgeleitet. 
    87        2016-11-28 Gemeinsam genutzte Datenbanken ermöglichen 
     8        2018-02-15 Überarbeitung des Code 
    99*/ 
    1010 
     
    9494        } 
    9595        if ($aktuell) {$cls=" aktuell";} else {$cls="";} 
    96         echo "\n<div class='ga".$cls."' title='Amtsgericht'>"; 
    97                 echo "\n\t\t<img class='nwlink' src='ico/Gericht.png' width='16' height='16' alt='AG' title='Amtsgericht'> "; 
    98                 echo "AG <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;ag=".$anr."'>";             
    99                 echo $agd."</a> (".$anr.")"; 
    100         echo "\n</div>"; 
     96        echo "\n<div class='ga".$cls."' title='Amtsgericht'>" 
     97                ."\n\t\t<img class='nwlink' src='ico/Gericht.png' width='16' height='16' alt='AG' title='Amtsgericht'> " 
     98                ."AG <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;ag=".$anr."'>"  
     99                .$agd."</a> (".$anr.")" 
     100        ."\n</div>"; 
    101101        return; 
    102102} 
     
    108108        $gnamd=htmlentities($gnam, ENT_QUOTES, "UTF-8"); 
    109109        if ($aktuell) {$cls=" aktuell";} else {$cls="";} 
    110         echo "\n<div class='gk".$cls."' title='GB-Bezirk'>"; 
    111         echo "\n\t\t<img class='nwlink' src='ico/GB-Bezirk.png' width='16' height='16' alt='Bez.' title='GB-Bezirk'> "; 
    112         echo "<a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;gbkennz=".$zgbbez; 
    113         echo "&amp;gbbeznam=".urlencode($gnam); 
    114         if ($person != "") { // EigentÃŒmer-Suche 
    115                 echo "&amp;person=".$person."'>"; 
    116                 echo "Bezirk ".$gnamd."</a> (".$zgbbez.")";              
    117         } else {  // Grundbuch-Suche 
    118                 echo "'>"; 
    119                 echo "Bezirk ".$gnamd."</a> (".suchfeld($zgbbez).")";            
    120         } 
     110        echo "\n<div class='gk".$cls."' title='GB-Bezirk'>" 
     111                ."\n\t\t<img class='nwlink' src='ico/GB-Bezirk.png' width='16' height='16' alt='Bez.' title='GB-Bezirk'> " 
     112                ."<a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;gbkennz=".$zgbbez 
     113                ."&amp;gbbeznam=".urlencode($gnam); 
     114                if ($person != "") { // EigentÃŒmer-Suche 
     115                        echo "&amp;person=".$person."'>" 
     116                        ."Bezirk ".$gnamd."</a> (".$zgbbez.")";          
     117                } else {  // Grundbuch-Suche 
     118                        echo "'>" 
     119                        ."Bezirk ".$gnamd."</a> (".suchfeld($zgbbez).")";                
     120                } 
    121121        echo "\n</div>"; 
    122122        return; 
     
    142142                echo "\n\t<img class='nwlink' src='ico/GBBlatt.png' width='16' height='16' alt='Blatt' title='".$dientxt."GB-Blatt'>"; 
    143143        } else { 
    144                 echo "\n\t<a title='Nachweis' href='javascript:imFenster(\"".$auskpath."alkisbestnw.php?gkz=".$gkz."&amp;gmlid=".$blattgml."\")'>"; 
    145                         echo "\n\t\t<img class='nwlink' src='ico/GBBlatt_link.png' width='16' height='16' alt='Blatt' title='Nachweis'>"; 
    146                 echo "\n\t</a> "; 
     144                echo "\n\t<a title='Nachweis' href='javascript:imFenster(\"".$auskpath."alkisbestnw.php?gkz=".$gkz."&amp;gmlid=".$blattgml."\")'>" 
     145                        ."\n\t\t<img class='nwlink' src='ico/GBBlatt_link.png' width='16' height='16' alt='Blatt' title='Nachweis'>" 
     146                ."\n\t</a> "; 
    147147        } 
    148148 
    149149        // Text, Self-Link 
    150         echo $nam." <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg; 
    151         echo "&amp;blattgml=".$blattgml."&amp;gbkennz=".$bezirk."-".$blattlnk; 
     150        echo $nam." <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg 
     151        ."&amp;blattgml=".$blattgml."&amp;gbkennz=".$bezirk."-".$blattlnk; 
    152152 
    153153        echo "&amp;gbbeznam=".urlencode($beznam); 
     
    176176        } 
    177177        if ($aktuell) {$cls=" aktuell";} else {$cls="";} 
    178         echo "\n<div class='gs".$cls."' title='".$ti."Grundst&uuml;ck'>"; 
    179         echo "\n\t<img class='nwlink' src='ico/Grundstueck.png' width='16' height='16' alt='GS'  title='".$ti."Grundst&uuml;ck'> ".$re; 
     178        echo "\n<div class='gs".$cls."' title='".$ti."Grundst&uuml;ck'>" 
     179        ."\n\t<img class='nwlink' src='ico/Grundstueck.png' width='16' height='16' alt='GS'  title='".$ti."Grundst&uuml;ck'> ".$re; 
    180180        if ($blattkennz == "") { // ohne Link 
    181181                echo "Buchung ".$bvnra; 
    182182        } else { 
    183183                $gbkennlnk=urlencode($blattkennz."-".$bvnr); // Trailing Blanks! 
    184                 echo "<a href='".$_SERVER['SCRIPT_NAME']. "?gkz=". $gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;buchunggml=".$buchunggml; 
    185                 echo "&amp;gbkennz=".$gbkennlnk."'>Buchung ".$bvnra."</a>"; 
     184                echo "<a href='".$_SERVER['SCRIPT_NAME']. "?gkz=". $gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;buchunggml=".$buchunggml 
     185                ."&amp;gbkennz=".$gbkennlnk."'>Buchung ".$bvnra."</a>"; 
    186186        } 
    187187        echo "\n</div>"; 
     
    195195        $bez=urlencode($gmdname); 
    196196        if ($aktuell) {$cls=" aktuell";} else {$cls="";} 
    197         echo "\n<div class='gm".$cls."' title='Gemeinde'>"; 
    198                 echo "\n\t\t<img class='nwlink' src='ico/Gemeinde.png' width='16' height='16' alt='Stadt'>"; 
    199                 echo " Gem. <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;gm=".$gmdnr."&amp;bez=".$bez."'>";               
    200                 echo  " ".$stadt."</a> (".substr($gmdnr, 5).")"; 
    201         echo "\n</div>"; 
     197        echo "\n<div class='gm".$cls."' title='Gemeinde'>" 
     198                ."\n\t\t<img class='nwlink' src='ico/Gemeinde.png' width='16' height='16' alt='Stadt'>" 
     199                ." Gem. <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;gm=".$gmdnr."&amp;bez=".$bez."'>" 
     200                ." ".$stadt."</a> (".substr($gmdnr, 5).")" 
     201        ."\n</div>"; 
    202202        return; 
    203203} 
     
    221221        if ($aktuell) {$cls=" aktuell";} else {$cls="";} 
    222222 
    223         echo "\n<div class='gk".$cls."' title='Gemarkung'>"; 
    224         echo "\n\t\t<img class='nwlink' src='ico/Gemarkung.png' width='16' height='16' alt='GKG' title='Gemarkung'>"; 
    225         echo " OT <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;fskennz=".$gkgnr."'>";             
    226         echo  " ".$gnam."</a> (".substr($gkgnr, 2).")"; 
    227         echo "\n</div>"; 
     223        echo "\n<div class='gk".$cls."' title='Gemarkung'>" 
     224                ."\n\t\t<img class='nwlink' src='ico/Gemarkung.png' width='16' height='16' alt='GKG' title='Gemarkung'>" 
     225                ." OT <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;fskennz=".$gkgnr."'>"  
     226                ." ".$gnam."</a> (".substr($gkgnr, 2).")" 
     227        ."\n</div>"; 
    228228        return; 
    229229} 
     
    234234 
    235235        if ($aktuell) {$cls=" aktuell";} else {$cls="";} 
    236         echo "\n<div class='fs".$cls."'>"; 
    237         echo "\n\t<a title='Nachweis' href='javascript:imFenster(\"".$auskpath."alkisfsnw.php?gkz=".$gkz."&amp;gmlid=".$fs_gml."\")'>"; 
    238                 echo "\n\t\t<img class='nwlink' src='ico/Flurstueck_Link.png' width='16' height='16' alt='FS' title='Nachweis'>"; 
    239         echo "\n\t</a>\n\t";                     
    240  
    241         echo "&nbsp;<a title='Flurst&uuml;ck positionieren 1:".$scalefs."' href='"; 
    242         echo "javascript:"; 
    243                 echo "transtitle(\"auf Flurst&uuml;ck positioniert\"); "; 
    244                 echo "parent.parent.parent.mb_repaintScale(\"mapframe1\",".$x.",".$y.",".$scalefs."); "; 
    245                 echo "parent.parent.showHighlight(".$x.",".$y.");' "; 
    246         echo "onmouseover='parent.parent.showHighlight(".$x.",".$y.")' "; 
    247         echo "onmouseout='parent.parent.hideHighlight()'>"; 
     236        echo "\n<div class='fs".$cls."'>" 
     237        ."\n\t<a title='Nachweis' href='javascript:imFenster(\"".$auskpath."alkisfsnw.php?gkz=".$gkz."&amp;gmlid=".$fs_gml."\")'>" 
     238                ."\n\t\t<img class='nwlink' src='ico/Flurstueck_Link.png' width='16' height='16' alt='FS' title='Nachweis'>" 
     239        ."\n\t</a>\n\t";                 
     240 
     241        echo "&nbsp;<a title='Flurst&uuml;ck positionieren 1:".$scalefs."' href='" 
     242        ."javascript:transtitle(\"auf Flurst&uuml;ck positioniert\"); " 
     243                ."parent.parent.parent.mb_repaintScale(\"mapframe1\",".$x.",".$y.",".$scalefs."); " 
     244                ."parent.parent.showHighlight(".$x.",".$y.");' " 
     245        ."onmouseover='parent.parent.showHighlight(".$x.",".$y.")' " 
     246        ."onmouseout='parent.parent.hideHighlight()'>"; 
    248247 
    249248        if ($gmkg == "" ) { 
     
    262261 
    263262        $nnam=htmlentities($nachname, ENT_QUOTES, "UTF-8"); 
    264         $namlnk=urlencode($nachname); 
     263        $namlnk=urlencode(substr($nachname,0,50)); 
    265264        $vnam=htmlentities($vorname, ENT_QUOTES, "UTF-8"); 
    266         // Link zur Auskunft Person ++ Icon differenzieren nach Eigentuemerart? 
    267  
    268 echo "<div class='pe'> 
    269         <a title='Nachweis' href='javascript:imFenster(\"".$auskpath."alkisnamstruk.php?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;gmlid=".$persongml."\")'> 
    270                 <img class='nwlink' src='ico/Eigentuemer.png' width='16' height='16' alt='EIG' title='Nachweis'> 
    271         </a>             
    272         <a title='Person' href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;person=".$persongml."&amp;name=".$namlnk."'>".$nnam.", ".$vnam."</a> 
    273 </div>"; 
     265        // Link zur Auskunft Person, Icon differenzieren nach Eigentuemerart? 
     266        echo "<div class='pe'>" 
     267                ."\n\t<a title='Nachweis' href='javascript:imFenster(\"".$auskpath."alkisnamstruk.php?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;gmlid=".$persongml."\")'>" 
     268                        ."\n\t\t<img class='nwlink' src='ico/Eigentuemer.png' width='16' height='16' alt='EIG' title='Nachweis'>" 
     269                ."\n\t</a>"              
     270                ."\n\t<a title='Person' href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;person=".$persongml."&amp;name=".$namlnk."'>".$nnam.", ".$vnam."</a>" 
     271        ."</div>"; 
    274272return; 
    275273} 
     
    279277        // Die Kopfzeile ÃŒber den Hausnummern hat einen zusÀtzlichen Koordinaten-Map-Link, das ist in der Liste zu aufwÀndig? 
    280278        global $gkz, $gemeinde, $epsg, $auskpath, $gfilter, $debug; 
    281         //if ($debug > 1) {echo "<p class='dbg'>function zeile_strasse()<p>";} // Ablauf-Verfolgung 
    282279 
    283280        echo "\n\t<div class='stl' title='Stra&szlig;enschl&uuml;ssel ".$skey."'>"; 
    284281 
    285282        // Icon -> Buchnachweis 
    286         echo "\n\t<a title='Nachweis' href='javascript:imFenster(\"".$auskpath."alkisstrasse.php?gkz=".$gkz."&amp;gmlid=".$kgml."\")'>"; 
    287                 echo "\n\t\t<img class='nwlink' src='ico/Lage_mit_Haus.png' width='16' height='16' alt='STR' title='Auskunft Stra&szlig;e'>"; 
    288         echo "\n\t</a>"; 
     283        echo "\n\t<a title='Nachweis' href='javascript:imFenster(\"".$auskpath."alkisstrasse.php?gkz=".$gkz."&amp;gmlid=".$kgml."\")'>" 
     284                ."\n\t\t<img class='nwlink' src='ico/Lage_mit_Haus.png' width='16' height='16' alt='STR' title='Auskunft Stra&szlig;e'>" 
     285        ."\n\t</a>"; 
    289286        // Zeile -> Suche HsNr 
    290         echo " <a class='st' href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;str_schl=".$gkey."' title='in ".$gemname."'>".$sname; 
    291         echo "</a> (".$skey.")"; 
     287        echo " <a class='st' href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;str_schl=".$gkey."' title='in ".$gemname."'>".$sname 
     288        ."</a> (".$skey.")"; 
    292289 
    293290        // Die Gemeinde dahinter falls mehrere möglich 
     
    311308        $sql1 ="SELECT s1.laufendenummer AS lfd, s1.gml_id AS bsgml, f.gml_id, f.flurnummer, f.zaehler, f.nenner, f.gemeinde, "; 
    312309        if($epsg == "25832") { // Transform nicht notwendig 
    313                 $sql1.="st_x(st_centroid(f.wkb_geometry)) AS x, "; 
    314                 $sql1.="st_y(st_centroid(f.wkb_geometry)) AS y, "; 
     310                $sql1.="st_x(st_centroid(f.wkb_geometry)) AS x, st_y(st_centroid(f.wkb_geometry)) AS y, "; 
    315311        } else {   
    316                 $sql1.="st_x(st_transform(st_centroid(f.wkb_geometry), ".$epsg.")) AS x, "; 
    317                 $sql1.="st_y(st_transform(st_centroid(f.wkb_geometry), ".$epsg.")) AS y, ";                      
     312                $sql1.="st_x(st_transform(st_centroid(f.wkb_geometry), ".$epsg.")) AS x, " 
     313                        ."st_y(st_transform(st_centroid(f.wkb_geometry), ".$epsg.")) AS y, ";                    
    318314        } 
    319315        $sql1.="g.bezeichnung FROM ax_buchungsstelle s1 ";  
     
    323319 
    324320        // zwischen, Variante 2. Nur an oder "an" und "zu"? 
    325         $sqlz2 ="JOIN ax_buchungsstelle s2 ON s2.gml_id=ANY(s1.an)  
    326         JOIN ax_flurstueck f ON f.istgebucht=s2.gml_id "; 
     321        $sqlz2 ="JOIN ax_buchungsstelle s2 ON s2.gml_id=ANY(s1.an) " 
     322                ."JOIN ax_flurstueck f ON f.istgebucht=s2.gml_id "; 
    327323 
    328324        // hinten gleich 
    329         $sql2="JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer  
    330         WHERE s1.istbestandteilvon = $1 AND f.endet IS NULL AND s1.endet IS NULL "; 
     325        $sql2="JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer " 
     326                ."WHERE s1.istbestandteilvon = $1 AND f.endet IS NULL AND s1.endet IS NULL "; 
    331327 
    332328        switch ($gfilter) { 
  • trunk/mapbender/http/nav/alkisnav_fls.php

    r376 r399  
    11<?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. 
    74Version vom 
    85        2016-02-11 Version fÃŒr norGIS-ALKIS-Import aus Version Classic abgeleitet. 
    96        2016-03-02 $gemeinde auf feste LÀnge korrigieren 
    107        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 
    1110*/ 
    1211 
    13 // Variable initialisieren 
    14 $hist="n"; 
    15 $gm=""; 
    16  
    1712$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. 
     17if (!isset($gkz) or !preg_match('#^[0-9]{3}$#', $gkz)) {die("Eingabefehler gkz");} // Mandant, muss! 
     18 
     19if(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 
     30if (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 
     44if(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 
     56if (isset($gm) ) { 
     57        if (!preg_match('#^[0-9]{8}$#', $gm)) {die("Eingabefehler gm");} 
     58} else { 
     59        $gm=""; // Var. init. 
     60} 
     61 
    1962include("../../conf/alkisnav_conf.php"); 
    2063include("alkisnav_fkt.php"); // Funktionen 
     
    252295        switch ($gfilter) { 
    253296                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; 
    255299                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; 
    257302                default: break; 
    258303        } 
    259         $sql.=" AND endet IS NULL ORDER BY gemname LIMIT $1 ;"; 
     304        $sql.="ORDER BY gemname LIMIT $1 ;"; 
    260305        $res=pg_prepare("", $sql); 
    261306        $res=pg_execute("", array($linelimit)); 
     
    269314                $gnr=$row["gemshl"]; 
    270315                $gemeindename=$row["gemname"]; 
    271                 zeile_gemeinde($gnr, $gemeindename); 
     316                zeile_gemeinde($gnr, $gemeindename, false); 
    272317                $cnt++; 
    273318        } 
     
    327372        if(preg_match("/\*/",$fskennz)){ 
    328373                $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.="%";} 
    329376        } else { 
    330377                $match = trim($fskennz)."%"; 
     
    333380        // Pass auf! GemeindeschlÃŒssel ist in den beiden SchlÃŒsseltabellen linksbÃŒndig gefÃŒllt, 
    334381        // 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 "; 
    337384 
    338385        switch ($gfilter) { 
     
    735782// Start hier! 
    736783// =========== 
    737 if(isset($epsg)) { 
    738         $epsg = str_replace("EPSG:", "" , $_REQUEST["epsg"]);    
     784if ($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. 
     789if (isset($fskennz) and $fskennz != "" ) { 
     790        if (!preg_match('#^[0-9a-zA-ZÀöÌÄÖÜß* -]{1,25}$#', $fskennz)) { 
     791                echo "<p class='err'>Eingabe unzul&auml;ssig!</p>"; 
     792                $fskennz=""; 
     793        } 
    739794} 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         
    754798if($gm != "") { // Self-Link aus Gemeinde-Liste 
    755799        $trans="Gemarkungen zur Gemeinde"; 
     
    821865} 
    822866 
    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. 
    825868// Dazu die im HTML-Header definierte Javascript-Function benutzen. 
    826869// Alternativ wird auch aus dem Javascript "positionieren Karte" dieser Titel gesetzt. 
     
    829872        transtitle('".$trans."');  
    830873</script>"; 
    831  
    832874?> 
    833875 
  • trunk/mapbender/http/nav/alkisnav_grd.php

    r376 r399  
    11<?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. 
    54Version vom 
    65        2016-02-11 Version fÃŒr norGIS-ALKIS-Import aus Version Classic abgeleitet. 
    76        2016-03-02 $gemeinde auf feste LÀnge korrigieren 
    87        2016-11-28 Gemeinsam genutzte Datenbanken ermöglichen 
     8        2018-02-15 Strikte Input-Validation der Parameter 
    99*/ 
    1010 
    11 // Variable initialisieren 
    12 $ag=""; 
    13 $gbkennz=""; 
    14 $buchunggml=""; 
    15 $blattgml=""; 
    16  
    1711$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. 
     16if (!isset($gkz) or !preg_match('#^[0-9]{3}$#', $gkz)) {die("Eingabefehler gkz");} // Mandant, muss! Formularfeld hidden 
     17 
     18if(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 
     29if (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. 
     43if (isset($ag) and $ag != "" ) { // Amtsgericht-Nummer 
     44        if (!preg_match('#^[0-9]{4}$#', $ag)) {die("Eingabefehler Amtsgericht");} 
     45} else { 
     46        $ag=""; 
     47} 
     48if (isset($buchunggml) and $buchunggml != "" ) { 
     49        if (!preg_match('#^[0-9a-zA-Z]{16}$#', $buchunggml)) {die("Eingabefehler GML-ID Buchung");} 
     50} else { 
     51        $buchunggml=""; 
     52} 
     53if (isset($blattgml) and $blattgml != "" ) { 
     54        if (!preg_match('#^[0-9a-zA-Z]{16}$#', $blattgml)) {die("Eingabefehler GML-ID Blatt");} 
     55} else { 
     56        $blattgml=""; 
     57} 
     58if (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 
    1964include("../../conf/alkisnav_conf.php"); // Konfigurations-Einstellungen 
    2065include("alkisnav_fkt.php"); // Funktionen 
     
    59104        $linelimit=40; 
    60105 
    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 ;"; 
    64108        $res = pg_prepare("", $sql); 
    65109        $res = pg_execute("", array($linelimit)); 
     
    99143        // Body 
    100144        // 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 ;"; 
    106149 
    107150        $v = array($agkey, $linelimit); 
     
    135178        // Parameter = SchlÃŒssel des Bezirks 
    136179        #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;"; 
    139182        $v=array($gbbez); 
    140183        $res=pg_prepare("", $sql); 
     
    166209        $linelimit=80; 
    167210 
    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.stelle  
    170         WHERE g.bezeichnung ILIKE $1 AND g.endet IS NULL AND a.endet IS NULL  
    171         ORDER BY a.bezeichnung, g.bezeichnung LIMIT $2 ;";// "AND a.stellenart=1000 " Amtsgericht 
     211        $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 
    172215        if ( $gbkennz == "") { 
    173216                $match = "%"; 
     
    175218                if(preg_match("/\*/",$gbkennz)){ 
    176219                        $match = trim(preg_replace("/\*/i","%", strtoupper($gbkennz))); 
     220                        if (substr($match, strlen($match), 1) != "%") {$match.="%";} // Wildcard am Ende obligatorisch 
    177221                } else { 
    178222                        $match = trim($gbkennz)."%"; 
     
    227271        } 
    228272        // 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 ;"; 
    231275        $v=array($zgbbez, $linelimit); 
    232276        $res=pg_prepare("", $sql); 
     
    251295                echo "\n<p>Geben sie ein: '".$zgbbez."-999A'<br>wobei '999A' = gesuchtes GB-Blatt</p>"; 
    252296                // 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>"; 
    254298        } elseif ($cntbl > 1) { 
    255299                echo "\n<p class='anz'>".$cntbl." Bl&auml;tter</p>"; // im Limit         
     
    261305        // Kennzeichen "Bezirk + Blatt" eingegeben. Dazu die gml_id des Blattes ermitteln. 
    262306        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 "; 
    265309 
    266310        if ($zblattz == "") { // Ohne Buchstabenerweiterung: Formate '123','000123 ','0000123' 
     
    310354 
    311355        // 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_id 
    314         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 "; 
    315359 
    316360        if ($zblattz == "") { // Ohne Buchstabenerweiterung 
     
    425469        // Recht "an" (dienende Buchungen und ihre Flurst.) 
    426470 
    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;"; 
    439481 
    440482        $v=array($buchunggml); 
     
    496538// Start hier! 
    497539// =========== 
    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. 
     544if (isset($gbkennz) and $gbkennz != "" ) {  
     545        if (!preg_match('#^[0-9a-zA-ZÀöÌÄÖÜß* -]{1,25}$#', $gbkennz)) { 
     546                echo "<p class='err'>Eingabe unzul&auml;ssig!</p>"; 
     547                $gbkennz=""; 
     548        } 
    500549} 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=""; 
    512551} 
    513552 
Note: See TracChangeset for help on using the changeset viewer.