Changeset 399 for trunk


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

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

Location:
trunk
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/info/info/alkisn/alkisfsnw.php

    r394 r399  
    1616        2017-10-17 Zeitpunkt der Entstehung in deutschen Datumsformat 
    1717        2017-11-03 Wertelisten fÃŒr Arrays in BodenschÀtzung ausgeben. 
    18  
    19         ToDo: 
     18        2017-12-08 Planung (Kommentare) der Erweiterung fÃŒr Berechtigte GrundbÃŒcher 
     19        2017-12-20 Links auf Lagebezeichnung verbessert. 
     20 
     21+++     ToDo: +++ 
     22        - Wenn nur 1 Buchung auf der nÀchsten Stufe "Recht an" vorliegt (z.B. Erbbaurecht), dann sofort anzeigen. $berbu='' 
     23          Bei vielen Buchungen auf der nÀchsten Stufe (Miteigentumsanteil) nur die Anzahl, erst auf Anforderung (Parameter) &berbu='j' oder 2,3,4,fÃŒr maximale Stufen. 
     24      Anzahl weiterer "Rechte an" auf jeder Stufe anzeigen, auch wenn noch kein Link möglich ist. 
     25          MEHR: Alle "Rechte an" RÃŒckwÀrts auflisten analog View "buchungsrechte_3text". Bis zu 4 Buchungen weit. 
     26      Im Gegensatz zum "Bestandsnachweis" aber nur je eine BVNR weiter verfolgen, die auf dies eine FlurstÃŒck bezogen ist. 
     27      Dabei berechtigte Buchungen VOR dem Grundbuch anzeigen, also eine Berechtigungs-"Hierarchie" abbilden. 
    2028        - Parameter zum Umschalten mit/ohne BodenschÀtzung? 
    2129        - Bessere Differenzierung bei den Nutzungsarten (Tabelle dafÃŒr aufbauen)  
     
    286294// ** L a g e b e z e i c h n u n g ** 
    287295 
    288 // Lagebezeichnung MIT Hausnummer 
     296// Lagebezeichnung  M I T  Hausnummer 
     297 
    289298// ax_flurstueck  >weistAuf>  AX_LagebezeichnungMitHausnummer 
    290 $sql="SELECT DISTINCT l.gml_id, l.gemeinde, l.lage, l.hausnummer, s.bezeichnung  
     299$sql="SELECT DISTINCT l.gml_id, l.gemeinde, l.lage, l.hausnummer, s.bezeichnung, s.gml_id AS kgml 
    291300FROM ax_flurstueck f JOIN ax_lagebezeichnungmithausnummer l ON l.gml_id=ANY(f.weistauf)   
    292301JOIN ax_lagebezeichnungkatalogeintrag s ON l.land=s.land AND l.regierungsbezirk=s.regierungsbezirk AND l.kreis=s.kreis AND l.gemeinde=s.gemeinde AND l.lage=s.lage  
     
    306315} else { 
    307316        $j=0; 
     317        $kgmlalt=""; 
    308318        while($row = pg_fetch_array($res)) { 
    309                 $sname = htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8"); // Str.-Name 
     319                $sname=htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8"); // Str.-Name 
     320                if (substr($sname, strlen($sname) -3, 3) == 'weg') { // Versuch fuer korrekten Satzbau 
     321                        $slink=" am ".$sname; 
     322                } else { 
     323                        $slink=" an der ".$sname; 
     324                } 
     325                $hsnr=$row["hausnummer"]; 
    310326                echo "\n<tr>\n\t"; 
    311327                        if ($j == 0) { 
     
    319335                                echo "<span class='key' title='Straßenschl&uuml;ssel'>(".$row["lage"].")</span>&nbsp;"; 
    320336                        } 
    321                         echo $sname."&nbsp;".$row["hausnummer"]."</td>" 
    322                         ."\n\t<td>\n\t\t<p class='nwlink noprint'>" 
    323                                 ."\n\t\t\t<a title='Lagebezeichnung mit Hausnummer' href='alkislage.php?gkz=".$gkz."&amp;ltyp=m&amp;gmlid=".$row["gml_id"]; 
     337                        echo $sname."&nbsp;".$hsnr."</td>"; 
     338 
     339                        // rechte Spalte 
     340                        echo "\n\t<td>\n\t\t<p class='nwlink noprint'>"; 
     341 
     342                        // +++ davor auch Link "Straße" 
     343                        $kgml=$row["kgml"]; // Wiederholung vermeiden 
     344                        if ($kgml != $kgmlalt) { // NEUE Strasse vor Lage 
     345                                $kgmlalt=$kgml; // Katalog GML-ID 
     346                                echo "\n\t\t\t<a title='Flurst&uuml;cke mit oder ohne Hausnummer".$slink."' " 
     347                                ."href='alkisstrasse.php?gkz=".$gkz."&amp;gmlid=".$kgml."'>Stra&szlig;e " 
     348                                ."<img src='ico/Strassen.png' width='16' height='16' alt='STRA'></a> "; 
     349                        } 
     350 
     351                        echo "\n\t\t\t<a title='Flurst&uuml;cke und Geb&auml;ude mit Hausnummer ".$hsnr."' href='alkislage.php?gkz=".$gkz."&amp;ltyp=m&amp;gmlid=".$row["gml_id"]; 
    324352                                if ($showkey) {echo "&amp;showkey=j";} 
    325353                                echo "'>Lage <img src='ico/Lage_mit_Haus.png' width='16' height='16' alt=''></a>" 
     
    333361// +++ Verbesserung: mehrere HsNr zur gleichen Straße als Liste? 
    334362 
    335 // Lagebezeichnung OHNE Hausnummer  (Gewanne oder nur Strasse) 
     363// Lagebezeichnung  O H N E  Hausnummer  (Gewanne oder nur Strasse) 
     364 
    336365// ax_flurstueck  >zeigtAuf>  AX_LagebezeichnungOhneHausnummer 
    337366$sql ="SELECT l.gml_id, l.unverschluesselt, l.gemeinde, l.lage, s.bezeichnung  
     
    349378} 
    350379$j=0; 
    351 // Es wird auch eine Zeile ausgegeben, wenn kein Eintrag gefunden! 
    352380while($row = pg_fetch_array($res)) { 
    353         $gewann = htmlentities($row["unverschluesselt"], ENT_QUOTES, "UTF-8"); 
    354381        $skey=$row["lage"]; // Strassenschl. 
    355382        $lgml=$row["gml_id"]; // key der Lage 
    356         if (!$gewann == "") { 
     383        $gewann = htmlentities($row["unverschluesselt"], ENT_QUOTES, "UTF-8"); 
     384 
     385        if ($gewann != "") { 
    357386                echo "\n<tr>" 
    358                         ."\n\t<td class='ll' title='Lagebezeichnung'><img src='ico/Lage_Gewanne.png' width='16' height='16' alt=''> Gewanne:</td>" 
     387                        ."\n\t<td class='ll' title='unverschl&uuml;sselte Lagebezeichnung'><img src='ico/Lage_Gewanne.png' width='16' height='16' alt=''> Gewanne:</td>" 
    359388                        ."\n\t<td></td>" 
    360389                        ."\n\t<td class='lr' colspan='3'>".$gewann."</td>" 
    361390                        ."\n\t<td>\n\t\t<p class='nwlink noprint'>" 
    362                                 ."\n\t\t\t<a title='Lagebezeichnung Ohne Hausnummer' href='alkislage.php?gkz=".$gkz."&amp;ltyp=o&amp;gmlid=".$lgml; 
     391                                ."\n\t\t\t<a title='Flurst&uuml;cke mit der Gewanne ".$gewann."' href='alkislage.php?gkz=".$gkz."&amp;ltyp=o&amp;gmlid=".$lgml; 
    363392                                if ($showkey) {echo "&amp;showkey=j";}                           
    364393                                echo "'>\n\t\t\tLage <img src='ico/Lage_Gewanne.png' width='16' height='16' alt=''></a>" 
    365394                        ."\n\t\t</p>\n\t</td>" 
    366395                ."\n</tr>"; 
    367         } 
    368         // Gleicher DB-Eintrag in zwei HTML-Zeilen, besser nur ein Link 
    369         if ($skey > 0) { 
     396        } elseif ($skey > 0) { 
     397                $sname=htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8"); // Str.-Name 
     398                if (substr($sname, strlen($sname) -3, 3) == 'weg') { // Versuch fuer korrekten Satzbau 
     399                        $slink=" am ".$sname; 
     400                } else { 
     401                        $slink=" an der ".$sname; 
     402                } 
    370403                echo "\n<tr>" 
    371404                        ."\n\t<td class='ll'><img src='ico/Lage_an_Strasse.png' width='16' height='16' alt=''> Stra&szlig;e:</td>" 
    372405                        ."\n\t<td></td>" 
    373406                        ."\n\t<td class='lr' colspan='3'>"; 
    374                         if ($showkey) { 
    375                                 echo "<span class='key'>(".$skey.")</span>&nbsp;"; 
    376                         } 
    377                         echo $row["bezeichnung"]."</td>" 
    378                         ."\n\t<td>\n\t\t<p class='nwlink noprint'>" 
    379                                 ."\n\t\t\t<a title='Lagebezeichnung Ohne Hausnummer' href='alkislage.php?gkz=".$gkz."&amp;ltyp=o&amp;gmlid=".$lgml; 
     407                        if ($showkey) {echo "<span class='key'>(".$skey.")</span>&nbsp;";} 
     408                        echo $sname."</td>"; 
     409 
     410                        // rechte Spalte 
     411                        echo "\n\t<td>\n\t\t<p class='nwlink noprint'>" 
     412                                ."\n\t\t\t<a title='FlurstÃŒcke ".$slink."' href='alkislage.php?gkz=".$gkz."&amp;ltyp=o&amp;gmlid=".$lgml; 
    380413                                if ($showkey) {echo "&amp;showkey=j";}                           
    381414                                echo "'>\n\t\t\tLage <img src='ico/Lage_an_Strasse.png' width='16' height='16' alt=''>\n\t\t\t</a>" 
     
    583616                        if ($showkey) {echo "&amp;showkey=j";} 
    584617                        if ($cnt_adressen > 0) { // wenn Adresse vorgekommen ist 
    585                                 echo "' title='Geb&auml;udenachweis'>Geb&auml;ude "; 
     618                                echo "' title='Geb&auml;ude auf oder an dem Flurst&uuml;ck'>Geb&auml;ude "; 
    586619                        } else { // GebÀude mit Adresse gibt es NICHT, das ist klar 
    587620                                echo "' title='Suche Geb&auml;ude ohne Adresse auf dem Flurst&uuml;ck oder angrenzende Geb&auml;ude'>Suche "; 
     
    740773        ."\n\t<td class='fla sum' title='Summe der Ertragsmesszahlen f&uuml;r dies Flurst&uuml;ck'>".$gesertragsmz."</td>" 
    741774        ."\n\t<td class='re'>".$klasflaedis."</td>\n\t<td colspan='3'>&nbsp;</td>\n</tr>"; 
    742  
    743 //} else { // Result ist leer 
    744 //      if ($debug > 1) { 
    745 //              echo "\n<p class='dbg'>Keine BodenschÀtzung gefunden</p>"; 
    746 //              if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".$sql."<br>$1 = gml_id = '".$gmlid."'</p>";} 
    747 //      } 
    748775} 
    749776 
    750777// H i n w e i s  auf Bodenneuordnung oder eine strittige Grenze 
    751 // b.name, b.artderfestlegung,  
    752778$sql_boden ="SELECT a.k AS wert, a.v AS art_verf, b.gml_id AS verf_gml, b.bezeichnung AS verf_bez,  
    753779b.name AS verf_name, d.bezeichnung AS stelle_bez, d.stelle AS stelle_key  
     
    859885                                // Umschalter: FS-Nachweis ruft sich selbst mit geaendertem Parameter auf. Positionierung auf Marke "#gb" 
    860886                                if ($eig=="j") { 
    861                                         echo "&amp;eig=n#gb' title='Flurst&uuml;cksnachweis'>ohne Eigent&uuml;mer</a>"; 
     887                                        echo "&amp;eig=n#gb' title='Umschalter: Flurst&uuml;cksnachweis'>ohne Eigent&uuml;mer</a>"; 
    862888                                } else { 
    863                                         echo "&amp;eig=j#gb' title='Flurst&uuml;cks- und Eigent&uuml;mernachweis'>mit Eigent&uuml;mer " 
     889                                        echo "&amp;eig=j#gb' title='Umschalter: Flurst&uuml;cks- und Eigent&uuml;mernachweis'>mit Eigent&uuml;mer " 
    864890                                        ."<img src='ico/EigentuemerGBzeile.png' width='16' height='16' alt=''></a>"; 
    865891                                } 
  • 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.