Changeset 422


Ignore:
Timestamp:
06/24/21 15:59:16 (7 months ago)
Author:
frank.jaeger
Message:

Aktualisierungen der ALKIS-Buchauskunft, neues Modul für Bauwerke, Härtung

Location:
trunk/info
Files:
2 added
2 deleted
18 edited

Legend:

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

    r377 r422  
    33        Pfad zur Konfigurationsdatei der ALKIS-Auskunft. 
    44        Die Conf-Datei sollte aus Sicherheitsgruenden nicht unterhalb des Web-Root-Verzeichnisses liegen. 
    5  
    6         Version: 
    7         2016-02-23 Version fuer norGIS-ALKIS-Import, keine PostNAS-Versionsnummer im DB-Namen 
     5Version: 
     6        2020-10-13 Syntax ohne Klammern, rename 
    87*/ 
    9 require_once("/opt/gdi/conf/alkisn_conf.php"); // Nicht unter Web-Root speichern 
     8        include "/opt/gdi/conf/alkis_conf.php"; 
    109?> 
  • trunk/info/info/alkisn/alkisausk.php

    r412 r422  
    1111        Version: 
    1212        2016-02-24 Version fuer norGIS-ALKIS-Import 
    13         2016-11-29 HTML5, Gemeinsam genutzte Datenbanken ermöglichen (Berechtigung fÃŒr Gemeinde prÃŒfen) 
    14         2017-10-11 Sauber filtern auf endet IS NULL 
    15         2018-11-09 Umstellung Full-Schema 
     13        .... 
     14        2020-12-03 function selbstverlinkung() statt $_SERVER['PHP_SELF'] 
     15        2020-12-15 Input-Validation und Strict Comparisation (===) 
    1616 
    1717        H i n w e i s :  Dies Modul wird beim Entwickler nicht mehr produktiv eingesetzt. 
     
    1919                Mangels Praxis bleiben Fehler möglicherweise unerkannt. 
    2020*/ 
     21ini_set("session.cookie_httponly", 1); 
    2122session_start(); 
    2223$cntget = extract($_GET); 
    23  
    24 require_once("alkis_conf_location.php"); 
    25 if ($auth == "mapbender") {require_once($mapbender);} 
    26 include("alkisfkt.php"); 
     24if (isset($gkz)) { 
     25        if (!preg_match('#^[0-9]{3}$#', $gkz)) {die("Eingabefehler gkz");} 
     26} else { 
     27        die("Fehlender Parameter"); 
     28} 
     29include "alkis_conf_location.php"; 
     30include "alkisfkt.php"; 
     31 
    2732$keys = isset($_GET["showkey"]) ? $_GET["showkey"] : "n"; 
    28 if ($keys == "j") {$showkey=true;} else {$showkey=false;} 
     33if ($keys === "j") {$showkey=true;} else {$showkey=false;} 
    2934echo <<<END 
    3035<!doctype html> 
     
    3843<body> 
    3944END; 
     45 
     46$erlaubnis = darf_ich(); if ($erlaubnis === 0) { die('<p class="stop1">Abbruch</p></body>'); } 
     47 
    4048$con = pg_connect($dbconn." options='--application_name=ALKIS-Auskunft_alkisausk.php'"); 
    4149if (!$con) {echo "<br>Fehler beim Verbinden der DB.\n<br>";} 
     
    197205                $blattkey=$rowg["blattart"]; 
    198206                $blattart=$rowg["blattartv"]; 
    199                 if ($blattkey == 1000) { 
     207                if ($blattkey === 1000) { 
    200208                        echo "\n\t<table class='kennzgb' title='Bestandskennzeichen'>"; 
    201209                } else { 
     
    221229                ."\n\t</table>"; 
    222230 
    223                 if ($rowg["zaehler"] <> "") { 
     231                if ($rowg["zaehler"] != "") { 
    224232                        echo "\n<p class='ant'>".$rowg["zaehler"]."/".$rowg["nenner"]."&nbsp;Anteil am Flurst&uuml;ck</p>"; 
    225233                } 
     
    234242 
    235243        // E I G E N T U E M E R 
    236         if ($blattkey == 5000) { // SchlÃŒssel Blatt-Art 
     244        if ($blattkey === 5000) { // SchlÃŒssel Blatt-Art 
    237245                echo "\n<p>Keine Angaben zum Eigentum bei fiktivem Blatt</p>\n" 
    238246                ."\n<p>Siehe weitere Grundbuchbl&auml;tter mit Rechten an dem fiktiven Blatt.</p>"; 
     
    241249                $n = eigentuemer($rowg["gml_id"], false, "imFenster"); // ohne Adressen 
    242250 
    243                 if ($n == 0) { // keine NamNum, kein Eigent. 
     251                if ($n === 0) { // keine NamNum, kein Eigent. 
    244252                        echo "\n<p class='err'>Keine Eigent&uuml;mer gefunden.</p>" 
    245253                        ."\n<p class='err'>Bezirk ".$rowg["bezirk"]." Blatt ".$rowg["blatt"]." Blattart ".$blattkey." (".$blattart.")</p>"; 
     
    248256        $j++; 
    249257} 
    250 if ($j == 0) {echo "\n<p class='err'>Keine Buchungen gefunden.</p>";} 
     258if ($j === 0) {echo "\n<p class='err'>Keine Buchungen gefunden.</p>";} 
    251259echo "\n<hr>"; 
    252260 
    253 footer($gmlid, $_SERVER['PHP_SELF']."?", ""); 
     261footer($gmlid, selbstverlinkung()."?", ""); 
    254262 
    255263?> 
  • trunk/info/info/alkisn/alkisauszug.css

    r405 r422  
    33 
    44        Version: 
    5         2010-09-21      Inlay 
    6         2010-09-30      body-width bei Print 
    7         2010-10-12      class p.fsd: margin statt position-relative, dann keine Scrollbar 
    8         2011-01-04      Spalte td.fla im fsnw 
    9         2011-01-26      einheitlich td padding-top 6px 
    10         2011-11-16      FS-Historie 
    11         2013-06-27      p.recht 
    12         2014-01-27      strasse, hsnr, Print-Balken 
    13         2014-09-15      PostNAS 0.8: p.cnt 
    14         2014-12-30      Neu: td.fsnr 
    15         2016-02-24      Umstellung norBIT-Struktur 
    16         2016-12-01      Stop-Meldung bei BerechtigungsprÃŒfung, Sortierspalten 
    17         2017-06-08      Tab-Zeilen-Farbe wechseln, Spaltenbreite td.flag, media screen 
    18         2017-06-09      ErlÀrung zu Haus: 2 Arten 
    19         2017-10-11      BodenschÀtzung 
    20         2017-10-17      td.nwlink min-width 
    21         2017-12-20      td.dbg 
     5        2010-09-21       
     6        .... 
    227        2018-04-23      Spaltenbreiten 
    238        2018-05-03      GS-Nachweis 
     9        2020-02-03      media screen body width 
     10        2021-03-08  Gruppenwechsel-ZwischenÃŒberschrift 
     11        2021-03-17      Balken von Bauwerk Farbe wie im WMS 
    2412 
    25 https://wiki.selfhtml.org/wiki/Grafik/Farbpaletten#Farbnamen 
     13        https://wiki.selfhtml.org/wiki/Grafik/Farbpaletten#Farbnamen 
    2614*/ 
    2715body    {background-color: #FEFFFE;} 
    28 p, body {font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; 
    29         font-size: 10pt; color: #000033; margin-top: 2pt; margin-bottom: 2pt;} 
     16p, body {font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 10pt; color: #000033; margin-top: 2pt; margin-bottom: 2pt;} 
    3017 
    31 /* Banner im Kopf (farbiger Balken), Farbcode fuer Nachweis-Art (gleiche Farbe wie Rahmen um das Kennzeichen) */ 
    32 p.fsausk,p.fskennz,p.fsei,p.fshis,p.gbkennz,p.gskennz,p.nakennz,p.geb,p.lage,p.strasse,p.recht {text-align: right; padding-top: 4px; padding-bottom: 4px; padding-right: 24px;} 
    33 /* Balken-Farben individuell */ 
    34 p.fsausk        {background-color: teal; color: silver;}        /* Uebersichts-Seite Flurstuecks-Auskunft */ 
    35 p.fskennz,p.fsei{background-color: navy; color: silver;} /* Flurstuecks-Nachweis */ 
    36 p.fshis         {background-color: gray; color: white;}         /* Flurstuecks-Historie */ 
    37 p.gbkennz       {background-color: green; color: silver;}       /* Bestandsnachweis */ 
     18/* Banner im Kopf (farbiger Balken) */ 
     19p.balken        {text-align: right; padding-top: 4px; padding-bottom: 4px; padding-right: 24px;} 
     20 
     21        /* Farbcode individuell fÃŒr Nachweis-Art (gleiche Farbe wie Rahmen um Kennz.) */ 
     22p.fsausk        {background-color: teal; color: silver;}                        /* Uebersichts-Seite Flurstuecks-Auskunft */ 
     23p.fskennz,p.fsei{background-color: navy; color: silver;}                /* Flurstuecks-Nachweis */ 
     24p.fshis         {background-color: gray; color: white;}                         /* Flurstuecks-Historie */ 
     25p.gbkennz       {background-color: green; color: silver;}                       /* Bestandsnachweis */ 
    3826p.gskennz       {background-color: LightGreen ; color: DimGray ;}       /* GrundstÃŒcksnachweis */ 
    39 p.nakennz       {background-color: maroon; color: silver;}      /* Personen- und Adressdaten */ 
    40 p.geb           {background-color: yellow; color: gray;}        /* Gebaeude zum FS */ 
    41 p.lage          {background-color: lime; color: gray;}          /* Lage/Adresse zum FS */ 
     27p.nakennz       {background-color: maroon; color: silver;}                      /* Personen- und Adressdaten */ 
     28p.geb           {background-color: yellow; color: gray;}                        /* Gebaeude zum FS */ 
     29p.lage          {background-color: lime; color: gray;}                          /* Lage/Adresse zum FS */ 
    4230p.strasse       {background-color: limegreen; color: slategray;}        /* Strasse */ 
    43 p.recht         {background-color: #F0F8FF; color: gray;}       /* Baurecht, Bodenneuordnung */ 
     31p.recht         {background-color: #F0F8FF; color: gray;}                       /* Baurecht, Bodenneuordnung */ 
     32 
     33        /* in alkisbauwerk.php synchron zum Mapfile (WMS), 9 Layer-Gruppen */ 
     34p.bauwerk1      {background-color: rgb(40,0,180); color: gray;}         /* 1 Bauwerk im Verkehrsbereich */ 
     35p.bauwerk2      {background-color: rgb(0,160,246); color: gray;}        /* 2 Bauwerk im GewÀsserbereich */ 
     36p.bauwerk3      {background-color: rgb(160,130,0); color: black;}       /* 3 Sonstiges Bauwerk oder sonstige Einrichtung */ 
     37p.bauwerk4      {background-color: rgb(252,162,2); color: gray;}        /* 4 Bauwerk oder Anlage fÃŒr Industrie und Gewerbe */ 
     38p.bauwerk5      {background-color: rgb(140,0,120); color: gray;}        /* 5 Bauwerk oder Anlage fÃŒr Sport, Freizeit und Erholung */ 
     39p.bauwerk6      {background-color: rgb(220,10,10); color: black;}       /* 6 Leitung */ 
     40p.bauwerk7      {background-color: rgb(10,180,10 ); color: gray;}       /* 7 Transportanlage */ 
     41p.bauwerk8      {background-color: rgb(135,76,1); color: gray;}         /* 8 Turm */ 
     42p.bauwerk9      {background-color: rgb(0,140,40); color: black;}        /* 9 VorratsbehÀlter, Speicherbauwerk */ 
    4443 
    4544/* Format nach Inhalt */ 
    46 /* p.bezieh     {text-align: right; background: olive;  color: silver;} */ /* Beziehungen */ 
    47 p.fsd           {margin-left: 170px;}   /* Flst-Flaeche */ 
    48 p.gbl           {position: relative; left: 60px;}       /* Nam: Buchungsstelle*/ 
     45p.fsd           {margin-left: 170px;}                                   /* Flst-Flaeche */ 
     46p.gbl           {position: relative; left: 60px;}               /* Nam: Buchungsstelle*/ 
    4947p.zus           {margin: 2pt; padding: 2pt; border:1px dotted maroon; background: white;} /* Zusatz zum Eigent., gerahmt */ 
    50 p.avh           {font-style: italic; color: navy;}      /* Anteilsverhaeltnis */ 
     48p.avh           {font-style: italic; color: navy;}              /* Anteilsverhaeltnis */ 
    5149p.ant           {font-style: italic; position: relative;} /* Anteil am FS  left: 12px;*/ 
    52 p.geig          {color: navy;}          /* GB-Nachw. Eigentuemer Name */ 
    53 p.gadr          {color: maroon; margin-top: 1pt;}       /* GB-Nachw. Eigentuemer Adresse */ 
     50p.geig          {color: navy;}                                                  /* GB-Nachw. Eigentuemer Name */ 
     51p.gadr          {color: maroon; margin-top: 1pt;}               /* GB-Nachw. Eigentuemer Adresse */ 
    5452p.nwlink, td.nwlink {font-size: 7pt; text-align: right; margin-top: 0pt;}       /* Link zum Nachweis GB, FS, ..*/ 
    55 p.err           {font-size: 11px; color: red;}          /* Fehler -> Anwender */ 
     53p.err           {font-size: 11px; color: red;}                  /* Fehler -> Anwender */ 
    5654p.dbg, td.dbg{font-size: 10px; color: gray;}            /* Debug -> Entwickler */ 
    57 p.cnt           {font-size: 10px; color: gray;}         /* Counter, Zaehler */ 
    58 p.warn          {color: gray; font-style: italic;}      /* Warnung, Hinweis */ 
    59 p.ph            {color: gray;}                                          /* Platzhalter */ 
    60 p.erklk         {color: silver; font-size: 8pt;}        /* Haus: ErklÀrungen zur Kategorie */ 
    61 p.erkli         {color: grey; font-size: 8pt;}          /* Haus: ErklÀrungen zum Inhalt */ 
     55p.cnt           {font-size: 10px; color: gray;}                 /* Counter, Zaehler */ 
     56p.warn          {color: gray; font-style: italic;}              /* Warnung, Hinweis */ 
     57p.ph            {color: gray;}                                                  /* Platzhalter */ 
     58p.erklk         {color: silver; font-size: 8pt;}                /* Haus: ErklÀrungen zur Kategorie */ 
     59p.erkli         {color: grey; font-size: 8pt;}                  /* Haus: ErklÀrungen zum Inhalt */ 
    6260 
    6361/* Links */ 
     
    9391table.kennzstra {border: 2px solid  limegreen;  padding: 3px; margin: 0px;}     /* Strasse */ 
    9492 
    95 /* volle Breite fuer verschiedene Zwecke */ 
    96 table.fs, table.nua, table.klas, table.eig, table.outer, table.geb {width: 100%;} 
     93/* fast volle Breite, fuer verschiedene Zwecke, aber kleiner als Body */ 
     94table.fs, table.nua, table.klas, table.eig, table.outer, table.geb {width: 98%;}  
    9795 
    9896td      {vertical-align: top; padding-top: 6px;}        /* ** Tabellenfelder ** */ 
     
    10199td.ll   {width: 140px;} /* Liste Links */ 
    102100td.lr   {color: black; padding-left: 4px;}      /* Liste Rechts */ 
    103 td.re   {min-width: 80px; padding-right: 4px; text-align: right;} /* RechtsbÃŒndig */ 
    104 td.fla  {width: 110px; padding-right: 4px; text-align: right;} /* Flaechen rechtsbuendig (stellengerecht) */ 
    105 td.flag {min-width: 110px; padding-right: 4px; text-align: right;} /* .. im GB-Bestandsnachweis erweiterbar */ 
    106 td.fsnr {padding-right: 4px; text-align: right;} /* Flst.-Nr. rechtsbuendig */ 
     101td.re   {min-width: 80px; padding-right: 4px; text-align: right;}       /* RechtsbÃŒndig */ 
     102td.fla  {width: 110px; padding-right: 4px; text-align: right;}          /* Flaechen rechtsbuendig (stellengerecht) */ 
     103td.flag {min-width: 110px; padding-right: 4px; text-align: right;}      /* .. im GB-Bestandsnachweis erweiterbar */ 
     104td.fsnr {padding-right: 4px; text-align: right;}                                        /* Flst.-Nr. rechtsbuendig */ 
    107105td.key  {width:  35px; padding-right: 4px; padding-left: 4px;} 
    108 /* Ertragsmesszahl der Bodenschaetzung 
    109 td.emz  {width: 45px; padding-right: 4px; padding-left: 4px; text-align: right;} */ 
     106/* td.emz       {width: 45px; padding-right: 4px; padding-left: 4px; text-align: right;} Ertragsmesszahl der Bodenschaetzung */ 
    110107td.kurz {width: 26px; padding-left: 4px;} 
    111 td.nanu {width: 50px;}                          /* Namensnummer */ 
     108td.nanu {width: 50px;}                                                                  /* Namensnummer */ 
    112109td.sond, p.sond {font-size: 9pt; font-style: italic; background-color: white; 
    113                 border: 1px dotted silver; padding: 6px;}       /* Sondereigentumsbeschreibung */ 
     110                border: 1px dotted silver; padding: 6px;}               /* Sondereigentumsbeschreibung */ 
    114111td.nrap, p.nrap {font-size: 9pt; font-style: italic; background-color: white;}  /* Nummer im Aufteilungsplan */ 
    115112td.fett {font-weight: bold;} 
    116 td.nwlink {min-width: 80px;}    /* Link zum Nachweis */ 
     113td.nwlink {min-width: 80px;}                                                    /* Link zum Nachweis */ 
    117114 
    118 /* Kopfzeile, Spaltenueberschrift */ 
    119 td.head, td.heads{font-style: italic; padding-top: 2px;}         
    120 td.head {border-bottom: 1px solid gray;}         
    121 td.heads        {border-bottom: 1px solid black;}       /* Kopf Sortierspalte(n) */ 
     115/* Kopfzeile, SpaltenÃŒberschrift, GW-Zwischenzeile */ 
     116td.head, td.heads, td.gw{font-style: italic; padding-top: 2px;}  
     117td.head         {border-bottom: 1px solid gray;}         
     118td.heads        {border-bottom: 1px solid black;}                       /* Kopf Sortierspalte */ 
     119td.gw           {background-color: WhiteSmoke;}                         /* Gruppen-Wechsel */ 
    122120 
    123121td.sum {border-top: 2px dotted maroon;  border-bottom:3px solid maroon; 
    124122        border-left:0px dotted maroon;  border-right:0px dotted maroon; font-weight: bold;}     /* unter dem Strich = Summenzeile */ 
    125 td.bez  {font-weight: bold;}    /* Beziehungen */ 
    126 td.nhd  {width: 150px;}                 /* Namen - linke / rechte Spalte */ 
     123td.bez  {font-weight: bold;}            /* Beziehungen */ 
     124td.nhd  {width: 150px;}                         /* Namen - linke / rechte Spalte */ 
    127125td.nam  {font-weight: bold;} 
    128126/* td.gbl       {border-bottom: 1px dotted green;}       Name: GB-Liste */ 
     
    133131td.hsnr {width: 70px; padding-right: 4px; text-align: right;} /* Hausnummer in Straße */ 
    134132 
    135 /* Fallunterscheidung bei GebÀude auf FlurstÃŒck: */ 
    136 td.gin {color: rgb(0,50,0);}    /* GebÀude in FS */ 
    137 td.gtl {color: rgb(140,140,100);}       /* GebÀude teilweise auf FS */ 
    138 td.gan {color: rgb(210,170,170);}       /* GebÀude angrenzend an FS*/ 
     133/* Fallunterscheidung bei GebÀude oder Bauwerk auf FlurstÃŒck: */ 
     134td.gin {color: rgb(0,50,0);}                    /* in FS */ 
     135td.gtl {color: rgb(140,140,100);}               /* teilweise auf FS */ 
     136td.gan {color: rgb(210,170,170);}               /* angrenzend an FS*/ 
    139137 
    140138/* Farbwechsel je Zeile pair/unpair */ 
     
    142140tr.unp {background-color: rgb(252,255,252);} 
    143141 
    144 /* Ueberschriften */ 
     142/* Überschriften */ 
    145143h1, h2, h3, h4, h5, h6 {font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;} 
    146144h1 {    color: black;   font-size: 14pt;} 
     
    152150 
    153151img     {border: 0px; margin: 0px;} /* Icons */ 
    154  
    155 iframe.inlay {border:0px; width: 100%;} /* height: 400px; */ 
    156152 
    157153/* Abbruch, Fehler der Berechtigung */ 
     
    166162/* Nur am Bildschirm: */ 
    167163@media screen { 
    168         /* gefÃŒllten farbiger Balken abrunden */ 
    169         p.fsausk,p.fskennz,p.fsei,p.fshis,p.gbkennz,p.gskennz,p.nakennz,p.geb,p.lage,p.strasse,p.recht { border-radius: 8px; } 
     164        body {width: 740px;} /* wenn in eigenem Browser-Tab geöffnet statt in Hochformat-Fenster. 
     165                width synchron halten mit Javascript-Function "imFenster" aus alkisinlayausk.php. Etwas kleiner als Fenster. */ 
     166        body.mbfi {width: 540px;} /* Mapbender Feature-Info, kleines PopUp-Fenster */ 
     167        /* iframe.inlay Siehe featureinfo.css */ 
     168 
     169        p.balken {border-radius: 8px;}          /* gefÃŒllten farbiger Balken, abrunden */ 
    170170        .onlyprint {visibility: hidden;} 
    171171} 
    172172 
    173173/* Abweichende Darstellung im Druck. 
    174 Generell keine "Bedienelemente" mit drucken, also Links zu anderen Nachweisen oder optionale Umschalter fÃŒr den Umfang der Anzeige. 
    175 Dies wird durch class='noprint' gesteuert. Große farbige FlÀchen vermeiden, z.B. durch Rahmen ersetzen. */ 
     174Generell keine "Bedienelemente" mit drucken, also Hyperlinks zu anderen Nachweisen oder optionale Umschalter fÃŒr den Umfang der Anzeige. 
     175Dies wird durch class='noprint' gesteuert. Große farbige FlÀchen vermeiden, z.B. durch einen Rahmen ersetzen. */ 
    176176@media print { 
    177         body    {background-color: white;} /* width: 98%; */ 
    178         .noprint {visibility: hidden;} 
     177        body            {background-color: white;} 
     178        .noprint        {visibility: hidden;} 
    179179 
    180180        /* Balken im Druck (auf weißem Hintergrund) mit schwarzer Schrift */ 
  • trunk/info/info/alkisn/alkisbaurecht.php

    r412 r422  
    55        Version: 
    66        2016-02-24 Version fuer norGIS-ALKIS-Import 
    7         2016-11-29 HTML5, Gemeinsam genutzte Datenbanken ermöglichen 
    8         2017-06-08 Validierung Eingabeparameter, Feinkorrekturen 
    9         2017-10-09 Sauber filtern auf endet IS NULL 
    10         2018-04-23 &nodebug 
    11         2018-11-09 Umstellung Full-Schema 
     7        .... 
     8        2020-02-20 Authentifizierung ausgelagert in Function darf_ich() 
     9        2020-12-03 function selbstverlinkung() statt $_SERVER['PHP_SELF'] 
     10        2020-12-15 Input-Validation und Strict Comparisation (===) 
    1211*/ 
     12ini_set("session.cookie_httponly", 1); 
    1313session_start(); 
    1414$showkey="n"; $nodebug=""; // Var. aus Parameter initalisieren 
     
    1616 
    1717// strikte Validierung aller Parameter 
    18 if (!isset($gmlid) or !preg_match('#^[0-9A-Za-z]{16}$#', $gmlid)) {die("Eingabefehler gmlid");} 
    19 if (!isset($gkz) or !preg_match('#^[0-9]{3}$#', $gkz)) {die("Eingabefehler gkz");} 
     18if (isset($gmlid)) { 
     19        if (!preg_match('#^[0-9A-Za-z]{16}$#', $gmlid)) {die("Eingabefehler gmlid");} 
     20} else { 
     21        die("Fehlender Parameter"); 
     22} 
     23if (isset($gkz)) { 
     24        if (!preg_match('#^[0-9]{3}$#', $gkz)) {die("Eingabefehler gkz");} 
     25} else { 
     26        die("Fehlender Parameter"); 
     27} 
    2028if (!preg_match('#^[j|n]{0,1}$#', $showkey)) {die ("Eingabefehler showkey");} 
    21 if ($showkey == "j") {$showkey=true;} else {$showkey=false;} 
     29if ($showkey === "j") {$showkey=true;} else {$showkey=false;} 
    2230if (!preg_match('#^j{0,1}$#', $nodebug)) {die("Eingabefehler nodebug");} 
    2331 
    24 require_once("alkis_conf_location.php"); 
    25 if ($auth == "mapbender") {require_once($mapbender);} 
    26 include("alkisfkt.php"); // f. Footer 
     32include "alkis_conf_location.php"; 
     33include "alkisfkt.php"; 
     34 
    2735echo <<<END 
    2836<!doctype html> 
     
    3846END; 
    3947 
     48$erlaubnis = darf_ich(); if ($erlaubnis === 0) {die('<p class="stop1">Abbruch</p></body>');} 
     49 
    4050// Mit URL-Parameter "&nodebug=j" kann man die Entwicklungsumgebung (in Conf definiert) ausschalten. 
    41 // Manuell an die URL anfügen, wirkt nur temporär und wird nicht in Links weiter gereicht. 
    42 if ($nodebug == "j") {$debug=0;}  
     51// Manuell an die URL anfÃŒgen, wirkt nur temporÀr und wird nicht in Links weiter gereicht. 
     52if ($nodebug === "j") {$debug=0;}  
    4353 
    4454$con = pg_connect($dbconn." options='--application_name=ALKIS-Auskunft_alkisbaurecht.php'"); 
     
    5969if (!$res) { 
    6070        echo "\n<p class='err'>Fehler bei Baurecht.</p>"; 
    61         if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = ".$gmlid."</p>";} 
     71        if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".htmlentities(str_replace("$1", "'".$gmlid."'", $sql), ENT_QUOTES, "UTF-8")."</p>";} 
    6272} 
    6373if ($row = pg_fetch_assoc($res)) { 
     
    6777        $stellb=$row["stellbez"]; 
    6878        $stella=$row["stellenart"]; 
     79        $behb=$row["beschreibung"]; 
     80        $behd=$row["dokumentation"]; 
    6981 
    7082        // Balken 
    71         echo "<p class='recht'>ALKIS Bau-, Raum- oder Bodenordnungsrecht ".$artfest."-".$verfnr."&nbsp;</p>"; 
     83        echo "<p class='balken recht'>ALKIS Bau-, Raum- oder Bodenordnungsrecht ".$artfest."-".$verfnr."&nbsp;</p>"; 
    7284 
    7385        echo "\n<h2><img src='ico/Gericht.png' width='16' height='16' alt=''> Bau-, Raum- oder Bodenordnungsrecht</h2>"; 
     
    102114                                        ."\n\t<td class='li'>Art der Dienststelle:</td>" 
    103115                                        ."\n\t<td>"; 
    104                                                 if ($showkey) {echo " <span class='key'>(".$stella.")</span>";} 
    105                                                 echo "<span title='".$row["d"]."'>".$row["v"]."</span>";  
     116                                                if ($showkey) {echo " <span class='key'>(".$stella.")</span>&nbsp;";} 
     117                                                echo "<span title='".$behd."'>".$behb."</span>"; 
    106118                                        echo "</td>" 
    107119                                ."\n</tr>"; 
     
    124136FROM ax_flurstueck f, ax_bauraumoderbodenordnungsrecht r 
    125137WHERE r.gml_id= $1 AND f.endet IS NULL AND r.endet IS NULL "; 
    126 if ($filtgem == '' ) { // ungefiltert 
     138if ($filtgem === '' ) { // ungefiltert 
    127139        $v=array($gmlid); 
    128140} else { 
    129         $sql.="AND f.gemeindezugehoerigkeit_kreis = $2 AND f.gemeindezugehoerigkeit_gemeinde = $3 "; // Zuständiges Gebiet 
     141        $sql.="AND f.gemeindezugehoerigkeit_kreis = $2 AND f.gemeindezugehoerigkeit_gemeinde = $3 "; // ZustÀndiges Gebiet 
    130142        $v=array($gmlid, $filtkreis, $filtgem); 
    131143} 
    132144$sql.="AND st_intersects(r.wkb_geometry,f.wkb_geometry) = true  
    133145AND st_area(st_intersection(r.wkb_geometry,f.wkb_geometry)) > 0.05  
    134 ORDER BY schnittflae DESC LIMIT 50;";  
     146ORDER BY schnittflae DESC LIMIT 100;";  
    135147// > 0.0 ist gemeint, Ungenauigkeit durch st_simplify 
    136148// Limit: Flurbereinig. kann gross werden! 
     
    140152$res=pg_execute("", $v); 
    141153if (!$res) { 
    142         echo "\n<p class='err'>Keine Flurst&uuml;cke ermittelt.<br>\nSQL=<br></p>"; 
    143 //      if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = ".$gmlid."</p>";} 
     154        echo "\n<p class='err'>Keine Flurst&uuml;cke ermittelt.<br></p>"; 
     155        //if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".htmlentities(str_replace("$1", "'".$gmlid."'", $sql), ENT_QUOTES, "UTF-8")."</p>";} // ggf. mehrere Parameter! 
    144156} 
    145157 
     
    172184echo "\n</table>"; 
    173185 
    174 if ($fscnt == 0) { // nicht gefunden 
    175         if ($filtgem == '' ) { // ungefiltert 
     186if ($fscnt === 0) { // nicht gefunden 
     187        if ($filtgem === '' ) { // ungefiltert 
    176188                echo "\n<p class='err'>Kein Flurst&uuml;ck gefunden.</p>"; 
    177189        } else { // Wahrscheinliche Ursache = Filter 
     
    179191        //      if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = ".$gmlid." $2 = ".$filtkreis." $3 = ".$filtgem."</p>";} 
    180192        } 
    181 } elseif ($fscnt == 50) { 
    182         echo "<p>... und weitere Flurst&uuml;cke (Limit 50 erreicht).</p>"; 
     193} elseif ($fscnt === 100) { 
     194        echo "<p>... und weitere Flurst&uuml;cke (Limit 100 erreicht).</p>"; 
    183195} 
    184196 
     
    193205END; 
    194206 
    195 footer($gmlid, $_SERVER['PHP_SELF']."?", ""); 
     207footer($gmlid, selbstverlinkung()."?", ""); 
    196208 
    197209?> 
  • trunk/info/info/alkisn/alkisbestnw.php

    r416 r422  
    77        Version: 
    88        2016-02-24 Version fuer norGIS-ALKIS-Import 
    9         2016-11-29 HTML5, Gemeinsam genutzte Datenbanken ermöglichen, Markierung der Sortierung 
    10         2017-06-01 Function "eigentuemer" ohne Parameter $con 
    11         2017-06-08 Validierung Eingabeparameter, Farbwechsel der Tabelle je GrundstÃŒck, Feinschliff und HTML-Profilierung 
    12         2017-10-09 SchlÃŒssel der Blattart bei berechtigten BlÀttern, sauber filtern auf endet IS NULL 
    13         2018-04-23 Blatt und EigentÃŒmer in eine Tabelle. 
    14         2018-05-03 Anpassung an GrundstÃŒcksnachweis, kein Export fÃŒr fiktives Blatt 
    15         2018-11-09 Umstellung Full-Schema 
    16         2018-11-14 Korrektur zu Full-Schema 
     9        .... 
     10        2020-02-20 Authentifizierung ausgelegert in Function darf_ich() 
     11        2020-12-03 function selbstverlinkung() statt $_SERVER['PHP_SELF'] 
     12        2020-12-15 Input-Validation und Strict Comparisation (===) 
    1713*/ 
     14ini_set("session.cookie_httponly", 1); 
    1815session_start(); 
    1916$showkey="n"; $nodebug=""; // Var. initalisieren 
     
    2118 
    2219// strikte Validierung aller Parameter 
    23 if (!isset($gmlid) or !preg_match('#^[0-9A-Za-z]{16}$#', $gmlid)) {die("Eingabefehler gmlid");} 
    24 if (!isset($gkz) or !preg_match('#^[0-9]{3}$#', $gkz)) {die("Eingabefehler gkz");} 
     20if (isset($gmlid)) { 
     21        if (!preg_match('#^[0-9A-Za-z]{16}$#', $gmlid)) {die("Eingabefehler gmlid");} 
     22} else { 
     23        die("Fehlender Parameter"); 
     24} 
     25if (isset($gkz)) { 
     26        if (!preg_match('#^[0-9]{3}$#', $gkz)) {die("Eingabefehler gkz");} 
     27} else { 
     28        die("Fehlender Parameter"); 
     29} 
    2530if (!preg_match('#^[j|n]{0,1}$#', $showkey)) {die ("Eingabefehler showkey");} 
    26 if ($showkey == "j") {$showkey=true;} else {$showkey=false;} 
     31if ($showkey === "j") {$showkey=true;} else {$showkey=false;} 
    2732if (!preg_match('#^j{0,1}$#', $nodebug)) {die("Eingabefehler nodebug");} 
    2833 
    29 require_once("alkis_conf_location.php"); 
    30 if ($auth == "mapbender") {require_once($mapbender);} 
    31 include("alkisfkt.php"); 
     34include "alkis_conf_location.php"; 
     35include "alkisfkt.php"; 
     36 
    3237?> 
    3338<!doctype html> 
     
    4752<body> 
    4853<?php 
     54 
     55$erlaubnis = darf_ich(); if ($erlaubnis === 0) { die('<p class="stop1">Abbruch</p></body>'); } 
     56 
    4957// Mit URL-Parameter "&nodebug=j" kann man die Entwicklungsumgebung (in Conf definiert) ausschalten. 
    5058// Manuell an die URL anfÃŒgen, wirkt nur temporÀr und wird nicht in Links weiter gereicht. 
    51 if ($nodebug == "j") {$debug=0;}  
     59if ($nodebug === "j") {$debug=0;}  
    5260 
    5361$con = pg_connect($dbconn." options='--application_name=ALKIS-Auskunft_alkisbestnw.php'"); 
     
    6977if (!$res) { 
    7078        echo "\n<p class='err'>Fehler bei Grundbuchdaten.</p>"; 
    71         if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = gml_id = '".$gmlid."'</p>";} 
     79        if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities(str_replace("$1", "'".$gmlid."'", $sql), ENT_QUOTES, "UTF-8")."</p>";} 
    7280} 
    7381if ($row = pg_fetch_assoc($res)) { 
     
    7684        $blatt=ltrim($row["blatt"], "0"); 
    7785 
    78         echo "<p class='gbkennz'>ALKIS Bestand ".$row["bezirk"]." - ".$blatt."&nbsp;</p>"; // Balken 
     86        echo "<p class='balken gbkennz'>ALKIS Bestand ".$row["bezirk"]." - ".$blatt."&nbsp;</p>"; // Balken 
    7987        echo "\n<h2>Grundbuch</h2>"; 
    8088        echo "\n<table class='outer'>" // Blatt UND Eigent. 
     
    112120} else { // E I G E N T U E M E R 
    113121        $n = eigentuemer($gmlid, true, ""); // MIT Adressen. 
    114         if ($n == 0) { // keine NamensNr, kein Eigentuemer 
     122        if ($n === 0) { // keine NamensNr, kein Eigentuemer 
    115123                echo "\n<p class='err'>Keine Namensnummer gefunden.</p>" 
    116124                ."\n<p>Bezirk: ".$row["bezirk"].", Blatt: ".$blatt.", Blattart ".$blattkey." (".$blattart.")</p>"; 
     
    179187if (!$res) { 
    180188        echo "\n<p class='err'>Fehler bei Buchung.</p>"; 
    181         if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = gml_id = '". $gmlid."'</p>";} 
     189        if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities(str_replace("$1", "'".$gmlid."'", $sql), ENT_QUOTES, "UTF-8")."</p>";} 
    182190} 
    183191$i=0; 
     
    202210        $j = bnw_fsdaten($lfdnr, $gml_bs, $bart, $anteil, true, $bartkey, $bartstory); // return=Anzahl der FS 
    203211        $fscnt=$fscnt + $j; 
    204         if ($j == 0) { //  k e i n e  Flurstuecke gefunden (Miteigentumsnteil usw.) 
     212        if ($j === 0) { //  k e i n e  Flurstuecke gefunden (Miteigentumsnteil usw.) 
    205213                // Bei "normalen" Grundstuecken wurden hier Flurstuecksdaten gefunden und ausgegeben. 
    206214                // Bei Miteigentumsanteil, Erbbaurecht usw. muss nach den "dienenden" Buchungsstellen gesucht werden, darauf sind die FS gebucht. 
     
    230238                if (!$resan) { 
    231239                        echo "\n<p class='err'>Fehler bei 'andere Buchungsstelle'.</p>"; 
    232                         if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = '".$gml_bs."'</p>";} 
     240                        if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities(str_replace("$1", "'".$gml_bs."'", $sql), ENT_QUOTES, "UTF-8")."</p>";} 
    233241                } 
    234242 
     
    252260                        if (!$fbres) { 
    253261                                echo "\n<p class='err'>Fehler bei fiktivem Blatt.</p>"; 
    254                                 if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = gml_id = '".$gmlid."'</p>";}                         
     262                                if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities( str_replace("$1", "'".$gml_bsan."'", $sql), ENT_QUOTES, "UTF-8")."</p>";}                        
    255263                        } 
    256264                        $b=0; 
     
    271279                        echo "\n<tr class='".$trclass."'>" 
    272280                                ."\n\t<td id='bvnr".$lfdnr."'>"; // Sp.1 Erbbau BVNR, Sprungmarke 
    273                                         if($bvnr == $altbvnr) { // gleiches Grundstueck 
     281                                        if($bvnr === $altbvnr) {        // gleiches Grundstueck 
    274282                                                echo "&nbsp;"; // dann Anzeige unterdruecken 
    275283                                        } else { 
     
    328336                        $a++; 
    329337                } 
    330                 if ($a == 0) { 
     338                if ($a === 0) { 
    331339                        echo "\n<tr class='".$trclass."'>" 
    332340                                ."\n\t<td><span class='wichtig'>".$bvnr."</span></td>" 
     
    349357echo "\n</table>"; 
    350358 
    351 if ($i == 0) { 
     359if ($i === 0) { 
    352360        echo "\n<p class='err'>Keine Buchung gefunden.</p>"; 
    353361} else { 
     
    379387if (!$resb) { 
    380388        echo "\n<p class='err'>Fehler bei 'Berechtigte Bl&auml;tter.</p>"; 
    381         if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = gml_id = '".$gmlid."'</p>";} 
     389        if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities(str_replace("$1", "'".$gmlid."'", $sql), ENT_QUOTES, "UTF-8")."</p>";} 
    382390} 
    383391$b=0; // count: Buchungen / BlÀtter 
    384392$zpaar=false; 
    385393while($rowb = pg_fetch_assoc($resb)) { 
    386         if ($b == 0) { // Ueberschrift und Tabelle nur ausgeben, wenn etwas gefunden wurde 
     394        if ($b === 0) { // Ueberschrift und Tabelle nur ausgeben, wenn etwas gefunden wurde 
    387395                echo "\n\n<h3><img src='ico/Grundbuch_zu.png' width='16' height='16' alt=''> Berechtigte Grundb&uuml;cher</h3>" 
    388396                ."\n<table class='outer'>" 
     
    443451        $b++; 
    444452} 
    445 if ($b == 0) { 
     453if ($b === 0) { 
    446454        if ($blattkey > 2000 ) { // Warnung nicht bei Grundbuchblatt 1000 und Katasterblatt 2000 
    447455                echo "\n<p class='err'>Keine berechtigten Bl&auml;tter zu ".$blattart." (".$blattkey.") gefunden.</p>"; 
     
    463471} 
    464472echo "&nbsp;\n</div>"; 
    465 footer($gmlid, $_SERVER['PHP_SELF']."?", ""); 
     473footer($gmlid, selbstverlinkung()."?", ""); 
    466474?> 
    467475</body> 
  • trunk/info/info/alkisn/alkisexport.php

    r412 r422  
    2222        -------- 
    2323        2016-02-23      Version fuer norGIS-ALKIS-Import 
    24         2016-10-18      Export einer ganzen Gemarkung zulassen (Sonderfall bei den Parametern) 
    25         2016-11-29      Gemeinsam genutzte Datenbanken ermöglichen 
    26         2017-02-23      Filter mit/ohne Hausnummer zum Typ "strasse". 
    27                                 Dazu muss der View "exp_csv_str" um die spalte "fall" erweitert werden. 
    28         2017-06-08 Validierung Eingabeparameter 
    29         2017-10-11 Sauber filtern auf endet IS NULL 
    30         2017-12-20 Nur eine Adresse zur Person (Siehe Views in "views_exp_csv.sql") 
     24        .... 
    3125        2018-05-03 Aufruf aus neuem GrundstÃŒcksnachweis: tabtyp='buchung', angepasster View "exp_csv" notwendig 
    3226        2018-10-16 Neuer Aufruf-Typ aus der rÀumlichen Selektion, &tabtyp=flstliste&prefix=DENW15&gmlliste=AL...,AL.... 
     27        2020-12-16 Input-Validation und Strict Comparisation (===), BerechtigungsprÃŒfung vorÃŒbergehend deaktiviert 
    3328 
    3429        ToDo: 
     
    5752                if ($j > 0) {$lagehsnr.=", ";} 
    5853                $sneu=$row["bezeichnung"]; 
    59                 if ($sneu == $salt) { // gleiche Str. 
     54                if ($sneu === $salt) { // gleiche Str. 
    6055                        $lagehsnr.=$row["hausnummer"]; // HsNr dran haengen 
    6156                } else { // Name UND HsNr dranhaengen 
     
    7570 
    7671// strikte Validierung aller Parameter 
    77 if ( isset($gmlid) ) { 
     72if (isset($gmlid)) { 
    7873        if ( !preg_match('#^[0-9A-Za-z]{16}$#', $gmlid)) {die("Eingabefehler gmlid");} 
    7974} else { 
     
    8277 
    8378// FS-Limit? x (16+1) =  
    84 if ( isset($gmlliste) ) { 
     79if (isset($gmlliste)) { 
    8580        if (!preg_match("#^[0-9A-Za-z,]{16,2000}$#", $gmlliste)) { 
    86         //      echo "\n<p>gmlliste=".$gmlliste."</p>\n";   // NUR TEST 
    8781                die("Eingabefehler gmlliste"); 
    8882        } 
    8983} 
    9084 
    91 if (!isset($gkz) or !preg_match('#^[0-9]{3}$#', $gkz)) {die("Eingabefehler gkz");} 
     85if (isset($gkz)) { 
     86        if (!preg_match('#^[0-9]{3}$#', $gkz)) {die("Eingabefehler gkz");} 
     87} else { 
     88        die("Fehlender Parameter"); 
     89} 
    9290if (isset($gemarkung)) { 
    9391        if (!preg_match('#^[0-9]{4}$#', $gemarkung)) {die("Eingabefehler gemarkung");} 
     
    9896if (!preg_match('#^[a-z]{0,10}$#', $tabtyp)) {die("Eingabefehler tabtyp");} 
    9997 
    100 require_once("alkis_conf_location.php"); // Konfiguration laden 
    101 include("alkisfkt.php"); // Funktionen der ALKIS-Auskunft laden 
    102  
    103 if ($tabtyp == '') { // Parameter (-kombinationen) pruefen 
     98include "alkis_conf_location.php"; 
     99include "alkisfkt.php"; 
     100 
     101// BerechtigungsprÃŒfung fuer CSV vorÃŒbergehend deaktiviert weil darin HTML-Meldungen ausgegeben werden. 
     102// ggf. dies per Option verhindern und wieder aktivieren. 
     103//$erlaubnis = darf_ich(); if ($erlaubnis === 0) { die('Abbruch'); } 
     104 
     105if ($tabtyp === '') { // Parameter (-kombinationen) pruefen 
    104106        if ($gemarkung != '') { // Dieser Parameters bestimmt auch eindeutig den $tabtyp 
    105107                $tabtyp = 'gemarkung'; 
     
    108110                exit ($err); 
    109111        } 
    110 } elseif ($tabtyp == 'gemarkung') { 
    111         if ($gemarkung == '') { 
     112} elseif ($tabtyp === 'gemarkung') { 
     113        if ($gemarkung === '') { 
    112114                $err="\nFehler: Gemarkungsnummer nicht angeben."; 
    113115                exit ($err); 
     
    116118 
    117119if ($gmlid != '') { // Angabe von gmlid ist der Normalfall, das passt fÃŒr fast jeden tabtyp 
    118         if ($tabtyp == 'strasse' and $haus != '') { // den Zusatzfilter m/o im Dateinamen dokumentieren 
    119                 if ($haus == 'm') { 
     120        if ($tabtyp === 'strasse' and $haus != '') { // den Zusatzfilter m/o im Dateinamen dokumentieren 
     121                if ($haus === 'm') { 
    120122                        $filename='alkis_'.$tabtyp.'_'.$gmlid.'_mit_hsnr.csv'; 
    121123                } else {  // = o 
     
    134136 
    135137/*      // $gmlid zu strasse ist noch notwendig solange kein Filter auf "Gemeinde" verwendet wird. 
    136         } elseif ($haus == 'm' or $haus == 'o') { // Sonderfall 2 - alle mit/ohne Hausnummer, nur ÃŒber View "exp_csv_str" möglich 
     138        } elseif ($haus === 'm' or $haus === 'o') { // Sonderfall 2 - alle mit/ohne Hausnummer, nur ÃŒber View "exp_csv_str" möglich 
    137139                if ($tabtyp != 'strasse') { 
    138140                        $err="\nFehler: Falsche Kombination Parameter tabtyp='".$tabtyp."' mit Wert fuer Haus."; 
    139141                        exit ($err); 
    140142                } 
    141                 if ($haus == 'm') { // den Zusatzfilter m/o im Dateinamen dokumentieren 
     143                if ($haus === 'm') { // den Zusatzfilter m/o im Dateinamen dokumentieren 
    142144                        $filename='alkis_'.$tabtyp.'_mit_hsnr.csv'; 
    143145                } else { 
     
    224226} 
    225227 
    226 if ($haus == 'm' or $haus == 'o') { // nur FS mit/ohne verschl. Lagebez. 
    227 //      if ($gmlid == '') { // m/o-Filter als einziger Filter 
     228if ($haus === 'm' or $haus === 'o') { // nur FS mit/ohne verschl. Lagebez. 
     229//      if ($gmlid === '') { // m/o-Filter als einziger Filter 
    228230//              $sql="SELECT * FROM ".$viewname." WHERE fall='".$haus."' "; // Ersetzen 
    229231//              $v=array(); // kein Filter-Feld 
     
    349351} 
    350352pg_free_result($res); 
    351 if ($i == 1) { // nur Kopf 
    352         if ( $gmlid == '' ) { 
     353if ($i === 1) { // nur Kopf 
     354        if ($gmlid == '') { 
    353355                $err="\nKein Treffer"; 
    354         //      echo "\n".$sql."\n".$v[0]."\n".$dbconn."\n"; 
    355356        } else { 
    356357                $err="\nKein Treffer fuer gml_id='".$gmlid."'"; 
  • trunk/info/info/alkisn/alkisfkt.php

    r419 r422  
    33 
    44        ALKIS-Buchauskunft, Kommunales Rechenzentrum Minden-Ravensberg/Lippe (Lemgo). 
    5         Functions 
     5        F u n c t i o n s 
    66 
    77        Version: 
    88        2016-02-24 Version fuer norGIS-ALKIS-Import, "function linkgml" raus. Case-EntschlÃŒsselung raus. 
    9         2016-03-03 Hinweis auf Datenfehler wenn "ax_person" fehlt in function "eigentuemer" 
    10         2016-03-14 Kleine Korrekturen 
    11         2016-11-29 Gemeinsam genutzte Datenbanken ermöglichen (Filter Gemeinde) 
    12         2017-06-08 gestreifte Tabelle, Feinkorrekturen 
    13         2017-10-17 Deutsches Datumsformat fÃŒr Geburtsdatum der Person 
    14         2017-11-03 neue function werteliste() 
    15         2017-12-20 Default Anzeigewert "EigentÃŒmer" im Link fÃŒr leere EigentÃŒmerart, JÃŒngste Adresse zur Person verwenden. 
    16         2018-04-23 Berechtigte Buchungen im FS-Nachw. verbessern. Neue Spalte statt Überschriften fÃŒr "EigentÃŒmer" und "Berechtigte Buchungen". 
    17         2018-05-03 GrundstÃŒcksnachweis 
    18         2018-11-09 Umstellung Full-Schema 
    19         2018-11-19 EntschlÃŒsseln "zeigtaufexternes_art" mit function fortfuehrungen(). 
    20         2018-12-18 function fskenn_dbformat 
    21  
    22         ++ ToDo: Parameter $lnkclass in eigentuemer() und $jfenster in buchung_anzg() vereinheitlichen 
     9        .... 
     10        2020-12-03 function selbstverlinkung() statt $_SERVER['PHP_SELF'] fÃŒr Einsatz hinter Gateway mit Änderung des Pfades (Docker/QWC2) 
     11        2020-12-09 Entschl. BodenschÀtzung korrigiert in function werteliste() 
     12        2020-12-15 Input-Validation und Strict Comparisation (===) 
     13        2020-12-16 Sonderfall QWC2 API-Gateway-Umleitung bei Selbstverlinkung 
    2314*/ 
     15 
     16function selbstverlinkung() { 
     17//      Aus der Server-Variable den Pfad entfernen. 
     18        global $pfadlos_selbstlink; 
     19        If ($pfadlos_selbstlink === 1) { // pfad-lose Selbstverlinkung hinter einer Umleitung. z.B. QWC2 API-Gateway 
     20                // Pfad entfernen 
     21                $mod=strrchr($_SERVER['PHP_SELF'], '/'); 
     22                $mod=substr($mod, 1); 
     23        } else { // normaler Webserver, die Systemvariable ist korrekt 
     24                $mod=$_SERVER['PHP_SELF']; 
     25        } 
     26        return $mod; 
     27} 
     28 
     29function darf_ich() { 
     30//      Am Anfang jedes Moduls aufrufen um $customer zu fÃŒllen.         
     31//      Nach EinfÃŒhrung eines automatisch einloggenden anonymen Mapbender-Gast-Benutzers muss dieser bei der Authentifizierung ausgeschlossen werden. 
     32        global $auth, $customer, $mb_guest_user, $debug; 
     33 
     34        if ($auth === "") {     // nicht prÃŒfen 
     35        //      if ($debug > 1) {echo "\n<p class='dbg'>keine Berechtigungs-PrÃŒfung</p>";} 
     36                $customer = "(unbekannt)"; 
     37                return 1;       // alles erlaubt 
     38 
     39        } elseif ($auth === "mapbender") { 
     40 
     41        //      if ($debug > 1) {echo "\n<p class='dbg' Berechtigungs-Pr&uuml;fung Mapbender</p>";} 
     42                $customer = ""; 
     43                include '/opt/gdi/mapbender/http/php/mb_validateSession.php'; 
     44                 
     45                if (!isset($_SESSION)) { // keine (passende) Session 
     46                        if ($debug > 1) {echo "\n<p class='dbg'>Session nicht gesetzt</p>";} 
     47                } elseif ( !isset($_SESSION["mb_user_name"]) )  { 
     48                        if ($debug > 1) {echo "\n<p class='dbg'>username nicht gesetzt</p>";} 
     49                } else { 
     50                        $customer = $_SESSION["mb_user_name"]; // angemeldeter Benutzer  
     51                } 
     52                //if ($debug > 1) {echo "\n<p class='dbg'>Customer '".$customer."'</p>";} 
     53                if ($customer == "") {  // Wer bin ich? 
     54                        echo "<p class='stop2'>Aufruf nur aus Mapbender erlaubt.</p>"; 
     55                        return 0; 
     56                } elseif ($customer == $mb_guest_user) { // in conf festgelegt 
     57                        echo "<p class='stop2'>Eine Anmeldung im Mapbender ist notwendig.</p>"; 
     58                        return 0;       // gast-User darf nix 
     59                } else { 
     60                        return 1;       // echter User, ist erlaubt 
     61                } 
     62 
     63        } elseif ($auth === "qwc2") { 
     64 
     65                if ($debug > 1) {echo "\n<p class='dbg'>Berechtigungs-PrÃŒfung QWC2 -GEPLANT-</p>";} 
     66 
     67                // BAUSTELLE: Hier den Code einfÃŒgen um im QWC2 die Berechtigung zu prÃŒfen und den Benutzer auszulesen. 
     68                // Guggs du: https://git.sourcepole.ch/krz_dt/qwc2/-/issues/78 
     69 
     70                $customer = "(Unbekannt)"; 
     71                echo "<p class='stop2'>Berechtigungspr&uuml;fung fÃŒr QWC2 ist noch nicht m&ouml;glich.</p>"; 
     72                return 1;       // vorlÀufig erlaubt 
     73 
     74        } else { 
     75 
     76                echo "\n<p class='stop2'>Die Berechtigungs-PrÃŒfung ist falsch konfiguriert</p>"; 
     77                return 0;       // verboten 
     78        } 
     79} 
    2480 
    2581function footer($gmlid, $link, $append) { 
     
    2884        // Den URL-Parameter "&showkey=j/n" umschalten lassen. 
    2985        // $append wird angehaengt wenn gefuellt. Anwendung: &eig=j bei FS-NW, &ltyp=m/p/o bei Lage 
    30         global $gkz, $showkey, $hilfeurl, $auth, $debug; 
    31  
    32         // S c r e e n - Foot 
     86        global $gkz, $showkey, $hilfeurl, $debug, $customer; 
     87 
     88        echo "<footer>"; 
     89        // S c r e e n - F o o t 
    3390        echo "\n<div class='confbereich noprint'>" 
    3491        ."\n\t<table class='outer'>\n\t<tr>"; 
    3592 
    3693        // Spalte 1: Info Benutzerkennung 
    37         if ($auth == "mapbender") { 
    38                 $customer=$_SESSION["mb_user_name"]; 
     94        if (isset($customer)) { // ÃŒber global von fkt. darf_ich() 
    3995                echo "\n\t\t<td title='Info'><i>Benutzer:&nbsp;".$customer."</i></td>"; 
    4096        } else { 
     
    50106                        echo $mylink."&amp;showkey=j' title='Verschl&uuml;sselungen anzeigen'>Schl&uuml;ssel ein</a>"; 
    51107                } 
    52                 // TemporÀr eine Ansicht ohne Entwicklungsumgebung 
    53                 if ($debug > 0) { 
    54                         echo "&nbsp;|&nbsp;".$mylink."&amp;nodebug=j' title='Debug-Ausgaben tempor&auml;r abschalten'>Ansicht ohne Testausgaben</a>"; 
     108                if ($debug > 0) { // FÃŒr Entwickler temporÀr eine Ansicht OHNE debug 
     109                        echo "<br>".$mylink."&amp;nodebug=j' title='Debug-Ausgaben tempor&auml;r abschalten'>Ansicht ohne Testausgaben</a>"; 
    55110                } 
    56111        echo "\n\t\t</td>"; 
     
    62117        ."\n</div>\n"; 
    63118 
    64         // P r i n t - Foot 
    65         if ($auth == "mapbender") { 
    66         //      $customer=$_SESSION["mb_user_name"]; 
    67                 echo "\n<p class='onlyprint'><i>Mapbender-Benutzer:&nbsp;".$customer."</i></p>"; 
    68         } 
     119        // P r i n t - F o o t 
     120        if (isset($customer)) { 
     121                echo "\n<p class='onlyprint'><i>Benutzer:&nbsp;".$customer."</i></p>"; 
     122        } 
     123 
     124        echo "</footer>"; 
    69125        return 0; 
    70126} 
     
    110166        if (!$resbs) { 
    111167                echo "\n<p class='err'>Fehler bei 'Buchungsstelle ausgeben'.</p>"; 
    112                 if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities($sqlbs, ENT_QUOTES, "UTF-8")."<br>$1 = gml_id = '".$gmlbs."'</p>";} 
    113         } 
    114         $gezeigt=false; // Funktionswert 
     168                if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities(str_replace("$1", "'".$gmlbs."'", $sqlbs), ENT_QUOTES, "UTF-8")."</p>";} 
     169        } 
     170        $gezeigt = 0; // Funktionswert default 
     171 
    115172        if ($rowbs = pg_fetch_assoc($resbs)) { // ein Treffer 
    116173                $blattkeyber=$rowbs["blattart"]; // Schluessel von Blatt-Art des GB 
    117174                if ($blattkeyber != '5000' or $debug > 1) { // "Fiktives Blatt" nur bei Entwicklung anzeigen 
    118                         $gezeigt=true; // Funktionswert 
     175                        $gezeigt = 1; // Funktionswert nach Treffer 
    119176                        $hgml=$rowbs["hgml"]; // GML-ID der (herrschenden) BuchungsStelle 
    120177                        $bartkey=$rowbs["buchungsart"]; // Buchungsart SchlÃŒssel 
     
    137194                                        switch ($barttyp) { // Text der Überschrift 
    138195                                                case "E": 
    139                                                         if ($eig == 'j') {$h3txt = "Buchung und Eigentum";}  
     196                                                        if ($eig === 'j') {$h3txt = "Buchung und Eigentum";}  
    140197                                                        else {$h3txt = "Buchung";} 
    141198                                                break; 
    142199                                                case "R": $h3txt = "Grundst&uuml;cksgleiche Rechte"; break; 
    143200                                        } 
    144                                         if ($barttypgrp == "" and $gml_fs != "") { // die erste Überschrift mit ID und Umschalter 
     201                                        if ($barttypgrp === "" and $gml_fs != "") { // die erste Überschrift mit ID und Umschalter 
    145202                                                echo "\n\t<tr>\n\t\t<td colspan='3'>\n\t\t\t<h3 id='gb'>".$h3txt."</h3>\n\t\t</td>"; // 1-3 
    146203                                                echo "\n\t\t<td>\n\t\t\t<p class='nwlink noprint'>" // 4 
    147                                                         ."\n\t\t\t\t<a href='".$_SERVER['PHP_SELF']. "?gkz=".$gkz."&amp;gmlid=".$gml_fs; 
     204                                                        ."\n\t\t\t\t<a href='".selbstverlinkung()."?gkz=".$gkz."&amp;gmlid=".$gml_fs; 
    148205                                                        if ($showkey) {echo "&amp;showkey=j";} 
    149206                                                        if ($eig=="j") { // Umschalter: FS-Nachweis ruft sich selbst mit geaendertem Parameter auf. Positionierung auf Marke "#gb" 
     
    192249                                        ."\n\t\t\t</tr>"; 
    193250 
    194                                         if ($trtyp == 3) { // Treffer-Grundst. einfÀrben 
     251                                        if ($trtyp === 3) { // Treffer-Grundst. einfÀrben 
    195252                                                echo "\n\t\t\t<tr class='paa'>"; 
    196253                                        } else { 
     
    205262                                        ."\n\t\t\t</table>"; 
    206263 
    207                                         if ($rowbs["zaehler"] <> "") { 
     264                                        if ($rowbs["zaehler"] != "") { 
    208265                                                echo "\n\t\t\t<p class='ant'>".$rowbs["zaehler"]."/".$rowbs["nenner"]."&nbsp;Anteil am Flurst&uuml;ck</p>"; 
    209266                                        } 
     
    227284                                                ."</a>"; 
    228285                                        // Buchung 
    229                                                 if ($trtyp == 1) { 
     286                                                if ($trtyp === 1) { 
    230287                                                        echo "<br>"; 
    231288                                                        if ($showkey) {echo "<span class='key'>".$bartkey."</span> ";} 
     
    240297                                ."\n\t\t</td>" // 4 
    241298                        ."\n\t</tr>"; 
    242                         if ($eig == "j") { 
     299                        if ($eig === "j") { 
    243300                                if ($jsfenster) {$lnkclass = "imFenster";} else {$lnkclass = "";}  
    244301                                $n = eigentuemer($gbgml, true, $lnkclass); // mit Adresse 
     
    247304        } 
    248305        pg_free_result($resbs); 
    249         return $gezeigt; // true wenn eine Buchung ausgegeben wurde 
     306         
     307        //if ($debug > 1) {echo "\n<p class='dbg'>Ende function buchung_anzg(), Return = ". $gezeigt ."</p>";} 
     308         
     309        return $gezeigt; // 1 wenn eine Buchung ausgegeben wurde 
    250310} 
    251311 
     
    272332        if (!$resber) { 
    273333                echo "\n<p class='err'>Fehler bei 'berechtigte Buchungsstellen'.</p>"; 
    274                 if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = gml_id = '".$gmls."'</p>";} 
     334                if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities(str_replace("$1", "'".$gmls."'", $sql), ENT_QUOTES, "UTF-8")."</p>";} 
    275335        } 
    276336        $an=0; 
     
    279339                $hgml=$rowan["hgml"]; // GML-ID der berechtigten Buchungs-Stelle 
    280340 
    281                 if ($hgml == $gsanfrd) { 
     341                if ($hgml === $gsanfrd) { 
    282342                        $trtyp=3; // einfÀrben, o. Lnk. 
    283343                } else { 
     
    322382        ."FROM ax_flurstueck f LEFT JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer " 
    323383        ."WHERE f.endet IS NULL AND g.endet IS NULL AND f.istgebucht = $1 "; 
    324         if ($filtgem == '' ) { // ungefiltert 
     384        if ($filtgem === '') { // ungefiltert 
    325385                $v=array($gml_bs); 
    326386        } else { 
     
    338398                $bvnr=""; 
    339399        } 
    340         $altbvnr=""; // ++ besser mit "$j == 0" steuern? 
     400        $altbvnr=""; // ++ besser mit "$j === 0" steuern? 
    341401        $j=0; 
    342402        while($rowf = pg_fetch_assoc($resf)) { 
     
    350410                echo "\n<tr class='".$trclass."'>"; // eine Zeile je Flurstueck 
    351411                        // Sp. 1-3 der Tab. aus Buchungsstelle, nicht aus FS 
    352                         if($bvnr == $altbvnr) { // gleiches Grundstueck, leer lassen 
     412                        if($bvnr === $altbvnr) { // gleiches Grundstueck, leer lassen 
    353413                                echo "\n\t<td>&nbsp;</td>" 
    354414                                ."\n\t<td>&nbsp;</td>" 
     
    377437                        echo "\n\t<td>\n\t\t<p class='nwlink noprint'>"; 
    378438                //      if($bvnr != $altbvnr) { 
    379                         if($j == 0) { 
     439                        if($j === 0) { 
    380440                                echo "\n\t\t\t<a href='alkisgsnw.php?gkz=".$gkz."&amp;gmlid=".$gml_bs; 
    381441                                        if ($showkey) {echo "&amp;showkey=j";} 
     
    394454                $altbvnr=$bvnr; 
    395455                $j++; 
    396         } // Ende Loop Flurstueck 
     456        } 
    397457        pg_free_result($resf); 
    398458        return $j; 
     
    433493        if (!$resn) { 
    434494                echo "\n<p class='err'>Fehler bei Eigent&uuml;mer</p>"; // kein Fehler bei Blattarten > 1000 
    435                 //if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".$sqln."<br>$1=gml= '".$gmlid."'</p>";} 
     495                //if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".str_replace("$1", "'".$gmlid."'", $sqln )."</p>";} 
    436496        } 
    437497 
     
    442502                $rechtsg=$rown["adr"]; 
    443503                echo "\n\t<tr>"; 
    444                         if($n == 0) { // erste EigentÃŒmer-Zeile zu einer Buchung 
     504                        if($n === 0) { // erste EigentÃŒmer-Zeile zu einer Buchung 
    445505                                echo "\n\t\t<td class='ll'><img src='ico/Eigentuemer_2.png' width='16' height='16' alt=''> Eigent&uuml;mer:</td>"; // 1 
    446506                        } else { // Folgezeile 
     
    477537                if (!$resp) { 
    478538                        echo "\n\t<p class='err'>Fehler bei Person</p>"; 
    479                         if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".$sqlp."<br>$1=gml= '".$gmlpers."'</p>";} 
     539                        if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".str_replace("$1", "'".$gmlpers."'", $sqlp)."</p>";} 
    480540                } 
    481541 
     
    483543                while($rowp = pg_fetch_assoc($resp)) { // Schleife weglassen: "benennt" ist KEIN Array! 
    484544                        $diePerson=""; //++ Anrede? 
    485                         if ($rowp["akademischergrad"] <> "") {$diePerson=$rowp["akademischergrad"]." ";} 
     545                        if ($rowp["akademischergrad"] != "") {$diePerson=$rowp["akademischergrad"]." ";} 
    486546                        $diePerson.=$rowp["nachnameoderfirma"]; 
    487                         if ($rowp["vorname"] <> "") {$diePerson.=", ".$rowp["vorname"];} 
    488                         if ($rowp["namensbestandteil"] <> "") {$diePerson.=". ".$rowp["namensbestandteil"];} 
    489                         if ($rowp["geburtsdatum"] <> "") {$diePerson.=", geb. ".$rowp["geburtsdatum"];} 
    490                         if ($rowp["geburtsname"] <> "") {$diePerson.=", geb. ".$rowp["geburtsname"];} 
     547                        if ($rowp["vorname"] != "") {$diePerson.=", ".$rowp["vorname"];} 
     548                        if ($rowp["namensbestandteil"] != "") {$diePerson.=". ".$rowp["namensbestandteil"];} 
     549                        if ($rowp["geburtsdatum"] != "") {$diePerson.=", geb. ".$rowp["geburtsdatum"];} 
     550                        if ($rowp["geburtsname"] != "") {$diePerson.=", geb. ".$rowp["geburtsname"];} 
    491551                        $diePerson=htmlentities($diePerson, ENT_QUOTES, "UTF-8"); // Umlaute 
    492552                        $eiartkey=$rown["eigentuemerart"]; // Key 
     
    498558                                echo "\n\t\t\t\t<a href='".$lnkvor."alkisnamstruk.php?gkz=".$gkz."&amp;gmlid=".$gmlpers; 
    499559                                if ($showkey) {echo "&amp;showkey=j";} 
    500                                 if ($eiartkey == "") {$eiart="Eigent&uuml;mer" ;} // Default. Ersatz-Text, wenn nicht gefÃŒllt 
     560                                if ($eiartkey === "") {$eiart="Eigent&uuml;mer" ;} // Default. Ersatz-Text, wenn nicht gefÃŒllt 
    501561                                echo $lnknach."' title='vollst&auml;ndiger Name und Adresse eines Eigent&uuml;mers'>".$eiart 
    502562                                ." <img src='ico/Eigentuemer.png' width='16' height='16' alt=''></a>\n\t\t\t</p>" 
     
    513573                                if (!$resa) { 
    514574                                        echo "\n\t<p class='err'>Fehler bei Adressen</p>"; 
    515                                         if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".$sqla."<br>$1=gml= '".$gmlpers."'</p>";} 
     575                                        if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".str_replace("$1", "'".$gmlpers."'", $sqla)."</p>";} 
    516576                                } 
    517577                                $j=0; 
    518578                                while($rowa = pg_fetch_assoc($resa)) { 
    519579                                        $j++; 
    520                                         if ($j == 1) { // erste ("jÃŒngste") Adresse anzeigen 
     580                                        if ($j === 1) { // erste ("jÃŒngste") Adresse anzeigen 
    521581                                                $gmla=$rowa["gml_id"]; 
    522582                                                $plz=$rowa["plz"]; // integer 
    523                                                 if($plz == 0) { 
     583                                                if($plz === 0) { 
    524584                                                        $plz=""; 
    525585                                                } else { 
     
    567627                pg_free_result($resp); 
    568628 
    569                 if ($i == 0) { // KEINE Person. benennt ist leer. Das kommt vor hinter der Zeile "Erbengemeinschaft" und ist dann KEIN Fehler 
    570                         if ($rechtsg == 9999) { 
     629                if ($i === 0) { // KEINE Person. benennt ist leer. Das kommt vor hinter der Zeile "Erbengemeinschaft" und ist dann KEIN Fehler 
     630                        if ($rechtsg === 9999) { 
    571631                                if ($debug > 1) {echo "\n\t\t\t<p class='dbg'>Rechtsgemeinschaft = '".$rechtsg."'</p>";} 
    572632                        } else { 
     
    580640        pg_free_result($resn); 
    581641        return $n;  
    582 } // End function eigentuemer 
    583  
    584 function werteliste ($element, $bezeichnung ,$sqlin) { 
     642} 
     643 
     644function werteliste ($bez ,$sqlin) { 
    585645        // Eine oder mehrere EntschlÃŒsselungen in eine Zeile ausgeben. 
    586         // Dient dazu, SchlÃŒssel-ARRAYs auflösen ohne die Zeile mehrfach aufzulisten (JOIN) 
    587         // Anwendung: FS-Nachweis BodenschÀtzung "Klimastufe + WasserverhÀltnisse" 
    588         // 2018-11-09: Umstellung von "alkis_wertearten" auf individuelle Tabellen 
    589  
     646        // Dient dazu, SchlÃŒssel-ARRAYs auflösen ohne die Zeile im JOIN mehrfach aufzulisten 
     647        // Anwendung: FS-Nachweis BodenschÀtzung 
    590648        global $debug; 
    591         if ($element == 'ax_bodenschaetzung' AND $bezeichnung = 'entstehungsartoderklimastufewasserverhaeltnisse' ) { 
    592                 $tabelle = 'ax_entstehungsartoderklimastufewasserverhaeltnisse_bodensc'; 
    593         } elseif ($element == 'ax_bodenschaetzung' AND $bezeichnung = 'sonstigeangaben' ) { 
    594                 $tabelle = 'ax_sonstigeangaben_bodenschaetzung'; 
    595         } 
     649 
     650        if ($bez === 'e') {$tabelle = 'ax_entstehungsartoderklimastufewasserverhaeltnisse_bodensc';}  
     651        elseif ($bez === 's') {$tabelle = 'ax_sonstigeangaben_bodenschaetzung';} 
     652 
    596653        $sql="SELECT wert, beschreibung FROM ".$tabelle." WHERE wert IN (".$sqlin.") ORDER BY wert LIMIT $1 ;"; 
    597         $v = array(100); 
     654        $v = array('9'); 
    598655        $res = pg_prepare("", $sql); 
    599656        $res = pg_execute("", $v); 
    600657        if (!$res) { 
    601658                echo "\n<p class='err'>Fehler bei Werteliste.</p>"; 
    602                 if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = '".$sqlin."'</p>";} 
     659                if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."</p>";} 
    603660                return; 
    604661        } 
     
    609666        } 
    610667        pg_free_result($res); 
    611         if ($i == 0) {echo "(kein Treffer)";} 
     668        if ($i === 0) { 
     669                echo "(kein Treffer)"; 
     670                if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."</p>";} 
     671        } 
    612672        return; 
    613673} 
     
    669729        $arr=explode("-", $fskennz, 4); // zerlegen 
    670730        $zgemkg=trim($arr[0]); 
    671         if (strlen($zgemkg) == 20 and !isset($arr[1])) { 
     731        if (strlen($zgemkg) === 20 and !isset($arr[1])) { 
    672732                $fskzdb=$zgemkg; // ist schon Datenbank-Feldformat 
    673733        } else { // Das Kennzeichen auseinander nehmen.  
    674                 if (strlen($zgemkg) == 6) { 
     734                if (strlen($zgemkg) === 6) { 
    675735                        $land=substr($zgemkg, 0, 2); 
    676736                        $zgemkg=substr($zgemkg, 2, 4); 
     
    687747                        $znenner=""; 
    688748                } 
    689                 if (trim($znenner, " 0.") == "") { // kein Bruch oder nur Nullen 
     749                if (trim($znenner, " 0.") === "") { // kein Bruch oder nur Nullen 
    690750                        $znenner="____"; // in DB-Spalte mit Tiefstrich aufgefÃŒllt 
    691751                } else { 
  • trunk/info/info/alkisn/alkisfshist.php

    r419 r422  
    66        Version: 
    77        2016-02-24 Version fuer norGIS-ALKIS-Import 
    8         2016-11-29 HTML5, Gemeinsam genutzte Datenbanken ermöglichen (Filter Gemeinde) 
    9         2017-06-06 Validierung Eingabeparameter, Feinkorrekturen 
    10         2017-10-09 Sauber filtern auf NOT endet IS NULL 
    11         2017-10-17 Deutsches Datumsformat fÃŒr Zeitpunkt der Entstehung 
    12         2018-03-16 NULL-Werte in gemeinde und kreis in ax_historischesflurstueck berÃŒcksichtigen 
    13         2018-04-23 &nodebug 
    14         2018-11-19 Full-Schema: EntschlÃŒsseln "zeigtaufexternes_art" mit function fortfuehrungen(). Tab. "ax_historischesflurstueck" hat kein "vorgaengerflurstueckskennzeichen" mehr. 
    15         2018-12-18 function fskenn_dbformat 
     8        .... 
     9        2020-02-20 Authentifizierung ausgelegert in Function darf_ich() 
     10        2020-12-03 function selbstverlinkung() statt $_SERVER['PHP_SELF'] 
     11        2020-12-15 Input-Validation und Strict Comparisation (===) 
    1612*/ 
    1713 
     
    4036                $arr = explode(",",$stri); 
    4137                foreach($arr AS $val){ 
    42                         echo "Flurst&uuml;ck <a title=' zur Flurst&uuml;ck Historie' href='".$_SERVER['PHP_SELF']."?gkz=".$gkz."&amp;fskennz=".$val; 
     38                        echo "Flurst&uuml;ck <a title=' zur Flurst&uuml;ck Historie' href='".selbstverlinkung()."?gkz=".$gkz."&amp;fskennz=".$val; 
    4339                        if ($showkey)   {echo "&amp;showkey=j";} 
    4440                        echo "'>".fzerleg($val)."</a><br>"; 
     
    6157                $zgmk++; 
    6258        } 
    63         if ($zgmk == 0) { 
     59        if ($zgmk === 0) { 
    6460                echo "\n<p class='err'>Gemarkung ".$gkey." ist unbekannt.</p>"; 
    6561                return; 
     
    8379        if (!$resv) { 
    8480                echo "\n<p class='err'>Fehler bei Vorg&auml;nger-FS.</p>"; 
    85                 if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".$sqlv."<br>$1='".$fsk."'</p>";} 
     81                if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".str_replace("$1", "'".$fsk."'", $sqlv)."</p>";} 
    8682        } 
    8783        $zv=0; 
     
    9086                $gmlv=$rowv["gml_id"]; 
    9187                $vfsk=$rowv["flurstueckskennzeichen"]; 
    92                 echo "Flurst&uuml;ck <a title='Historie des Vorg&auml;ngerflurst&uuml;cks' href='".$_SERVER['PHP_SELF']."?gkz=".$gkz."&amp;fskennz=".$vfsk."&amp;gmlid=".$gmlv; 
     88                echo "Flurst&uuml;ck <a title='Historie des Vorg&auml;ngerflurst&uuml;cks' href='".selbstverlinkung()."?gkz=".$gkz."&amp;fskennz=".$vfsk."&amp;gmlid=".$gmlv; 
    9389                        if ($showkey) {echo "&amp;showkey=j";} 
    9490                echo "'>".fzerleg($vfsk)."</a><br>"; 
    9591                $zv++; 
    9692        } 
    97         if ($zv == 0) { 
     93        if ($zv === 0) { 
    9894                echo "(keine)"; 
    9995        } 
     
    10197} 
    10298 
     99ini_set("session.cookie_httponly", 1); 
    103100session_start(); 
    104101$showkey="n"; $nodebug=""; // Var. aus Parameter initalisieren 
     
    115112        } else { 
    116113                $fskennz=''; 
    117         } 
    118 } 
    119 if (!isset($gkz) or !preg_match('#^[0-9]{3}$#', $gkz)) {die("Eingabefehler gkz");} 
     114                die("Fehlender Parameter"); 
     115        } 
     116} 
     117if (isset($gkz)) { 
     118        if (!preg_match('#^[0-9]{3}$#', $gkz)) {die("Eingabefehler gkz");} 
     119} else { 
     120        die("Fehlender Parameter"); 
     121} 
    120122if (!preg_match('#^[j|n]{0,1}$#', $showkey)) {die ("Eingabefehler showkey");} 
    121 if ($showkey == "j") {$showkey=true;} else {$showkey=false;} // "j"/"n" als boolean umwandeln, ist praktischer abzufragen, wird oft gebraucht 
     123if ($showkey === "j") {$showkey=true;} else {$showkey=false;} // "j"/"n" als boolean umwandeln, ist praktischer abzufragen, wird oft gebraucht 
    122124if (!preg_match('#^j{0,1}$#', $nodebug)) {die("Eingabefehler nodebug");} 
    123125 
    124 require_once("alkis_conf_location.php"); 
    125 if ($auth == "mapbender") {require_once($mapbender);} 
    126 include("alkisfkt.php"); 
     126include "alkis_conf_location.php"; 
     127include "alkisfkt.php"; 
     128 
    127129echo <<<END 
    128130<!doctype html> 
     
    137139<body> 
    138140END; 
     141 
     142$erlaubnis = darf_ich(); if ($erlaubnis === 0) { die('<p class="stop1">Abbruch</p></body>'); } 
     143 
    139144// Mit URL-Parameter "&nodebug=j" kann man die Entwicklungsumgebung (in Conf definiert) ausschalten. 
    140145// Manuell an die URL anfÃŒgen, wirkt nur temporÀr und wird nicht in Links weiter gereicht. 
    141 if ($nodebug == "j") {$debug=0;}  
     146if ($nodebug === "j") {$debug=0;}  
    142147 
    143148$con = pg_connect($dbconn." options='--application_name=ALKIS-Auskunft_alkisfshist.php'"); 
     
    157162} else { // Pfui! 
    158163                $parmtyp=""; 
    159                 die("<p class='err'>Parameter 'gmlid' oder 'fskennz' fehlt.</p>"); // Weitermachen sinnlos 
     164                die("Fehlender Parameter"); // bereits geprÃŒft 
    160165} 
    161166 
     
    164169        $felder="gml_id, flurnummer, cast(zaehler AS character varying), cast(nenner AS character varying), flurstueckskennzeichen, amtlicheflaeche, to_char(cast(zeitpunktderentstehung AS date),'DD.MM.YYYY') AS zeitpunktderentstehung, gemarkungsnummer, "; 
    165170 
    166         if ($filtgem == '') { // Filter Gemeinde ? 
     171        if ($filtgem === '') { // Filter Gemeinde ? 
    167172                $wheref=''; 
    168173                $whereh=''; 
     
    224229                        echo "<br><p class='err'>Fehler! Kein Treffer f&uuml;r ".$parmtyp." = '".$parmval."'</p><br>"; 
    225230                        if ($debug > 2) { 
    226                                 echo "<p class='dbg'>SQL=<br>".$sqlu."<br>$1=".$parmtyp." = '".$parmval."'</p>"; 
     231                                echo "<p class='dbg'>SQL=<br>".str_replace("$1", "'".$v[0]."'", $sqlu)."</p>"; 
    227232                        } 
    228233                } 
     
    231236 
    232237// Balken 
    233 echo "<p class='fshis'>ALKIS Flurst&uuml;ck ".$gmkgnr."-".$flurnummer."-".$flstnummer."&nbsp;</p>"; 
     238echo "<p class='balken fshis'>ALKIS Flurst&uuml;ck ".$gmkgnr."-".$flurnummer."-".$flstnummer."&nbsp;</p>"; 
    234239echo "\n<h2>Flurst&uuml;ck Historie</h2>"; 
    235240 
     
    249254echo "\n\t</td>\n</tr>\n</table>"; 
    250255 
    251 if ($ftyp == "a") { // Aktuell -> Historie 
     256if ($ftyp === "a") { // Aktuell -> Historie 
    252257        echo "\n<p class='nwlink noprint'>weitere Auskunft: " 
    253258                ."<a href='alkisfsnw.php?gkz=".$gkz."&amp;gmlid=".$gmlid."&amp;eig=n"; 
     
    308313</div> 
    309314 
    310 <?php footer($gmlid, $_SERVER['PHP_SELF']."?", ""); ?> 
     315<?php footer($gmlid, selbstverlinkung()."?", ""); ?> 
    311316 
    312317</body> 
  • trunk/info/info/alkisn/alkisfsnw.php

    r419 r422  
    77        Version: 
    88        2016-02-24 Version fuer norGIS-ALKIS-Import 
    9         2016-03-14 Korrekturen 
    10         2016-12-01 HTML5, Gemeinsam genutzte Datenbanken ermöglichen 
    11         2016-12-05 Nutzungsart-Kategorie ist nun in Text enthalten, nicht mehr aus der Definition ausschneiden 
    12         2017-06-08 optional "berechtigte Buchungen" anzeigen, Function "eigentuemer" ohne Parameter $con, 
    13                                 Validierung Eingabeparameter, Feinkorrekturen 
    14         2017-10-11 Sauber filtern auf 'endet IS NULL', Ausgabe der BodenschÀtzung 
    15         2017-10-11 Nachbesserung Formatierung der SchÀtzungs-Zeilen 
    16         2017-10-17 Zeitpunkt der Entstehung in deutschen Datumsformat 
    17         2017-11-03 Wertelisten fÃŒr Arrays in BodenschÀtzung ausgeben. 
    18         2017-12-08 Planung (Kommentare) der Erweiterung fÃŒr Berechtigte GrundbÃŒcher 
    19         2017-12-20 Links auf Lagebezeichnung verbessert. 
    20         2018-04-11 Variable "gmlid" an Function "ALKISexport" ÃŒbergeben. Ist beim Schreiben des Headers noch unbekannt, wenn mit "&fskennz=" aufgerufen. 
    21         2018-04-23 Umfangreiche Überarbeitung der "Buchungsstellen" 
    22         2018-05-03 Anpassung fÃŒr GrundstÃŒcksnachweis 
    23         2018-11-09 Umstellung Full-Schema 
    24         2018-11-19 EntschlÃŒsseln "zeigtaufexternes_art" mit function fortfuehrungen(). 
    25         2018-12-18 function fskenn_dbformat 
    26  
    27 ++ToDo: 
     9        ..... 
     10        2020-02-20 Authentifizierung ausgelagert in Function darf_ich() 
     11        2020-10-13 debug-infos raus 
     12        2020-12-03 function selbstverlinkung() statt $_SERVER['PHP_SELF'] 
     13        2020-12-09 Verschn. mit "Bau-, Raum- oder Bodenordnungsrecht" korrigiert, Entschl. BodenschÀtzung korrigiert 
     14        2020-12-16 Input-Validation und Strict Comparisation (===) 
     15        2021-03-09 Link zum GebÀudenachweis auch mit "Bauwerke" betiteln 
     16 
     17ToDo: 
    2818        - Buchung auf "fiktives Blatt" ist nur mit debug zu sehen: die <tr> in .css grau hinterlegen 
    29         - Umschalter (gleiches Modul) anders darstellen als Links zu anderen Nachweisen 
     19        - "Umschalter" (gleiches Modul) anders darstellen als Links zu ANDEREN Nachweisen 
    3020        - Parameter zum Umschalten mit/ohne BodenschÀtzung? 
    3121        - Bessere Differenzierung bei den Nutzungsarten (Tabelle dafÃŒr aufbauen)  
    3222*/ 
     23ini_set("session.cookie_httponly", 1); 
    3324session_start(); 
     25 
    3426$eig="n"; $showkey="n"; $nodebug=""; // Var. initalisieren 
    3527$cntget = extract($_GET); // alle Parameter in Variable umwandeln 
     
    4133} else { // Alternativ 
    4234        $gmlid=''; 
    43         if (isset($fskennz)) { // llgggg-fff-11111/222 oder z.B.'052647002001910013__' oder '05264700200012______' 
     35        if (isset($fskennz)) { 
    4436                if (!preg_match('#^[0-9\-_/]{8,20}$#', $fskennz)) {die ("Eingabefehler fskennz");} 
    4537        } else { 
    46                 $fskennz=''; 
    47         } 
    48 } 
    49 if (!isset($gkz) or !preg_match('#^[0-9]{3}$#', $gkz)) {die("Eingabefehler gkz");} 
     38                die("Fehlender Parameter"); 
     39        } 
     40} 
     41if (isset($gkz)) { 
     42        if (!preg_match('#^[0-9]{3}$#', $gkz)) {die("Eingabefehler gkz");} 
     43} else { 
     44        die("Fehlender Parameter"); 
     45} 
    5046if (!preg_match('#^[j|n]{0,1}$#', $eig)) {die("Eingabefehler eig");} 
    5147if (!preg_match('#^[j|n]{0,1}$#', $showkey)) {die ("Eingabefehler showkey");} 
    52 if ($showkey == "j") {$showkey=true;} else {$showkey=false;} // "j"/"n" als boolean umwandeln, ist praktischer abzufragen, wird oft gebraucht 
     48if ($showkey === "j") {$showkey=true;} else {$showkey=false;} // "j"/"n" als bool, ist praktischer, oft gebraucht 
    5349if (!preg_match('#^j{0,1}$#', $nodebug)) {die("Eingabefehler nodebug");} 
    5450 
    55 require_once("alkis_conf_location.php"); 
    56 if ($auth == "mapbender") {require_once($mapbender);} 
    57 include("alkisfkt.php"); 
     51include "alkis_conf_location.php"; 
     52include "alkisfkt.php"; 
    5853?> 
    5954<!doctype html> 
     
    7368<body> 
    7469<?php 
     70$erlaubnis = darf_ich(); if ($erlaubnis === 0) { die('<p class="stop1">Abbruch</p></body>'); } 
     71 
    7572// Mit URL-Parameter "&nodebug=j" kann man die Entwicklungsumgebung (in Conf definiert) ausschalten. Blendet z.B. "fiktives Blatt" aus. 
    7673// Manuell an die URL anfÃŒgen, wirkt nur temporÀr und wird nicht in Links weiter gereicht. 
    77 if ($nodebug == "j") {$debug=0;}  
     74if ($nodebug === "j") {$debug=0;}  
    7875 
    7976$con = pg_connect($dbconn." options='--application_name=ALKIS-Auskunft_alkisfsnw.php'"); 
    8077if (!$con) echo "\n<p class='err'>Fehler beim Verbinden der DB</p>"; 
    8178 
    82 // Ein FlurstÃŒcks-Kennzeichen wurde alternativ zur gml_id ÃŒbermittelt 
     79// Ein FlurstÃŒcks-Kennzeichen im DB-Format wurde alternativ zur gml_id ÃŒbermittelt 
    8380if ($fskennz != '') { 
    84 /* 
    85         $arr=explode("-", $fskennz, 4); // zerlegen 
    86         $zgemkg=trim($arr[0]); 
    87         if (strlen($zgemkg) == 20 and !isset($arr[1])) { 
    88                 $fskzdb=$zgemkg; // Datenbank-Feldformat 
    89         } else { // Format "llgggg-fff-nnnn/zz.nn" oder "gggg-ff-nnn/zz" 
    90                 // Das Kennzeichen auseinander nehmen.  
    91                 if (strlen($zgemkg) == 6) { 
    92                         $land=substr($zgemkg, 0, 2); 
    93                         $zgemkg=substr($zgemkg, 2, 4); 
    94                 } else { // kein schöner Land .. 
    95                         $land=$defland; // Default-Land aus config 
    96                 } 
    97                 $zflur=str_pad($arr[1], 3 , "0", STR_PAD_LEFT); // Flur-Nr 
    98                 $zfsnr=trim($arr[2]); // FlurstÃŒcke-Nr 
    99                 $zn=explode("/", $zfsnr, 2); // Bruch? 
    100                 $zzaehler=str_pad(trim($zn[0]), 5 , "0", STR_PAD_LEFT); 
    101                 if (isset($zn[1])) { 
    102                         $znenner=trim($zn[1]); 
    103                 } else { 
    104                         $znenner=""; 
    105                 } 
    106                 if (trim($znenner, " 0.") == "") { // kein Bruch oder nur Nullen 
    107                         $znenner="____"; // in DB-Spalte mit Tiefstrich aufgefÃŒllt 
    108                 } else { 
    109                         $zn=explode(".", $znenner, 2); // .00 wegwerfen 
    110                         $znenner=str_pad($zn[0], 4 , "0", STR_PAD_LEFT); 
    111                 } 
    112                 // nun die Teile stellengerecht wieder zusammen setzen           
    113                 $fskzdb=$land.$zgemkg.$zflur.$zzaehler.$znenner.'__'; // FS-Kennz. Format Datenbank 
    114         } 
    115         $v = array($fskzdb); 
    116 */ 
    117         // Spalte "flurstueckskennzeichen" ist in DB indiziert 
    118         // Format z.B.'052647002001910013__' oder '05264700200012______' 
    119         $sql ="SELECT gml_id FROM ax_flurstueck WHERE flurstueckskennzeichen= $1 AND endet IS NULL ;"; 
    120  
     81        // Spalte "flurstueckskennzeichen" ist in DB indiziert. Format z.B.'052647002001910013__' oder '05264700200012______' 
     82        $sql ="SELECT gml_id FROM ax_flurstueck WHERE flurstueckskennzeichen= $1 AND endet IS NULL;"; 
    12183        $v=array(fskenn_dbformat($fskennz)); 
    122  
    12384        $res = pg_prepare("", $sql); 
    12485        $res = pg_execute("", $v); 
     
    149110if (!$res) { 
    150111        echo "\n<p class='err'>Fehler bei Flurstuecksdaten</p>"; 
    151         if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = gml_id = '".$gmlid."'</p>";} 
     112        if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities(str_replace("$1","'".$gmlid."'",$sql), ENT_QUOTES, "UTF-8")."</p>";} 
    152113} 
    153114if ($row = pg_fetch_assoc($res)) { 
     
    176137} else { 
    177138        echo "\n<p class='err'>Fehler! Kein Treffer f&uuml;r Flurst&uuml;ck mit gml_id=".$gmlid."</p>"; 
    178         if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = gml_id = '".$gmlid."'</p>";} 
     139        if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities(str_replace("$1","'".$gmlid."'",$sql), ENT_QUOTES, "UTF-8")."</p>";} 
    179140        echo "\n</body>\n</html>"; 
    180141        return; 
     
    182143pg_free_result($res); 
    183144 
    184 if ($eig=="j") { // Balken 
    185         echo "<p class='fsei'>ALKIS Flurst&uuml;ck ".$gmkgnr."-".$flurnummer."-".$flstnummer."&nbsp;</p>" 
     145if ($eig==="j") { // Balken 
     146        echo "<p class='balken fsei'>ALKIS Flurst&uuml;ck ".$gmkgnr."-".$flurnummer."-".$flstnummer."&nbsp;</p>" 
    186147        ."\n\n<h2>Flurst&uuml;ck mit Eigent&uuml;mer</h2>"; 
    187148} else { 
    188         echo "<p class='fskennz'>ALKIS Flurst&uuml;ck ".$gmkgnr."-".$flurnummer."-".$flstnummer."&nbsp;</p>" 
     149        echo "<p class='balken fskennz'>ALKIS Flurst&uuml;ck ".$gmkgnr."-".$flurnummer."-".$flstnummer."&nbsp;</p>" 
    189150        ."\n\n<h2>Flurst&uuml;ck</h2>"; 
    190151} 
     
    263224        if ($debug > 1) { 
    264225                echo "\n<p class='dbg'>Fehler:".pg_last_error()."</p>"; 
    265                 if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = gml_id = '".$gmlid."'</p>";} 
     226                if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities(str_replace("$1","'".$gmlid."'",$sql), ENT_QUOTES, "UTF-8")."</p>";} 
    266227        } 
    267228} else { 
     
    270231        while($row = pg_fetch_assoc($res)) { 
    271232                $sname=htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8"); // Str.-Name 
    272                 if (substr($sname, strlen($sname) -3, 3) == 'weg') { // Versuch fuer korrekten Satzbau 
     233                if (substr($sname, strlen($sname) -3, 3) === 'weg') { // Versuch fuer korrekten Satzbau 
    273234                        $slink=" am ".$sname; 
    274235                } else { 
     
    277238                $hsnr=$row["hausnummer"]; 
    278239                echo "\n<tr>"; 
    279                         if ($j == 0) { // 1 
     240                        if ($j === 0) { // 1 
    280241                                echo "\n\t<td class='ll'><img src='ico/Lage_mit_Haus.png' width='16' height='16' alt=''> Adresse:</td>"; 
    281242                        } else { 
     
    321282        echo "\n<p class='err'>Fehler bei Lagebezeichnung ohne Hausnummer</p>"; 
    322283        //if ($debug > 1) {echo "<p class='dbg'>Fehler:".pg_result_error($res)."</p>";} 
    323         if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = gml_id = '".$gmlid."'</p>";} 
     284        if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities(str_replace("$1", "'".$gmlid."'", $sql), ENT_QUOTES, "UTF-8")."</p>";} 
    324285} 
    325286$j=0; 
    326287while($row = pg_fetch_assoc($res)) { 
    327288        $skey=$row["lage"]; // Strassenschl. 
    328         $lgml=$row["gml_id"]; // key der Lage 
     289        $lgml=$row["gml_id"]; // Key der Lage 
    329290        $gewann = htmlentities($row["unverschluesselt"], ENT_QUOTES, "UTF-8"); 
    330         if ($gewann != "") { 
     291        if ($gewann != '') { 
    331292                echo "\n<tr>" 
    332293                        ."\n\t<td class='ll' title='unverschl&uuml;sselte Lagebezeichnung'><img src='ico/Lage_Gewanne.png' width='16' height='16' alt=''> Gewanne:</td>" // 1 
     
    341302        } elseif ($skey > 0) { 
    342303                $sname=htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8"); // Str.-Name 
    343                 if (substr($sname, strlen($sname) -3, 3) == 'weg') { // Versuch fuer korrekten Satzbau 
     304                if (substr($sname, strlen($sname) -3, 3) === 'weg') { // Versuch fuer korrekten Satzbau 
    344305                        $slink=" am ".$sname; 
    345306                } else { 
     
    392353if (!$res) { 
    393354        echo "\n<p class='err'>Fehler bei Suche tats. Nutzung</p>"; 
    394         if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = FS-Kennz = '".$fskennzalb."'</p>";} 
     355        if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities(str_replace("$1","'".$fskennzalb."'",$sql), ENT_QUOTES, "UTF-8")."'</p>";} 
    395356} 
    396357$j=0; 
     
    402363        $title=htmlentities($defi, ENT_QUOTES, "UTF-8"); // .. fÃŒr Anzeige aufbereitet 
    403364        echo "\n<tr>\n\t"; 
    404                 if ($j == 0) { // 1 
     365                if ($j === 0) { // 1 
    405366                        echo "<td class='ll' title='Abschnitt der tats&auml;chlichen Nutzung'><img src='ico/Abschnitt.png' width='16' height='16' alt=''> Nutzung:</td>"; 
    406367                } else { 
     
    444405                if ($showkey) {echo "&amp;showkey=j";} 
    445406                if ($cnt_adressen > 0) { // wenn Adresse vorgekommen ist 
    446                         echo "' title='Geb&auml;ude auf oder an dem Flurst&uuml;ck'>Geb&auml;ude "; 
     407                        echo "' title='Geb&auml;ude oder Bauwerke auf oder an dem Flurst&uuml;ck'>Geb&auml;ude/Bauw."; 
    447408                } else { // GebÀude mit Adresse gibt es NICHT, das ist klar 
    448                         echo "' title='Suche Geb&auml;ude ohne Adresse auf dem Flurst&uuml;ck oder angrenzende Geb&auml;ude'>Suche "; 
     409                        echo "' title='Suche Geb&auml;ude (ohne Adresse) oder Bauwerke auf dem Flurst&uuml;ck'>Geb&auml;ude/Bauw."; 
    449410                } 
    450411                echo "<img src='ico/Haus.png' width='16' height='16' alt=''></a>" 
     
    480441        while ($row = pg_fetch_assoc($res)) { 
    481442                $kulturartk=$row['kulturartk']; // Key  - 
    482                 $kulturartv=$row['kulturartv']; //              - Value 
    483                 // 1000="Ackerland (A)", 2000="Acker-GrÃŒnland (AGr)", 3000="GrÃŒnland (Gr)", 4000="GrÃŒnland-Acker (GrA)"               
    484                 if (substr($kulturartv, 0, 3) == 'Ack') { // A 
     443                $kulturartv=$row['kulturartv']; // - Value               
     444                if (substr($kulturartv, 0, 3) === 'Ack') { // A 
    485445                        $kbez1="Bodenzahl"; 
    486446                        $kbez2="Ackerzahl"; 
     
    494454                $ertragszahl = intval($absbuchflae * $row['ackerzahl'] / 100); 
    495455                $gesertragsmz+=$ertragszahl; 
    496         //      $absflaedis = number_format($absflae,0,",",".")." m&#178;";  // als Tool-Tip ? 
     456        //      $absflaedis = number_format($absflae,0,",",".")." m&#178;"; // als Tool-Tip ? 
    497457                $absbuchflaedis = number_format($absbuchflae,0,",",".")." m&#178;"; 
    498458                $boedenzahl=ltrim($row['bodenzahl'], '0'); 
    499459                $ackerzahl=ltrim($row['ackerzahl'], '0'); 
    500460                $jahr=$row['jahreszahl']; 
    501  
    502                 // 2x Array mit SchlÃŒsseln. PostNAS fÃŒllt es nicht, wenn als "integer[]" definiert. 
    503461                $entsteh=$row['entsteh']; 
    504462                $sonst=$row['sonstigeangaben']; 
    505                 if ($j == 0) { // 1 
     463                if ($j === 0) { // 1 
    506464                        echo "\n<tr>\n\t<td class='ll' title='Abschnitt Bodensch&auml;tzung'><img src='ico/Landwirt.png' width='16' height='16' alt=''> Bodensch&auml;tzung:</td>"; 
    507465                } else { 
    508466                        echo "\n<tr>\n\t<td>&nbsp;</td>"; 
    509467                } 
    510                 echo "\n\t<td class='fla' title='Ertragsmesszahl: Produkt von ".$kbez2."/100 und Fl&auml;che.'>EMZ ".$ertragszahl."</td>"; // 2 
    511                 echo "\n\t<td class='re' title='Fl&auml;che des Sch&auml;tzungsabschnitts'>".$absbuchflaedis."</td>"; // 3 
    512                 echo "\n\t<td class='lr'><span title='".$kbez1."'>".$boedenzahl."</span>/<span title='".$kbez2."'>".$ackerzahl."</span></td>"; // 4 
    513                 echo "\n\t<td class='lr'>"; // 5 
     468                echo "\n\t<td class='fla' title='Ertragsmesszahl: Produkt von ".$kbez2."/100 und Fl&auml;che.'>EMZ ".$ertragszahl."</td>" 
     469                ."\n\t<td class='re' title='Fl&auml;che des Sch&auml;tzungsabschnitts'>".$absbuchflaedis."</td>" 
     470                ."\n\t<td class='lr'><span title='".$kbez1."'>".$boedenzahl."</span>/<span title='".$kbez2."'>".$ackerzahl."</span></td>" 
     471                ."\n\t<td class='lr'>"; 
    514472 
    515473                        if ($showkey) {echo "\n\t\t<span class='key'>(".$kulturartk.")</span> ";} 
     
    521479                        echo "\n\t\t<span title='Zustandsstufe'>".$row['zustbodv']."</span> "; 
    522480 
    523                         // ARRAYs auflösen ohne den SchÀtzungs-Abschnitt mehrfach aufzulisten 
    524                         if ($entsteh <> '') { 
    525                                 $ent="'".str_replace(",", "','", trim($entsteh, "{}"))."'"; // als Liste fÃŒr SQL "WHERE IN ()" 
     481                        // 2 ARRAYs auflösen 
     482                        if (isset($entsteh)) { 
     483                                $ent=trim($entsteh, "{}"); 
    526484                                echo "\n\t\t <span title='Enststehungsart oder Klimastufe, Wasserverh&auml;ltnisse'>"; 
    527485                                        if ($showkey) {echo "\n\t\t <span class='key'>(".$ent.")</span> ";} 
    528                                         werteliste ('ax_bodenschaetzung', 'entstehungsartoderklimastufewasserverhaeltnisse', $ent); 
     486                                        werteliste ('e', $ent); 
    529487                                echo "</span>"; 
    530488                        } 
    531                         if ($sonst <> '') { 
    532                                 $son="'".str_replace(",", "','", trim($sonst, "{}"))."'"; 
     489                        if (isset($sonst)) { 
     490                                $son=trim($sonst, "{}"); 
    533491                                echo "\n\t\t <span title='Sonstige Angaben'>"; 
    534492                                        if ($showkey) {echo "\n\t\t <span class='key'>(".$son.")</span> ";} 
    535                                         werteliste ('ax_bodenschaetzung', 'sonstigeangaben', $son); 
     493                                        werteliste ('s', $son); 
    536494                                echo "</span>"; 
    537495                        } 
    538  
    539                         if ($jahr <> '') { 
     496                        if (isset($jahr)) { 
    540497                                echo "\n\t\t<span title='Jahreszahl'>".$jahr."</span>"; 
    541498                        } 
    542                 echo "\n\t</td>"; // 5 
    543                 echo "\n\t<td>&nbsp;</td>\n</tr>"; // 6 
     499                echo "\n\t</td>" 
     500                ."\n\t<td>&nbsp;</td>\n</tr>"; 
    544501                $j++; 
    545502        } 
     
    552509} 
    553510 
    554 // H i n w e i s  auf Bodenneuordnung oder eine strittige Grenze 
    555 $sql_boden ="SELECT b.artderfestlegung AS wert, a.beschreibung AS art_verf, b.gml_id AS verf_gml, b.bezeichnung AS verf_bez,  
     511// H i n w e i s  
     512// auf  "Bau-, Raum- oder Bodenordnungsrecht" (Baulast, Flurbereinigung) oder eine "strittige Grenze" 
     513 
     514// Gemeinsame FlÀche suchen: entweder (ST_Intersects and not ST_Touches) oder (2xST_Within OR ST_Overlaps), ST_Intersects liefert auch angrenzende 
     515$sql_boden="SELECT b.artderfestlegung AS wert, a.beschreibung AS art_verf, b.gml_id AS verf_gml, b.bezeichnung AS verf_bez,  
    556516b.name AS verf_name, d.bezeichnung AS stelle_bez, d.stelle AS stelle_key  
    557 FROM ax_bauraumoderbodenordnungsrecht b  
    558 LEFT JOIN ax_artderfestlegung_bauraumoderbodenordnungsrecht a ON b.artderfestlegung = a.wert 
     517FROM ax_flurstueck f  
     518JOIN ax_bauraumoderbodenordnungsrecht b ON ST_Within(b.wkb_geometry, f.wkb_geometry) OR ST_Within(f.wkb_geometry, b.wkb_geometry) OR ST_Overlaps(b.wkb_geometry, f.wkb_geometry) 
     519LEFT JOIN ax_artderfestlegung_bauraumoderbodenordnungsrecht a ON b.artderfestlegung=a.wert  
    559520LEFT JOIN ax_dienststelle d ON b.stelle=d.stelle  
    560 WHERE b.endet IS NULL AND d.endet IS NULL   
    561 AND (ST_Within((SELECT wkb_geometry FROM ax_flurstueck WHERE gml_id = $1 AND endet IS NULL ), wkb_geometry) 
    562  OR ST_Overlaps((SELECT wkb_geometry FROM ax_flurstueck WHERE gml_id = $1 AND endet IS NULL), wkb_geometry));"; 
     521WHERE f.gml_id = $1 AND f.endet IS NULL AND b.endet IS NULL AND d.endet IS NULL"; 
    563522 
    564523pg_prepare($con, "bodeneuordnung", $sql_boden); 
     
    566525if (!$res_bodeneuordnung) { 
    567526        echo "\n<p class='err'>Fehler bei Bau-, Raum- oder Bodenordnungsrecht</p>"; 
    568         if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".$sql_boden."<br>$1 = gml_id = '".$gmlid."'</p>";} 
     527        if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".str_replace("$1", "'".$gmlid."'", $sql_boden)."</p>";} 
    569528} 
    570529$sql_str="SELECT gml_id FROM ax_besondereflurstuecksgrenze WHERE endet IS NULL AND 1000 = ANY(artderflurstuecksgrenze)  
     
    575534if (!$res_strittigeGrenze) { 
    576535        echo "\n<p class='err'>Fehler bei strittige Grenze</p>"; 
    577         if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".$sql_str."<br>$1 = gml_id = '".$gmlid."'</p>";} 
     536        if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".str_replace("$1", "'".$gmlid."'", $sql_str)."</p>";} 
    578537} 
    579538if (pg_num_rows($res_bodeneuordnung) > 0 OR pg_num_rows($res_strittigeGrenze) > 0) { 
     
    599558                        ."\n</tr>"; 
    600559                        $dstell=$row['stelle_key']; // Zeile 2 
    601                         if ($dstell != "") { // Kann auch leer sein 
     560                        if ($dstell != '') { 
    602561                                echo "\n<tr title='Flurbereinigungsbeh&ouml;rde'>" 
    603562                                        ."\n\t<td>&nbsp;</td>" // 1 
     
    612571                        $vbez=$row['verf_bez']; // Zeile 3, ist nicht immer gefÃŒllt 
    613572                        $vnam=$row['verf_name']; // noch seltener 
    614                         if ($vbez != "") { 
     573                        if ($vbez != '') { 
    615574                                echo "\n<tr title='Verfahrensbezeichnung'>" 
    616575                                        ."\n\t<td>&nbsp;</td>" 
     
    619578                                                if ($vnam == "") { 
    620579                                                        echo $vbez; // nur die Nummer 
    621                                                 } else {        // Name oder beides 
     580                                                } else { // Name oder beides 
    622581                                                        if ($showkey) {echo "<span class='key'>(".$vbez.")</span> ";} 
    623582                                                        echo $vnam; 
     
    640599$bartgrp="";    // Buchungsart 
    641600$barttypgrp=""; // Buchungsart Typ 
    642 if ($gml_buchungsstelle == '') {echo "\n<p class='err'>Keine Buchungstelle zum Flurst&uuml;ck gefunden.</p>";} 
    643 echo "\n<table class='outer'>"; // ALLE Buchungen und EigentÃŒmer in 4 Spalten EINER Tabelle ausgeben 
     601if ($gml_buchungsstelle === '') { 
     602                echo "\n<p class='err'>Keine Buchungstelle zum Flurst&uuml;ck gefunden.</p>"; // keine Verweis vorhanden? 
     603} else { 
     604        echo "\n<table class='outer'>"; // ALLE Buchungen und EigentÃŒmer in 4 Spalten EINER Tabelle ausgeben 
     605         
    644606        $stufe=1; // SchleifenzÀhler Tiefe 
    645         $gezeigt=buchung_anzg($gml_buchungsstelle, $eig, false, $gmlid, 1); // die ("dienende") Buchung anzeigen, wenn nicht fiktiv. Liefert true/false 
    646  
    647         $anzber=ber_bs_zaehl($gml_buchungsstelle); // Anzahl berechtigte Buchungen (nÀchste Stufe) zu dieser Buchung ermitteln 
    648         $verf_next = array($gml_buchungsstelle); // Start Recursion mit einem Element 
    649         //if ($debug > 2) {echo "<p class='dbg'>Nach Stufe ".$stufe.", Anzahl: ". $anzber ."</p>";} 
     607        $gezeigt=buchung_anzg($gml_buchungsstelle, $eig, false, $gmlid, 1); // die ("dienende") Buchung anzeigen, wenn nicht fiktiv. Liefert 1/0 
     608 
     609        $anzber=ber_bs_zaehl($gml_buchungsstelle);      // Anzahl berechtigte Buchungen (nÀchste Stufe) zu dieser Buchung ermitteln 
     610        $verf_next = array($gml_buchungsstelle);        // Start Recursion mit einem Element 
     611        //if ($debug > 1) {echo "<p class='dbg'>Nach Stufe ".$stufe.", Anzahl: ". $anzber ."</p>";} 
    650612 
    651613        while ($anzber > 0 ) { // Stufe - recursiv in die Tiefe, solange es was zu verfolgen gibt 
     
    666628                } // Ende Buchungs-Array in der Stufe 
    667629                $anzber=count($verf_next); // Sammlung auf Stufe zÀhlen, Steuert die Schleife. 
    668                 //if ($debug > 2) {echo "<p class='dbg'>Nach Stufe ".$stufe.", Anzahl: ". $anzber ."</p>";} 
     630                //if ($debug > 1) {echo "<p class='dbg'>Nach Stufe ".$stufe.", Anzahl: ". $anzber ."</p>";} 
    669631        } // Ende Stufe 
    670 echo "\n</table>\n\n"; 
     632 
     633        echo "\n</table>\n\n"; 
     634        //if ($debug > 1) {echo "<p class='dbg'>Buchung gezeigt = ".$gezeigt."</p>";} 
     635 
     636        // Fehler aus "ModellschwÀche" erkennen. 
     637        // Wenn der Verweis der Buchungsstelle auf ein Grundbuch ins Leere lÀuft, weil das Grundbuch  
     638        //  nicht im SekundÀrbestand vorhanden ist, dann könnte das am NBA-Verfahren liegen. 
     639        if ( $gezeigt === 0 and $stufe === 1 ) { // and $anzber === 0 
     640        //      Fehlt die Buchung oder das Grundbuch? 
     641                echo "<p class='err'>Das Grundbuch zur Buchung '".$gml_buchungsstelle."' fehlt in der Datenbank.</p>"; 
     642                 
     643                if ($debug > 1) { // fehlt die Buchung?? 
     644                        echo "<p class='dbg'>Suchen mit SQL: SELECT * FROM ax_buchungsstelle WHERE gml_id='".$gml_buchungsstelle."'; </p>"; 
     645                } 
     646        // Buchung verlinken fÃŒr weitere Suche:        alkisgsnw.php?gkz=320&gmlid=DENW18AL0000SEbl 
     647        // Aber das Modul zeigt nichts an (inner join ?) 
     648        // +++ ZunÀchst: Auch im Modul alkisgsnw.php den Fall berÃŒcksichtigen, dass die Buchung vorhanden ist, aber das GB nicht ?! 
     649        } 
     650} 
    671651 
    672652pg_close($con); 
     
    679659echo "\n\t<a title='Export als CSV' href='javascript:ALKISexport(\"" . $gmlid . "\")'><img src='ico/download_fs.png' width='32' height='16' alt='Export'></a>&nbsp;\n</div>"; 
    680660 
    681 footer($gmlid, $_SERVER['PHP_SELF']."?", "&amp;eig=".$eig); 
     661footer($gmlid, selbstverlinkung()."?", "&amp;eig=".$eig); 
    682662?> 
    683663</body> 
  • trunk/info/info/alkisn/alkisgebaeudenw.php

    r418 r422  
    55        Version: 
    66        2016-02-24 Version fuer norGIS-ALKIS-Import 
    7         2016-11-29 HTML5, Gemeinsam genutzte Datenbanken ermöglichen 
    8         2016-12-05 Array-Behandlung ax_gebaeude.name 
    9         2017-06-08 Validierung Eingabeparameter, Feinkorrekturen 
    10         2017-06-19 Tool-Tip GebÀudefunktion 
    11         2018-04-23 Kennzeichen eingerÃŒckt, &nodebug 
    12         2018-11-09 Umstellung Full-Schema 
    13         2018-11-21 Korrektur LEFT Join Bauweise 
     7        .... 
     8        2020-02-20 Authentifizierung ausgelegert in Function darf_ich() 
     9        2020-12-03 function selbstverlinkung() statt $_SERVER['PHP_SELF'] 
     10        2020-12-15 Verschneidung mit "sonstige Bauwerke", Input-Validation und Strict Comparisation 
     11        2021-03-09 Verschneidung mit weiteren Bauwerks-Tabellen. 
     12        2021-03-11 Adresse(n) des gehörtZu-Haus zum Bauwerk nicht mehr hier anzeigen sondern im neuen Bauwerk-Modul. 
    1413*/ 
     14 
     15// Kopf fÃŒr die Anzeige der GebÀude. Nur wenn tatsÀchlich GebÀude vorkommen. 
     16function geb_tab_head() { 
     17        // Überschrift 
     18        echo "\n\n<h3><img src='ico/Haus.png' width='16' height='16' alt=''> Geb&auml;ude</h3>" 
     19        ."\n<p>.. auf oder an dem Flurst&uuml;ck. Ermittelt durch Verschneidung der Geometrie.</p>"; 
     20 
     21        // Tabellen-Kopf 
     22        echo "\n<hr>\n<table class='geb'>"; 
     23        echo "\n<tr>" 
     24                ."\n\t<td class='head' title='ggf. Geb&auml;udename'>Name</td>" 
     25                ."\n\t<td class='heads fla' title='Schnittfl&auml;che zwischen Flurst&uuml;ck und Geb&auml;ude'><img src='ico/sortd.png' width='10' height='10' alt='' title='Sortierung (absteigend)'>Fl&auml;che</td>" 
     26                ."\n\t<td class='head' title='gesamte Geb&auml;udefl&auml;che, liegt teilweise auf Nachbar-Flurst&uuml;ck'>&nbsp;</td>" 
     27                ."\n\t<td class='head' title='Geb&auml;udefunktion ist die zum Zeitpunkt der Erhebung vorherrschend funktionale Bedeutung des Geb&auml;udes'>Funktion</td>" 
     28                ."\n\t<td class='head' title='Bauweise ist die Beschreibung der Art der Bauweise'>Bauweise</td>" 
     29                ."\n\t<td class='head' title='Zustand beschreibt die Beschaffenheit oder die Betriebsbereitschaft von Geb&auml;ude. Diese Attributart wird nur dann optional gef&uuml;hrt, wenn der Zustand des Geb&auml;udes vom nutzungsf&auml;higen Zustand abweicht.'>Zustand</td>" 
     30                ."\n\t<td class='head nwlink' title='Lagebezeichnung mit Stra&szlig;e und Hausnummer'>Lage</td>" 
     31                ."\n\t<td class='head nwlink' title='Link zu den kompletten Hausdaten'>Haus</td>" 
     32        ."\n</tr>"; 
     33} 
     34         
     35// Kopf fÃŒr die Anzeige der Bauwerke. Nur wenn tatsÀchlich Bauwerke vorkommen. 
     36function bauw_tab_head() { 
     37        // Überschrift 
     38        echo "\n\n<h3><img src='ico/Haus.png' width='16' height='16' alt=''> Bauwerke</h3>" 
     39        ."\n<p>.. auf oder an dem Flurst&uuml;ck. Ermittelt durch Verschneidung der Geometrie.</p>"; 
     40 
     41        // Tabellen-Kopf 
     42        echo "\n<hr>\n<table class='geb'>"; 
     43        echo "<tr><td colspan=3></td><td colspan=3 class='heads gw'><img src='ico/sort.png' width='10' height='10' alt='' title='Sortierung'>Bauwerks-Typ</td></tr>"; 
     44        echo "\n<tr>"; 
     45        echo "\n\t<td class='head' title='Bezeichnung und/oder Bauwerksname'>Name</td>" 
     46                ."\n\t<td class='heads fla' title='Schnittfl&auml;che zwischen Flurst&uuml;ck und Bauwerk'><img src='ico/sortd.png' width='10' height='10' alt='' title='Sortierung (absteigend)'>Fl&auml;che</td>" 
     47                ."\n\t<td class='head' title='gesamte Bauwerksfl&auml;che, liegt teilweise auf Nachbar-Flurst&uuml;ck'>&nbsp;</td>" 
     48                ."\n\t<td class='head' title='Bauwerksfunktion'>Funktion</td>" 
     49                ."\n\t<td class='head nwlink' title='Daten des zugehörigen Geb&auml;udes'>zum Haus</td>" 
     50                ."\n\t<td class='head nwlink' title='Detaillierte Daten zu diesem Bauwerk'>Bauwerk</td>" 
     51        ."\n</tr>"; 
     52} 
     53 
     54// S T A R T 
     55 
     56ini_set("session.cookie_httponly", 1); 
    1557session_start(); 
    16 $showkey="n"; $nodebug=""; // Var. aus Parameter initalisieren 
    17 $cntget = extract($_GET); // Parameter in Variable umwandeln 
     58$showkey="n"; $nodebug="";      // Var. aus Parameter initalisieren 
     59$cntget = extract($_GET);       // Parameter in Variable umwandeln 
    1860 
    1961// strikte Validierung aller Parameter 
    20 if (!isset($gmlid) or !preg_match('#^[0-9A-Za-z]{16}$#', $gmlid)) {die("Eingabefehler gmlid");} 
    21 if (!isset($gkz) or !preg_match('#^[0-9]{3}$#', $gkz)) {die("Eingabefehler gkz");} 
     62if (isset($gmlid)) { 
     63        if (!preg_match('#^[0-9A-Za-z]{16}$#', $gmlid)) {die("Eingabefehler gmlid");} 
     64} else { 
     65        die("Fehlender Parameter"); 
     66} 
     67if (isset($gkz)) { 
     68        if (!preg_match('#^[0-9]{3}$#', $gkz)) {die("Eingabefehler gkz");} 
     69} else { 
     70        die("Fehlender Parameter"); 
     71} 
    2272if (!preg_match('#^[j|n]{0,1}$#', $showkey)) {die ("Eingabefehler showkey");} 
    23 if ($showkey == "j") {$showkey=true;} else {$showkey=false;} 
     73if ($showkey === "j") {$showkey=true;} else {$showkey=false;} 
    2474if (!preg_match('#^j{0,1}$#', $nodebug)) {die("Eingabefehler nodebug");} 
    2575 
    26 require_once("alkis_conf_location.php"); 
    27 if ($auth == "mapbender") {require_once($mapbender);} 
    28 include("alkisfkt.php"); 
     76include "alkis_conf_location.php"; 
     77include "alkisfkt.php"; 
     78 
    2979echo <<<END 
    3080<!doctype html> 
     
    3989<body> 
    4090END; 
     91 
     92$erlaubnis = darf_ich(); if ($erlaubnis === 0) { die('<p class="stop1">Abbruch</p></body>'); } 
     93 
    4194// Mit URL-Parameter "&nodebug=j" kann man die Entwicklungsumgebung (in Conf definiert) ausschalten. 
    4295// Manuell an die URL anfÃŒgen, wirkt nur temporÀr und wird nicht in Links weiter gereicht. 
    43 if ($nodebug == "j") {$debug=0;}  
     96if ($nodebug === "j") {$debug=0;}  
    4497 
    4598$con = pg_connect($dbconn." options='--application_name=ALKIS-Auskunft_alkisgebaeudenw.php'"); 
     
    55108if (!$resf) { 
    56109        echo "\n<p class='err'>Fehler bei Flurst&uuml;cksdaten.</p>"; 
    57         if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".$sqlf."<br>$1 = gml_id = '".$gmlid."'</p>";} 
     110        if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".str_replace("$1","'".$gmlid."'",$sqlf)."'</p>";} 
     111        if ($debug > 1) {echo "<p class='dbg'>Fehler:".pg_result_error($resf)."</p>";} 
    58112} 
    59113if ($rowf = pg_fetch_assoc($resf)) { 
     
    70124        echo "\n<p class='err'>Fehler! Kein Treffer fuer gml_id=".$gmlid."</p>"; 
    71125} 
    72 echo "<p class='geb'>ALKIS Flurst&uuml;ck (Geb&auml;ude) ".$gmkgnr."-".$flurnummer."-".$flstnummer."&nbsp;</p>"; // Balken 
    73 echo "\n<h2>Flurst&uuml;ck (Geb&auml;ude)</h2>"; 
     126echo "<p class='balken geb'>ALKIS Flurst&uuml;ck (Geb&auml;ude und Bauwerke) ".$gmkgnr."-".$flurnummer."-".$flstnummer."&nbsp;</p>"; // Balken 
     127echo "\n<h2>Flurst&uuml;ck (Geb&auml;ude und Bauwerke)</h2>"; 
    74128echo "\n<table class='outer'>" // Kopf 
    75129        ."\n<tr>" 
     
    84138                                ."\n\t\t</tr>\n\t\t<tr>" 
    85139                                        ."\n\t\t\t<td title='Gemarkung'>"; 
    86                                         if  ($showkey) {echo "<span class='key'>".$gmkgnr."</span><br>";} 
     140                                        if ($showkey) {echo "<span class='key'>".$gmkgnr."</span><br>";} 
    87141                                        echo $gemkname."&nbsp;</td>" 
    88142                                        ."\n\t\t\t<td title='Flurnummer'>".$flurnummer."</td>" 
     
    104158pg_free_result($resf); 
    105159 
    106 echo "\n\n<h3><img src='ico/Haus.png' width='16' height='16' alt=''> Geb&auml;ude</h3>" 
    107 ."\n<p>.. auf oder an dem Flurst&uuml;ck. Ermittelt durch Verschneidung der Geometrie.</p>"; 
    108  
    109160// G e b a e u d e 
     161 
    110162$sqlg ="SELECT g.gml_id, g.name, g.bauweise, g.gebaeudefunktion, h.beschreibung AS bauweise_beschreibung, u.beschreibung AS bezeichner, u.dokumentation AS gfktd, g.zustand, z.beschreibung AS bzustand,  
    111 round(st_area(g.wkb_geometry)::numeric,2) AS gebflae, "; // GEB-Flaeche komplett auch die Fl. ausserhalb des FS 
     163round(st_area(g.wkb_geometry)::numeric,2) AS gebflae, "; // GEB-Flaeche, auch ausserhalb des FS 
    112164$sqlg.="round(st_area(ST_Intersection(g.wkb_geometry,f.wkb_geometry))::numeric,2) AS schnittflae, "; // wie viel vom GEB liegt im FS? 
    113 $sqlg.="st_within(g.wkb_geometry,f.wkb_geometry) as drin "; // liegt das GEB komplett im FS? 
    114 $sqlg.="FROM ax_flurstueck f, ax_gebaeude g  
    115 LEFT JOIN ax_bauweise_gebaeude h ON g.bauweise = h.wert 
    116 LEFT JOIN ax_gebaeudefunktion u ON g.gebaeudefunktion = u.wert 
    117 LEFT JOIN ax_zustand_gebaeude z ON g.zustand = z.wert 
    118 WHERE f.gml_id= $1 AND f.endet IS NULL and g.endet IS NULL "; // ID des akt. FS 
     165$sqlg.="st_within(g.wkb_geometry,f.wkb_geometry) as drin  
     166 FROM ax_flurstueck f, ax_gebaeude g  
     167 LEFT JOIN ax_bauweise_gebaeude h ON g.bauweise = h.wert 
     168 LEFT JOIN ax_gebaeudefunktion u ON g.gebaeudefunktion = u.wert 
     169 LEFT JOIN ax_zustand_gebaeude z ON g.zustand = z.wert  
     170WHERE f.gml_id= $1 AND f.endet IS NULL and g.endet IS NULL "; 
    119171 
    120172// "within" -> nur Geb., die komplett im FS liegen. "intersects" -> auch teil-ueberlappende Flst. 
     
    129181if (!$resg) { 
    130182        echo "\n<p class='err'>Fehler bei Geb&auml;ude-Verschneidung.</p>"; 
    131         if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".$sqlg."<br>$1 = gml_id = '".$gmlid."'</p>";} 
     183        if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".str_replace("$1","'".$gmlid."'",$sqlg)."'</p>";} 
     184        if ($debug > 1) {echo "<p class='dbg'>Fehler:".pg_result_error($resg)."</p>";} 
    132185} 
    133186$gebnr=0; 
    134187$gebflsum=0; 
    135 echo "\n<hr>\n<table class='geb'>"; 
    136         echo "\n<tr>" // T-Header 
    137                 ."\n\t<td class='head' title='ggf. Geb&auml;udename'>Name</td>" 
    138                 ."\n\t<td class='heads fla' title='Schnittfl&auml;che zwischen Flurst&uuml;ck und Geb&auml;ude'><img src='ico/sortd.png' width='10' height='10' alt='' title='Sortierung (absteigend)'>Fl&auml;che</td>" 
    139                 ."\n\t<td class='head' title='gesamte Geb&auml;udefl&auml;che, liegt teilweise auf Nachbar-Flurst&uuml;ck'>&nbsp;</td>" 
    140                 ."\n\t<td class='head' title='Geb&auml;udefunktion ist die zum Zeitpunkt der Erhebung vorherrschend funktionale Bedeutung des Geb&auml;udes'>Funktion</td>" 
    141                 ."\n\t<td class='head' title='Bauweise ist die Beschreibung der Art der Bauweise'>Bauweise</td>" 
    142                 ."\n\t<td class='head' title='Zustand beschreibt die Beschaffenheit oder die Betriebsbereitschaft von Geb&auml;ude. Diese Attributart wird nur dann optional gef&uuml;hrt, wenn der Zustand des Geb&auml;udes vom nutzungsf&auml;higen Zustand abweicht.'>Zustand</td>" 
    143                 ."\n\t<td class='head nwlink' title='Lagebezeichnung mit Stra&szlig;e und Hausnummer'>Lage</td>" 
    144                 ."\n\t<td class='head nwlink' title='Link zu den kompletten Hausdaten'>Haus</td>" 
     188while($rowg = pg_fetch_assoc($resg)) { 
     189        $gebnr++; 
     190        if ($gebnr === 1) {geb_tab_head();} // Tab.-Kopf 
     191        $ggml=$rowg["gml_id"]; 
     192        $gebflsum=$gebflsum + $rowg["schnittflae"]; 
     193        $gnam=trim(trim($rowg["name"], "{}"), '"'); // Gebaeude-Name ist ein Array in der DB: '{"A","B"}' 
     194        // Mehrfachbelegung nur theoretisch. Entklammern reicht. Mal mit und mal ohne "" drum!? 
     195        /* SELECT name FROM ax_gebaeude WHERE NOT name IS NULL AND array_length(name, 1) > 1; */ 
     196        $gfktk=htmlentities($rowg["gebaeudefunktion"], ENT_QUOTES, "UTF-8");  // Geb.-Funktion Key 
     197        $gfktv=htmlentities($rowg["bezeichner"], ENT_QUOTES, "UTF-8"); // Geb.Funktion Value 
     198        $gfktd=htmlentities($rowg["gfktd"], ENT_QUOTES, "UTF-8"); // GebÀude-Funktion-Description 
     199 
     200        $gbauw=$rowg["bauweise"]; 
     201        $gbauwb=htmlentities($rowg["bauweise_beschreibung"], ENT_QUOTES, "UTF-8"); 
     202 
     203        $gzus=$rowg["zustand"]; 
     204        $gzustand=htmlentities($rowg["bzustand"], ENT_QUOTES, "UTF-8"); 
     205 
     206        // 3 FÀlle unterscheiden: 
     207        if ($rowg["drin"] === "t") { // GebÀude liegt komplett in FlurstÃŒck 
     208                $f1=$rowg["schnittflae"]." m&#178;"; 
     209                $f2="&nbsp;"; 
     210                $gstyle="gin"; // siehe .css 
     211        } else { 
     212                if ($rowg["schnittflae"] === "0.00") { // GebÀude angrenzend (Grenzbebauung) 
     213                        $gstyle="gan"; 
     214                        $f1="&nbsp;"; 
     215                        $f2="angrenzend"; 
     216                } else { // Teile des GebÀudes stehen auf dem FlurstÃŒck 
     217                        $gstyle="gtl"; 
     218                        $f1=$rowg["schnittflae"]." m&#178;"; 
     219                        $f2="(von ".$rowg["gebflae"]." m&#178;)"; 
     220                } 
     221        } 
     222 
     223        echo "\n<tr>" 
     224                ."\n\t<td>"; 
     225                if ($gnam != "") {echo "<span title='Geb&auml;udename'>".$gnam."</span><br>";} 
     226                echo "</td>"; 
     227 
     228                echo "\n\t<td class='fla'>".$f1."</td>" 
     229                ."\n\t<td class='".$gstyle."'>".$f2."</td>"; // FlÀchenangaben 
     230 
     231                echo "\n\t<td title='".$gfktd."'>"; // Funktion 
     232                        if ($showkey) {echo "<span class='key'>(".$gfktk.")</span>&nbsp;";} 
     233                        echo $gfktv; 
     234                echo "</td>"; 
     235 
     236                echo "\n\t<td>"; 
     237                if ($gbauw != "") { 
     238                        if ($showkey) {echo "<span class='key'>(".$gbauw.")</span>&nbsp;";} 
     239                        echo $gbauwb; 
     240                } 
     241                echo "</td>"; 
     242 
     243                echo "\n\t<td>"; 
     244                if ($gzus != "") { 
     245                        if ($showkey) {echo "<span class='key'>(".$gzus.")</span>&nbsp;";} 
     246                        echo $gzustand; 
     247                } 
     248                echo "</td>"; 
     249 
     250                // 2 Spalten mit Links zu anderen Nachweisen: 1. Lage, 2. GebÀude 
     251                echo "\n\t<td class='nwlink noprint'>"; // Link Lage 
     252 
     253                // Zu EINEM GebÀude mehrere Lagebezeichnungen mit Haus- oder Pseudo-Nummer möglich, alle in ein TD  
     254                // HAUPTgebÀude  Geb >zeigtAuf> lage (mehrere) 
     255                $sqll="SELECT 'm' AS ltyp, l.gml_id AS lgml, s.lage, s.bezeichnung, l.hausnummer, '' AS laufendenummer " 
     256                ."FROM ax_gebaeude g JOIN ax_lagebezeichnungmithausnummer l ON l.gml_id=ANY(g.zeigtauf) " 
     257                ."JOIN ax_lagebezeichnungkatalogeintrag s ON l.kreis=s.kreis AND l.gemeinde=s.gemeinde AND l.lage=s.lage " 
     258                ."WHERE g.gml_id= $1 AND g.endet IS NULL AND l.endet IS NULL AND s.endet IS NULL "; 
     259 
     260                // UNION - oder NEBENgebÀude  Geb >hat> Pseudo 
     261                $sqll.="UNION SELECT 'p' AS ltyp, l.gml_id AS lgml, s.lage, s.bezeichnung, l.pseudonummer AS hausnummer, l.laufendenummer " 
     262                ."FROM ax_gebaeude g JOIN ax_lagebezeichnungmitpseudonummer l ON l.gml_id=g.hat " 
     263                ."JOIN ax_lagebezeichnungkatalogeintrag s ON l.kreis=s.kreis AND l.gemeinde=s.gemeinde AND l.lage=s.lage " 
     264                ."WHERE g.gml_id= $1 AND g.endet IS NULL AND l.endet IS NULL AND s.endet IS NULL "; // ID des Hauses" 
     265         
     266                $sqll.="ORDER BY bezeichnung, hausnummer, laufendenummer;"; 
     267                $v = array($ggml); 
     268                $resl = pg_prepare("", $sqll); 
     269                $resl = pg_execute("", $v); 
     270                if (!$resl) { 
     271                        echo "\n<p class='err'>Fehler bei Lage mit HsNr.</p>"; 
     272                        if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".str_replace("$1","'".$gmlid."'",$sqll)."'</p>";} 
     273                        if ($debug > 1) {echo "<p class='dbg'>Fehler:".pg_result_error($resl)."</p>";} 
     274                } 
     275                while($rowl = pg_fetch_assoc($resl)) { // LOOP: Lagezeilen 
     276                        $ltyp=$rowl["ltyp"]; // Lagezeilen-Typ 
     277                        $skey=$rowl["lage"]; // Str.-Schluessel 
     278                        $snam=htmlentities($rowl["bezeichnung"], ENT_QUOTES, "UTF-8"); //-Name 
     279                        $hsnr=$rowl["hausnummer"]; 
     280                        $hlfd=$rowl["laufendenummer"]; 
     281                        $gmllag=$rowl["lgml"]; 
     282                        if ($ltyp === "p") { 
     283                                $lagetitl="Nebengeb&auml;ude - Pseudonummer"; 
     284                                $lagetxt="Nebengeb. ".$hlfd; // + HausNr?? 
     285                        } else { 
     286                                $lagetitl="HauptgebÀude - Hausnummer"; 
     287                                $lagetxt=$snam." ".$hsnr; 
     288                        } 
     289                        echo "\n\t\t<a title='".$lagetitl."' href='alkislage.php?gkz=".$gkz."&amp;gmlid=".$gmllag."&amp;ltyp=".$ltyp; 
     290                                if ($showkey) {echo "&amp;showkey=j";} 
     291                                echo "'>"; 
     292                                if ($showkey) {echo "<span class='key'>(".$skey.")</span>&nbsp;";} 
     293                        echo $lagetxt."&nbsp;<img src='ico/Lage_mit_Haus.png' width='16' height='16' alt=''></a><br>"; 
     294                } // Ende Loop Lage m.H. 
     295                pg_free_result($resl); 
     296                echo "\n\t</td>"; 
     297 
     298                echo "\n\t<td class='nwlink noprint'>" // Link Haus 
     299                        ."\n\t\t<a title='Daten zum Geb&auml;ude-Objekt' href='alkishaus.php?gkz=".$gkz."&amp;gmlid=".$ggml; 
     300                        if ($showkey) {echo "&amp;showkey=j";} 
     301                        echo "'>Haus&nbsp;<img src='ico/Haus.png' width='16' height='16' alt=''></a>" 
     302                ."\n\t</td>" 
    145303        ."\n</tr>"; 
    146         while($rowg = pg_fetch_assoc($resg)) { // T-Body 
    147                 $gebnr = $gebnr + 1; 
    148                 $ggml=$rowg["gml_id"]; 
    149                 $gebflsum=$gebflsum + $rowg["schnittflae"]; 
    150                 $gnam=trim(trim($rowg["name"], "{}"), '"'); // Gebaeude-Name ist ein Array in der DB: '{"A","B"}' 
    151                 // Mehrfachbelegung nur theoretisch. Entklammern reicht. Mal mit und mal ohne "" drum!? 
    152                 /* SELECT name FROM ax_gebaeude WHERE NOT name IS NULL AND array_length(name, 1) > 1; */ 
    153                 $gfktk=htmlentities($rowg["gebaeudefunktion"], ENT_QUOTES, "UTF-8");  // Geb.-Funktion Key 
    154                 $gfktv=htmlentities($rowg["bezeichner"], ENT_QUOTES, "UTF-8"); // Geb.Funktion Value 
    155                 $gfktd=htmlentities($rowg["gfktd"], ENT_QUOTES, "UTF-8"); // GebÀude-Funktion-Description 
    156                 $gzus=htmlentities($rowg["zustand"], ENT_QUOTES, "UTF-8"); 
    157                 $gzustand=htmlentities($rowg["bzustand"], ENT_QUOTES, "UTF-8"); 
    158  
    159                 // 3 FÀlle unterscheiden: 
    160                 if ($rowg["drin"] == "t") { // GebÀude liegt komplett in FlurstÃŒck 
    161                         $f1=$rowg["schnittflae"]." m&#178;"; 
    162                         $f2="&nbsp;"; 
    163                         $gstyle="gin"; // siehe .css 
    164                 } else { 
    165                 if ($rowg["schnittflae"] == "0.00") { // GebÀude angrenzend (Grenzbebauung) 
    166                                 $gstyle="gan"; 
    167                                 $f1="&nbsp;"; 
    168                                 $f2="angrenzend"; 
    169                         } else { // Teile des GebÀudes stehen auf dem FlurstÃŒck 
    170                                 $gstyle="gtl"; 
    171                                 $f1=$rowg["schnittflae"]." m&#178;"; 
    172                                 $f2="(von ".$rowg["gebflae"]." m&#178;)"; 
    173                         } 
    174                 } 
    175  
    176                 echo "\n<tr>" 
    177                         ."\n\t<td class='".$gstyle."'>"; // Sp. 1 Name 
    178                         if ($gnam != "") {echo "<span title='Geb&auml;udename'>".$gnam."</span><br>";} 
    179                         echo "</td>"; 
    180  
    181                         echo "\n\t<td class='fla'>".$f1."</td>" // Sp. 2 
    182                         ."\n\t<td class='".$gstyle."'>".$f2."</td>"; // FlÀchenangaben 
    183  
    184                         echo "\n\t<td class='".$gstyle."' title='".$gfktd."'>"; // Sp. 3 Funktion 
    185                         if ($showkey) {echo "<span class='key'>".$gfktk."</span>&nbsp;";} 
    186                         echo $gfktv."</td>"; 
    187  
    188                         echo "\n\t<td class='".$gstyle."'>"; 
    189                         if ($showkey) {echo "<span class='key'>".$rowg["bauweise"]."</span>&nbsp;";} 
    190                         echo $rowg["bauweise_beschreibung"]."&nbsp;</td>"; 
    191  
    192                         echo "\n\t<td class='".$gstyle."'>"; 
    193                         if ($showkey) {echo "<span class='key'>".$gzus."</span>&nbsp;";} 
    194                         echo $gzustand."&nbsp;</td>"; 
    195  
    196                         // 2 Spalten mit Links zu anderen Nachweisen: 1. Lage, 2. GebÀude 
    197                         echo "\n\t<td class='nwlink noprint'>"; // Link Lage 
    198  
    199                         // Zu EINEM GebÀude mehrere Lagebezeichnungen mit Haus- oder Pseudo-Nummer möglich, alle in ein TD  
    200                         // HAUPTgebÀude  Geb >zeigtAuf> lage (mehrere) 
    201                         $sqll="SELECT 'm' AS ltyp, l.gml_id AS lgml, s.lage, s.bezeichnung, l.hausnummer, '' AS laufendenummer " 
    202                         ."FROM ax_gebaeude g JOIN ax_lagebezeichnungmithausnummer l ON l.gml_id=ANY(g.zeigtauf) " 
    203                         ."JOIN ax_lagebezeichnungkatalogeintrag s ON l.kreis=s.kreis AND l.gemeinde=s.gemeinde AND l.lage=s.lage " 
    204                         ."WHERE g.gml_id= $1 AND g.endet IS NULL AND l.endet IS NULL AND s.endet IS NULL "; 
    205  
    206                         // UNION - oder NEBENgebÀude  Geb >hat> Pseudo 
    207                         $sqll.="UNION SELECT 'p' AS ltyp, l.gml_id AS lgml, s.lage, s.bezeichnung, l.pseudonummer AS hausnummer, l.laufendenummer " 
    208                         ."FROM ax_gebaeude g JOIN ax_lagebezeichnungmitpseudonummer l ON l.gml_id=g.hat " 
    209                         ."JOIN ax_lagebezeichnungkatalogeintrag s ON l.kreis=s.kreis AND l.gemeinde=s.gemeinde AND l.lage=s.lage " 
    210                         ."WHERE g.gml_id= $1 AND g.endet IS NULL AND l.endet IS NULL AND s.endet IS NULL "; // ID des Hauses" 
    211                  
    212                         $sqll.="ORDER BY bezeichnung, hausnummer;"; 
    213                         $v = array($ggml); 
    214                         $resl = pg_prepare("", $sqll); 
    215                         $resl = pg_execute("", $v); 
    216                         if (!$resl) { 
    217                                 echo "\n<p class='err'>Fehler bei Lage mit HsNr.</p>"; 
    218                                 if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".$sqll."<br>$1 = gml_id = '".$gmlid."'</p>";} 
    219                         } 
    220                         while($rowl = pg_fetch_assoc($resl)) { // LOOP: Lagezeilen 
    221                                 $ltyp=$rowl["ltyp"]; // Lagezeilen-Typ 
    222                                 $skey=$rowl["lage"]; // Str.-Schluessel 
    223                                 $snam=htmlentities($rowl["bezeichnung"], ENT_QUOTES, "UTF-8"); //-Name 
    224                                 $hsnr=$rowl["hausnummer"]; 
    225                                 $hlfd=$rowl["laufendenummer"]; 
    226                                 $gmllag=$rowl["lgml"]; 
    227                                 if ($ltyp == "p") { 
    228                                         $lagetitl="NebengebÀude - Pseudonummer"; 
    229                                         $lagetxt="Nebengeb&auml;ude Nr. ".$hlfd; 
    230                                 } else { 
    231                                         $lagetitl="HauptgebÀude - Hausnummer"; 
    232                                         $lagetxt=$snam."&nbsp;".$hsnr; 
    233                                 } 
    234                                 echo "\n\t\t<a title='".$lagetitl."' href='alkislage.php?gkz=".$gkz."&amp;gmlid=".$gmllag."&amp;ltyp=".$ltyp; 
    235                                         if ($showkey) {echo "&amp;showkey=j";} 
    236                                         echo "'>"; 
    237                                         if ($showkey) {echo "<span class='key'>(".$skey.")</span>&nbsp;";} 
    238                                 echo $lagetxt."&nbsp;<img src='ico/Lage_mit_Haus.png' width='16' height='16' alt=''></a><br>"; 
    239                         } // Ende Loop Lage m.H. 
    240             pg_free_result($resl); 
    241                         echo "\n\t</td>"; 
    242  
    243                         echo "\n\t<td class='nwlink noprint'>" // Link Haus 
    244                                 ."\n\t\t<a title='Daten zum Geb&auml;ude-Objekt' href='alkishaus.php?gkz=".$gkz."&amp;gmlid=".$ggml; 
    245                                 if ($showkey) {echo "&amp;showkey=j";} 
    246                                 echo "'>Haus&nbsp;<img src='ico/Haus.png' width='16' height='16' alt=''></a>" 
    247                         ."\n\t</td>" 
    248                 ."\n</tr>"; 
    249         } // Ende GebÀude 
    250  
    251         // Footer 
    252         if ($gebnr == 0) { 
    253                 echo "\n</table>" 
    254                 ."<p class='err'><br>Keine Geb&auml;ude auf diesem Flurst&uuml;ck.<br>&nbsp;</p>"; 
    255                 //if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".$sqlg."<br>$1 = gml_id = '".$gmlid."'</p>";} 
    256         } else { 
    257                 echo "\n<tr>" 
    258                         ."\n\t<td>Summe:</td>" 
    259                         ."\n\t<td class='fla sum' title='von Geb&auml;uden &uuml;berbaute Fl&auml;che des Flurst&uuml;cks'>".number_format($gebflsum,0,",",".")."&nbsp;&nbsp;&nbsp;&nbsp;m&#178;</td>" 
    260                         ."\n\t<td colspan='6'>&nbsp;</td>" 
    261                 ."\n</tr>" 
     304} 
     305// Footer GebÀude 
     306if ($gebnr === 0) { 
     307        echo "<p><br>Kein Geb&auml;ude auf diesem Flurst&uuml;ck.<br>&nbsp;</p>"; 
     308        //if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".$sqlg."<br>$1 = gml_id = '".$gmlid."'</p>";} 
     309} else { 
     310        echo "\n<tr>" 
     311                ."\n\t<td>Summe:</td>" 
     312                ."\n\t<td class='fla sum' title='von Geb&auml;uden &uuml;berbaute Fl&auml;che des Flurst&uuml;cks'>".number_format($gebflsum,0,",",".")."&nbsp;&nbsp;&nbsp;&nbsp;m&#178;</td>" 
     313                ."\n\t<td colspan='6'>&nbsp;</td>" 
     314        ."\n</tr>" 
    262315        ."\n</table>"; 
    263316        $unbebaut = number_format(($flstflaeche - $gebflsum),0,",",".") . " m&#178;"; 
     
    265318} 
    266319pg_free_result($resg); 
     320 
     321// B a u w e r k e 
     322 
     323// Konstanten fÃŒr Sortierung und Gruppierung 
     324$btyp_verkehr=1; $btyp_gewaesser=2; $btyp_sonst=3; $btyp_indu=4; $btyp_sport=5; 
     325$btyp_leitg=6; $btyp_trans=7; $btyp_turm=8; $btyp_vorrat=9; 
     326 
     327// Tabllen-Alias, 2stellig. 1. Stelle: f_=FlurstÃŒck, b_=Bauwerk, k_=Key = SchlÃŒsseltabelle. // 2. Stelle: wie Konstante 
     328 
     329// 1 -V e r k e h r 
     330$sqlb="SELECT ".$btyp_verkehr." AS bwtyp, b1.gml_id,  
     331 b1.bauwerksfunktion, k1.beschreibung AS bezeichner, k1.dokumentation AS bfktd, b1.bezeichnung, b1.name, NULL AS gehoertzu,  
     332 round(st_area(b1.wkb_geometry)::numeric,2) AS gebflae, round(st_area(ST_Intersection(b1.wkb_geometry,f1.wkb_geometry))::numeric,2) AS schnittflae,  
     333 st_within(b1.wkb_geometry,f1.wkb_geometry) as drin, GeometryType(b1.wkb_geometry) as bgeotyp  
     334 FROM ax_flurstueck f1  
     335 JOIN ax_bauwerkimverkehrsbereich b1 ON st_intersects(b1.wkb_geometry,f1.wkb_geometry) = true 
     336 LEFT JOIN ax_bauwerksfunktion_bauwerkimverkehrsbereich k1 ON b1.bauwerksfunktion = k1.wert  
     337 WHERE f1.gml_id = $1 AND f1.endet IS NULL AND b1.endet IS NULL "; 
     338// 2 - G e w À s s e r 
     339$sqlb.="UNION 
     340 SELECT ".$btyp_gewaesser." AS bwtyp, b2.gml_id, b2.bauwerksfunktion, ug.beschreibung AS bezeichner, ug.dokumentation AS bfktd,  
     341 b2.bezeichnung, b2.name, NULL AS gehoertzu,  
     342 round(st_area(b2.wkb_geometry)::numeric,2) AS gebflae, round(st_area(ST_Intersection(b2.wkb_geometry,f2.wkb_geometry))::numeric,2) AS schnittflae,  
     343 st_within(b2.wkb_geometry,f2.wkb_geometry) as drin, GeometryType(b2.wkb_geometry) as bgeotyp  
     344 FROM ax_flurstueck f2  
     345 JOIN ax_bauwerkimgewaesserbereich b2 ON st_intersects(b2.wkb_geometry,f2.wkb_geometry) = true 
     346 LEFT JOIN ax_bauwerksfunktion_bauwerkimgewaesserbereich ug ON b2.bauwerksfunktion = ug.wert  
     347 WHERE f2.gml_id = $1 AND f2.endet IS NULL AND b2.endet IS NULL "; 
     348// 3 - S o n s t i g e  Bauwerke 
     349$sqlb.="UNION 
     350 SELECT ".$btyp_sonst." AS bwtyp, b3.gml_id, b3.bauwerksfunktion, k3.beschreibung AS bezeichner, k3.dokumentation AS bfktd,  
     351 b3.bezeichnung, b3.name, b3.gehoertzu,  
     352 round(st_area(b3.wkb_geometry)::numeric,2) AS gebflae, round(st_area(ST_Intersection(b3.wkb_geometry,f3.wkb_geometry))::numeric,2) AS schnittflae,  
     353 st_within(b3.wkb_geometry,f3.wkb_geometry) as drin, GeometryType(b3.wkb_geometry) as bgeotyp  
     354 FROM ax_flurstueck f3  
     355 JOIN ax_sonstigesbauwerkodersonstigeeinrichtung b3 ON st_intersects(b3.wkb_geometry,f3.wkb_geometry) = true 
     356 LEFT JOIN ax_bauwerksfunktion_sonstigesbauwerkodersonstigeeinrichtun k3 ON b3.bauwerksfunktion = k3.wert  
     357 WHERE f3.gml_id = $1 AND f3.endet IS NULL AND b3.endet IS NULL "; 
     358// 4 - Bauwerk oder Anlage fÃŒr  I n d u s t r i e  und Gewerbe 
     359$sqlb.="UNION 
     360 SELECT ".$btyp_indu." AS bwtyp, b4.gml_id, b4.bauwerksfunktion, k4.beschreibung AS bezeichner, k4.dokumentation AS bfktd,  
     361 b4.bezeichnung, b4.name, NULL AS gehoertzu,  
     362 round(st_area(b4.wkb_geometry)::numeric,2) AS gebflae, round(st_area(ST_Intersection(b4.wkb_geometry,f4.wkb_geometry))::numeric,2) AS schnittflae,  
     363 st_within(b4.wkb_geometry,f4.wkb_geometry) as drin, GeometryType(b4.wkb_geometry) as bgeotyp  
     364 FROM ax_flurstueck f4  
     365 JOIN ax_bauwerkoderanlagefuerindustrieundgewerbe b4 ON st_intersects(b4.wkb_geometry,f4.wkb_geometry) = true 
     366 LEFT JOIN ax_bauwerksfunktion_bauwerkoderanlagefuerindustrieundgewer k4 ON b4.bauwerksfunktion = k4.wert  
     367 WHERE f4.gml_id = $1 AND f4.endet IS NULL AND b4.endet IS NULL "; 
     368// 5 - Bauwerk oder Anlage fÃŒr  S p o r t , Freizeit und Erholung 
     369$sqlb.="UNION 
     370 SELECT ".$btyp_sport." AS bwtyp, b5.gml_id, b5.bauwerksfunktion, k5.beschreibung AS bezeichner, k5.dokumentation AS bfktd,  
     371 NULL AS bezeichnung, b5.name, NULL AS gehoertzu,  
     372 round(st_area(b5.wkb_geometry)::numeric,2) AS gebflae, round(st_area(ST_Intersection(b5.wkb_geometry,f5.wkb_geometry))::numeric,2) AS schnittflae,  
     373 st_within(b5.wkb_geometry,f5.wkb_geometry) as drin, GeometryType(b5.wkb_geometry) as bgeotyp  
     374 FROM ax_flurstueck f5  
     375 JOIN ax_bauwerkoderanlagefuersportfreizeitunderholung b5 ON st_intersects(b5.wkb_geometry,f5.wkb_geometry) = true 
     376 LEFT JOIN ax_bauwerksfunktion_bauwerkoderanlagefuersportfreizeitunde k5 ON b5.bauwerksfunktion = k5.wert  
     377 WHERE f5.gml_id = $1 AND f5.endet IS NULL AND b5.endet IS NULL "; 
     378// 6 - L e i t u n g 
     379$sqlb.="UNION 
     380 SELECT ".$btyp_leitg." AS bwtyp, b6.gml_id, b6.bauwerksfunktion, k6.beschreibung AS bezeichner, k6.dokumentation AS bfktd,  
     381 NULL AS bezeichnung, b6.name, NULL AS gehoertzu,  
     382 round(st_area(b6.wkb_geometry)::numeric,2) AS gebflae, round(st_area(ST_Intersection(b6.wkb_geometry,f6.wkb_geometry))::numeric,2) AS schnittflae,  
     383 st_within(b6.wkb_geometry,f6.wkb_geometry) as drin, GeometryType(b6.wkb_geometry) as bgeotyp  
     384 FROM ax_flurstueck f6  
     385 JOIN ax_leitung b6 ON st_intersects(b6.wkb_geometry,f6.wkb_geometry) = true 
     386 LEFT JOIN ax_bauwerksfunktion_leitung k6 ON b6.bauwerksfunktion = k6.wert  
     387 WHERE f6.gml_id = $1 AND f6.endet IS NULL AND b6.endet IS NULL "; 
     388// 7 - T r a n s p o r t a n l a g e 
     389$sqlb.="UNION 
     390 SELECT ".$btyp_trans." AS bwtyp, b7.gml_id, b7.bauwerksfunktion, k7.beschreibung AS bezeichner, k7.dokumentation AS bfktd,  
     391 NULL AS bezeichnung, NULL AS name, NULL AS gehoertzu,  
     392 round(st_area(b7.wkb_geometry)::numeric,2) AS gebflae, round(st_area(ST_Intersection(b7.wkb_geometry,f7.wkb_geometry))::numeric,2) AS schnittflae,  
     393 st_within(b7.wkb_geometry,f7.wkb_geometry) as drin, GeometryType(b7.wkb_geometry) as bgeotyp  
     394 FROM ax_flurstueck f7  
     395 JOIN ax_transportanlage b7 ON st_intersects(b7.wkb_geometry,f7.wkb_geometry) = true 
     396 LEFT JOIN ax_bauwerksfunktion_transportanlage k7 ON b7.bauwerksfunktion = k7.wert  
     397 WHERE f7.gml_id = $1 AND f7.endet IS NULL AND b7.endet IS NULL "; 
     398// 8 - T u r m  (Sonderfall Array) 
     399$sqlb.="UNION 
     400 SELECT ".$btyp_turm." AS bwtyp, b8.gml_id, k8.wert AS bauwerksfunktion, k8.beschreibung AS bezeichner, k8.dokumentation AS bfktd,  
     401 NULL AS bezeichnung, b8.name, NULL AS gehoertzu,  
     402 round(st_area(b8.wkb_geometry)::numeric,2) AS gebflae, round(st_area(ST_Intersection(b8.wkb_geometry,f8.wkb_geometry))::numeric,2) AS schnittflae,  
     403 st_within(b8.wkb_geometry,f8.wkb_geometry) as drin, GeometryType(b8.wkb_geometry) as bgeotyp  
     404 FROM ax_flurstueck f8  
     405 JOIN ax_turm b8 ON st_intersects(b8.wkb_geometry,f8.wkb_geometry) = true 
     406 LEFT JOIN ax_bauwerksfunktion_turm k8 ON k8.wert =ANY(b8.bauwerksfunktion) 
     407 WHERE f8.gml_id = $1 AND f8.endet IS NULL AND b8.endet IS NULL "; 
     408// 9 -  V o r r a t s b e h À l t e r ,  S p e i c h e r b a u w e r k 
     409$sqlb.="UNION 
     410 SELECT ".$btyp_vorrat." AS bwtyp, b9.gml_id, b9.bauwerksfunktion, k9.beschreibung AS bezeichner, k9.dokumentation AS bfktd,  
     411 NULL AS bezeichnung, b9.name, NULL AS gehoertzu,  
     412 round(st_area(b9.wkb_geometry)::numeric,2) AS gebflae, round(st_area(ST_Intersection(b9.wkb_geometry,f9.wkb_geometry))::numeric,2) AS schnittflae,  
     413 st_within(b9.wkb_geometry,f9.wkb_geometry) as drin, GeometryType(b9.wkb_geometry) as bgeotyp  
     414 FROM ax_flurstueck f9  
     415 JOIN ax_vorratsbehaelterspeicherbauwerk b9 ON st_intersects(b9.wkb_geometry,f9.wkb_geometry) = true 
     416 LEFT JOIN ax_bauwerksfunktion_vorratsbehaelterspeicherbauwerk k9 ON b9.bauwerksfunktion = k9.wert  
     417 WHERE f9.gml_id = $1 AND f9.endet IS NULL AND b9.endet IS NULL "; 
     418 
     419// Generell ... 
     420$sqlb.="ORDER BY bwtyp, schnittflae DESC;"; 
     421 
     422$v=array($gmlid); 
     423$resb=pg_prepare("", $sqlb); 
     424$resb=pg_execute("", $v); 
     425if (!$resb) { 
     426        echo "\n<p class='err'>Fehler bei Bauwerke-Verschneidung.</p>"; 
     427        if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".str_replace("$1","'".$gmlid."'",$sqlb)."</p>";} 
     428        if ($debug > 1) {echo "<p class='dbg'>Fehler:".pg_result_error($resb)."</p>";} 
     429} 
     430$baunr=0; // ZÀhler 
     431$bauflsum=0; // FlÀchensumme 
     432$gwbwtyp=0; // Gruppen-Wechsel Bauwerks-Typ 
     433 
     434while($rowb = pg_fetch_assoc($resb)) { 
     435        $baunr++; 
     436        $btyp=$rowb["bwtyp"]; // Tabelle 
     437        $bgml=$rowb["gml_id"]; 
     438        $bauflsum=$bauflsum + $rowb["schnittflae"]; 
     439        $bbez=htmlentities($rowb["bezeichnung"], ENT_QUOTES, "UTF-8"); 
     440        $bfktk=htmlentities($rowb["bauwerksfunktion"], ENT_QUOTES, "UTF-8"); 
     441        $bfktv=htmlentities($rowb["bezeichner"], ENT_QUOTES, "UTF-8"); 
     442        $bfktd=htmlentities($rowb["bfktd"], ENT_QUOTES, "UTF-8"); 
     443        $bnam=htmlentities($rowb["name"], ENT_QUOTES, "UTF-8"); 
     444        $bgeb=$rowb["gehoertzu"]; 
     445        $drin=$rowb["drin"]; 
     446        $bgeotyp=$rowb["bgeotyp"]; 
     447 
     448        // Lage des Bauwerks zum FlurstÃŒck 
     449        if ($bgeotyp === "LINESTRING") { 
     450                if ($drin === "t") { 
     451                        $bstyle="gin"; 
     452                } else { 
     453                        $bstyle="gtl"; 
     454                } 
     455                $f1="&nbsp;"; 
     456                $f2="Linie"; 
     457        } elseif ($bgeotyp === "POINT") { 
     458                if ($drin === "t") { 
     459                        $bstyle="gin"; 
     460                } else { 
     461                        $bstyle="gtl"; 
     462                } 
     463                $f1="&nbsp;"; 
     464                $f2="Punkt";             
     465        } else { // FlÀche / Multi- 
     466                if ($drin === "t") { // komplett IM FlurstÃŒck 
     467                        $f1=$rowb["schnittflae"]." m&#178;"; 
     468                        $f2="&nbsp;"; 
     469                        $bstyle="gin"; // siehe .css 
     470                } else { 
     471                        if ($rowb["schnittflae"] === "0.00") { // nur angrenzend 
     472                                $bstyle="gan"; 
     473                                $f1="&nbsp;"; 
     474                                $f2="angrenzend"; 
     475                        } else { // Teile auf FlurstÃŒck 
     476                                $bstyle="gtl"; 
     477                                $f1=$rowb["schnittflae"]." m&#178;"; 
     478                                $f2="(von ".$rowb["gebflae"]." m&#178;)"; 
     479                        } 
     480                }        
     481        } 
     482 
     483        // Gruppenwechsel Bauwerks-Typ (Quell-Tabelle) - Zwischen-Überschrift 
     484        If ($btyp != $gwbwtyp) { 
     485                $gwbwtyp = $btyp; 
     486                if ($baunr === 1) {bauw_tab_head();} // Tab.-Kopf 
     487                switch ($btyp) { 
     488                        case $btyp_verkehr: 
     489                                $btyptitle='Bauwerk im Verkehrsbereich'; break; 
     490                        case $btyp_gewaesser: 
     491                                $btyptitle='Bauwerk im GewÀsserbereich'; break; 
     492                        case $btyp_sonst:  
     493                                $btyptitle='Sonstiges Bauwerk oder sonstige Einrichtung'; break; 
     494                        case $btyp_indu: 
     495                                $btyptitle="Bauwerk oder Anlage fÃŒr Industrie und Gewerbe"; break; 
     496                        case $btyp_sport: 
     497                                $btyptitle="Bauwerk oder Anlage fÃŒr Sport, Freizeit und Erholung"; break; 
     498                        case $btyp_leitg: 
     499                                $btyptitle="Leitung"; break; 
     500                        case $btyp_trans: 
     501                                $btyptitle="Transportanlage"; break; 
     502                        case $btyp_turm: 
     503                                $btyptitle="Turm"; break; 
     504                        case $btyp_vorrat: 
     505                                $btyptitle="VorratsbehÀlter, Speicherbauwerk"; break; 
     506                        default: 
     507                                $btyptitle='Fehler'; break; 
     508                } 
     509                echo "<tr><td colspan=3></td><td colspan=2 class='gw'>".$btyptitle."</td></tr>"; // ++ Symbol? 
     510        } 
     511 
     512        echo "\n<tr>"; 
     513                echo "\n\t<td>"; 
     514                if ($bbez != "") {echo "<span title='Bezeichnung'>".$bbez."</span> ";} 
     515                if ($bnam != "") {echo "<span title='Name'>".$bnam."</span> ";} 
     516                echo "</td>"; 
     517                echo "\n\t<td class='fla'>".$f1."</td>" 
     518                ."\n\t<td class='".$bstyle."'>".$f2."</td>"; // FlÀchenangaben 
     519                echo "\n\t<td>"; 
     520                if ($showkey) {echo "<span class='key'>(".$bfktk.")</span>&nbsp;";} // Bauwerksfunktion 
     521                echo "<span title='".$bfktd ."'>".$bfktv."</span>"; 
     522                echo "</td>"; 
     523 
     524                // Lage / Haus (nur bei Typ 3 sonstige) 
     525                echo "\n\t<td class='nwlink noprint'>"; // Link 
     526                if ($bgeb != "") { // gehört zu GebÀude 
     527                //      bw_gz_lage($bgeb); // Function: Lage (Adresse) ausgeben 
     528                        echo "\n\t\t<a title='gehört zu' href='alkishaus.php?gkz=".$gkz."&amp;gmlid=".$bgeb; 
     529                        if ($showkey) {echo "&amp;showkey=j";} 
     530                        echo "'>Haus&nbsp;<img src='ico/Haus.png' width='16' height='16' alt=''></a>"; 
     531                } 
     532                echo "\n\t</td>"; 
     533 
     534                // Bauwerk Details 
     535                echo "\n\t<td class='nwlink noprint'>"; // Link 
     536                echo "\n\t\t<a title='Bauwerksdaten' href='alkisbauwerk.php?gkz=".$gkz."&amp;btyp=".$btyp."&amp;gmlid=".$bgml; 
     537                if ($showkey) {echo "&amp;showkey=j";} 
     538                echo "'>Bauwerk&nbsp;<img src='ico/Haus.png' width='16' height='16' alt=''></a>";  // +++ Icon fÃŒr Bauwerk schaffen +++ 
     539                echo "\n\t</td>" 
     540        ."\n</tr>"; 
     541} 
     542 
     543// Footer Bauwerk 
     544if ($baunr === 0) { 
     545        echo "\n<p>Kein Bauwerk auf diesem Flurst&uuml;ck.</p><br>"; 
     546        // if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".$sqlb."<br>$1 = gml_id = '".$gmlid."'</p>";} 
     547} else { 
     548        echo "\n<tr>" 
     549                ."\n\t<td>Summe:</td>" 
     550                ."\n\t<td class='fla sum' title='von Bauwerken &uuml;berbaute Fl&auml;che des Flurst&uuml;cks'>".number_format($bauflsum,0,",",".")."&nbsp;&nbsp;&nbsp;&nbsp;m&#178;</td>" 
     551                ."\n\t<td colspan='6'>&nbsp;</td>" 
     552        ."\n</tr>" 
     553        ."\n</table>\n"; 
     554} 
     555pg_free_result($resb); 
    267556?> 
    268557  
     
    273562</div> 
    274563 
    275 <?php footer($gmlid, $_SERVER['PHP_SELF']."?", ""); ?> 
     564<?php footer($gmlid, selbstverlinkung()."?", ""); ?> 
    276565 
    277566</body> 
  • trunk/info/info/alkisn/alkisgsnw.php

    r412 r422  
    88        2018-05-03 Neues Modul "gsnw" abgeleitet aus "fsnw" 
    99        2018-11-09 Umstellung Full-Schema 
     10        2020-02-20 Authentifizierung ausgelagert in Function darf_ich() 
     11        2020-12-03 function selbstverlinkung() statt $_SERVER['PHP_SELF'] 
     12        2020-12-15 Input-Validation und Strict Comparisation (===) 
     13 
     14++ ToDo: Den Fall berÃŒcksichtigen, dass die Buchung vorhanden ist, aber das GB nicht (ModellschwÀche). Meldungen ausgeben. 
    1015*/ 
    1116 
     
    1722        $sqlgs="SELECT s.gml_id, b.bezirk, b.buchungsblattnummermitbuchstabenerweiterung AS blatt, s.laufendenummer, s.buchungsart " 
    1823                ."FROM ax_buchungsstelle s JOIN ax_buchungsblatt b ON s.istbestandteilvon=b.gml_id "; 
     24        // Falls das Buchungsblatt fehlt (ModellschwÀche) wÀre ein LEFT JOIN hier nÃŒtzlich. Das Fehlen aber kontrollieren! ++ 
     25 
    1926        if ($gskennz == '') { // normaler Link ÃŒber gmlid 
    2027                $sqlgs.="WHERE s.gml_id= $1 "; 
     
    2330                $arr=explode("-", $gskennz, 4); // zerlegen 
    2431                $zbez=trim($arr[0]); // Bezirk 
    25                 if (strlen($zbez) == 6) { 
     32                if (strlen($zbez) === 6) { 
    2633                        $land=substr($zbez, 0, 2); 
    2734                        $zbez=substr($zbez, 2, 4); 
     
    7380                $gmlid_d=$rowd["gml_id"]; 
    7481        } 
    75         if ($cntd == 0) { // KEINE dienende BS 
     82        if ($cntd === 0) { // KEINE dienende BS 
    7683                $gmlid_d=""; 
    7784        } elseif ($cntd > 1) { // Problem: mehrere dienende BS 
     
    93100        $gd=$gh; // dienend 
    94101        $gr=$gd; // root 
    95         //$steps=0; // wie oft? 
    96102        while($gd != "") { 
    97                 //$steps++; 
    98103                $gr=$gd; // sichern 
    99104                $gd=bs_dienend($gh); // an? 
    100105                $gh=$gd; // fuer weitere Loop 
    101106        } 
    102         //$steps=$steps -1; // erfolgreiche Suchen 
    103107        return $gr; 
    104108} 
    105109 
     110// H i e r   S t a r t 
     111ini_set("session.cookie_httponly", 1); 
    106112session_start(); 
    107113$showkey="n"; $nodebug=""; 
     
    118124        } else { 
    119125                $gskennz=''; 
    120         } 
    121 } 
    122 if (!isset($gkz) or !preg_match('#^[0-9]{3}$#', $gkz)) {die("Eingabefehler gkz");} 
     126                die("Fehlender Parameter"); 
     127        } 
     128} 
     129if (isset($gkz)) { 
     130        if (!preg_match('#^[0-9]{3}$#', $gkz)) {die("Eingabefehler gkz");} 
     131} else { 
     132        die("Fehlender Parameter"); 
     133} 
    123134if (!preg_match('#^[j|n]{0,1}$#', $showkey)) {die ("Eingabefehler showkey");} 
    124 if ($showkey == "j") {$showkey=true;} else {$showkey=false;} 
     135if ($showkey === "j") {$showkey=true;} else {$showkey=false;} 
    125136if (!preg_match('#^j{0,1}$#', $nodebug)) {die("Eingabefehler nodebug");} 
    126137 
    127 require_once("alkis_conf_location.php"); 
    128 if ($auth == "mapbender") {require_once($mapbender);} 
    129 include("alkisfkt.php"); 
     138include "alkis_conf_location.php"; 
     139include "alkisfkt.php"; 
    130140?> 
    131141<!doctype html> 
     
    145155<body> 
    146156<?php 
    147 if ($nodebug == "j") {$debug=0;}  
     157$erlaubnis = darf_ich(); if ($erlaubnis === 0) { die('<p class="stop1">Abbruch</p></body>'); } 
     158 
     159if ($nodebug === "j") {$debug=0;}  
    148160$con = pg_connect($dbconn." options='--application_name=ALKIS-Auskunft_alkisgsnw.php'"); 
    149161if (!$con) echo "\n<p class='err'>Fehler beim Verbinden der DB</p>"; 
     
    163175        } 
    164176} 
    165 echo "<p class='gskennz'>ALKIS Grundst&uuml;ck ".$gsbez."-".rtrim($gsblatt)."-".$gslfdnr."&nbsp;</p>\n\n<h2>Grundst&uuml;ck</h2>"; // Balken 
     177echo "<p class='balken gskennz'>ALKIS Grundst&uuml;ck ".$gsbez."-".rtrim($gsblatt)."-".$gslfdnr."&nbsp;</p>\n\n<h2>Grundst&uuml;ck</h2>"; // Balken 
    166178 
    167179if ($gerooted) { 
     
    176188                ."\n\t<td class='head nwlink noprint' title='Verlinkung zu anderen Nachweis-Arten und verbundenen Objekten'>weitere Auskunft</td>" 
    177189        ."\n</tr>"; 
    178         //+++ Lage oder Nutzung zum FS in eine zus. Spalte oder Zeile? 
    179         //+++ Tabelle hat noch Platz, SQL in der Loop oder Subquery wÀre möglich, weil i.d.R. nur wenige FS je GS gebucht sind. 
     190        //++ Lage oder Nutzung zum FS in eine zus. Spalte oder Zeile? 
     191        //++ Tabelle hat noch Platz, SQL in der Loop oder Subquery wÀre möglich, weil i.d.R. nur wenige FS je GS gebucht sind. 
    180192 
    181193        $sqlfs="SELECT g.gemarkungsnummer, g.bezeichnung, f.gml_id, f.flurnummer, f.zaehler, f.nenner, f.amtlicheflaeche  
    182194        FROM ax_flurstueck f LEFT JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer  
    183195        WHERE f.istgebucht = $1 AND f.endet IS NULL AND g.endet IS NULL "; 
    184         if ($filtgem == '' ) { // ungefiltert 
     196        if ($filtgem === '' ) { // ungefiltert 
    185197                $v=array($gmlid); 
    186198        } else { 
     
    222234        } 
    223235        pg_free_result($resfs); 
    224         if ($j == 0) {echo "\n<tr class='unp'>\n\t<td colspan='5'><p class='warn'>Keine Flurst&uuml;cke im berechtigten Bereich.</p></td>\n</tr>";} 
     236        if ($j === 0) {echo "\n<tr class='unp'>\n\t<td colspan='5'><p class='warn'>Keine Flurst&uuml;cke im berechtigten Bereich.</p></td>\n</tr>";} 
    225237        echo "\n</table>"; 
    226238} else { // konnte nicht bis zur Basis aufsteigen 
     
    236248echo "\n<table class='outer'>"; 
    237249        $stufe=1; 
    238         $gezeigt=buchung_anzg($gmlid, "j", false, "", 2); 
     250        $gezeigt = buchung_anzg($gmlid, "j", false, "", 2); 
    239251        $anzber=ber_bs_zaehl($gmlid); 
    240252        $verf_next = array($gmlid); 
     
    257269        } 
    258270echo "\n</table>\n\n"; 
     271//if ($debug > 1) {echo "<p class='dbg'>Buchung gezeigt = ".$gezeigt."</p>";} 
    259272 
    260273pg_close($con); 
     
    272285echo "&nbsp;\n</div>"; 
    273286 
    274 footer($gmlid, $_SERVER['PHP_SELF']."?", ""); 
     287footer($gmlid, selbstverlinkung()."?", ""); 
    275288?> 
    276289</body> 
  • trunk/info/info/alkisn/alkishaus.php

    r412 r422  
    55        Version: 
    66        2016-02-24 Version fuer norGIS-ALKIS-Import 
    7         2016-11-29 HTML5, Gemeinsam genutzte Datenbanken ermöglichen 
    8         2016-12-05 Array-Behandlung ax_gebaeude.name 
    9         2017-06-08 Validierung Eingabeparameter, Feinkorrekturen 
    10         2017-06-09 Tool-Tip GebÀudefunktion, ErklÀrung 2 getrennte p.Styles 
    11         2017-10-09 Sauber filtern auf endet IS NULL 
    12         2018-04-23 &nodebug 
    13         2018-11-09 Umstellung Full-Schema 
    14  
    15         ToDo: 
    16         - Die im Modul 'Lage' als Tooltip vorhandene lange Beschreibung der GebÀude-Funktion (Inhalt) hier auch anzeigen. 
    17         - sinnvolle Sortierung und Gruppierung der Felder 
    18         - geometrische Suche nach FS, auf denen das Haus steht 
     7        .... 
     8        2020-12-01 Darstellung der Datenerhebung, Klammern um SchlÃŒsselwerte 
     9        2020-12-02 Verschnitt GebÀude / FlurstÃŒcke 
     10        2020-12-03 function selbstverlinkung() statt $_SERVER['PHP_SELF'] 
     11        2020-12-15 Input-Validation und Strict Comparisation (===) 
     12ToDo: 
    1913        - Template im WMS auf Ebene GebÀude hierhin verknÃŒpfen. 
    20         - Relationen abbilden: 
    21                 ax_gebaeude >gehoertZu> ax_gebaeude  (ringförmige Verbindung GebÀudekomplex) 
    22                 ax_gebaeude (umschliesst) ax_bauteil 
    23                 ax_gebaeude >gehoert> ax_person (Ausnahme) 
    2414*/ 
     15ini_set("session.cookie_httponly", 1); 
    2516session_start(); 
    2617$allfld = "n"; $showkey="n"; $nodebug=""; // Var. aus Parameter initalisieren 
     
    2819 
    2920// strikte Validierung aller Parameter 
    30 if (!isset($gmlid) or !preg_match('#^[0-9A-Za-z]{16}$#', $gmlid)) {die("Eingabefehler gmlid");} 
    31 if (!isset($gkz) or !preg_match('#^[0-9]{3}$#', $gkz)) {die("Eingabefehler gkz");} 
     21if (isset($gmlid)) { 
     22        if (!preg_match('#^[0-9A-Za-z]{16}$#', $gmlid)) {die("Eingabefehler gmlid");} 
     23} else { 
     24        die("Fehlender Parameter"); 
     25} 
     26if (isset($gkz)) { 
     27        if (!preg_match('#^[0-9]{3}$#', $gkz)) {die("Eingabefehler gkz");} 
     28} else { 
     29        die("Fehlender Parameter"); 
     30} 
    3231if (!preg_match('#^[j|n]{0,1}$#', $showkey)) {die ("Eingabefehler showkey");} 
    33 if ($showkey == "j") {$showkey=true;} else {$showkey=false;} 
     32if ($showkey === "j") {$showkey=true;} else {$showkey=false;} 
    3433if (!preg_match('#^[j|n]{0,1}$#', $allfld)) {die ("Eingabefehler allfld");} 
    35 if ($allfld == "j") {$allefelder=true;} else {$allefelder=false;} 
     34if ($allfld === "j") {$allefelder=true;} else {$allefelder=false;} 
    3635if (!preg_match('#^j{0,1}$#', $nodebug)) {die("Eingabefehler nodebug");} 
    3736 
    38 require_once("alkis_conf_location.php"); 
    39 if ($auth == "mapbender") {require_once($mapbender);} 
    40 include("alkisfkt.php"); 
     37include "alkis_conf_location.php"; 
     38include "alkisfkt.php"; 
     39 
    4140echo <<<END 
    4241<!doctype html> 
     
    5251<body> 
    5352END; 
     53 
     54$erlaubnis = darf_ich(); if ($erlaubnis === 0) { die('<p class="stop1">Abbruch</p></body>'); } 
     55 
    5456// Mit URL-Parameter "&nodebug=j" kann man die Entwicklungsumgebung (in Conf definiert) ausschalten. 
    5557// Manuell an die URL anfÃŒgen, wirkt nur temporÀr und wird nicht in Links weiter gereicht. 
    56 if ($nodebug == "j") {$debug=0;}  
     58if ($nodebug === "j") {$debug=0;}  
    5759 
    5860$con = pg_connect($dbconn." options='--application_name=ALKIS-Auskunft_alkishaus.php'"); 
     
    8587 
    8688// Balken 
    87 echo "\n<p class='geb'>ALKIS Haus ".$gmlid."&nbsp;</p>"; // ++ Kennzeichen? 
    88 echo "\n<h2><img src='ico/Haus.png' width='16' height='16' alt=''> Haus (Geb&auml;ude)</h2>"; 
    89  
    90 // Kennzeichen in Rahmen  
    91 // - Welches Kennzeichen zum Haus ? 
    92 echo "\n<hr>"; 
    93 // Umschalter: auch leere Felder ausgeben? 
    94 echo "<p class='nwlink noprint'>"; 
    95 echo "Umschalten: <a class='nwlink' href='".$_SERVER['PHP_SELF']."?gkz=".$gkz."&amp;gmlid=".$gmlid; 
     89echo "\n<p class='balken geb'>ALKIS Haus ".$gmlid."&nbsp;</p>"; 
     90echo "\n<h2><img src='ico/Haus.png' width='16' height='16' alt=''> Haus (Geb&auml;ude)</h2>\n<hr>"; 
     91 
     92echo "<p class='nwlink noprint'>"; // Umschalter: auch leere Felder 
     93echo "Umschalten: <a class='nwlink' href='".selbstverlinkung()."?gkz=".$gkz."&amp;gmlid=".$gmlid; 
    9694        if ($showkey) {echo "&amp;showkey=j";} else {echo "&amp;showkey=n";} 
    9795        if ($allefelder) { 
     
    102100echo "</a></p>"; 
    103101 
    104 $gebnr = 0; 
    105  
    106 while($rowg = pg_fetch_assoc($resg)) { // Schleife, kann aber nur EIN Haus sein. 
    107         $gebnr++; 
    108         echo "\n<table class='geb'>" 
    109         ."\n<tr>\n" 
    110                 ."\n\t<td class='head' title=''>Attribut</td>" 
    111                 ."\n\t<td class='head mittelspalte' title=''>Wert</td>" 
    112                 ."\n\t<td class='head' title=''>" 
    113                         ."\n\t\t<p class='erklk'>Erkl&auml;rung Kategorie</p>" 
    114                         ."\n\t\t<p class='erkli'>Erkl&auml;rung Inhalt</p>" 
    115                 ."\n\t</td>" 
    116         ."\n</tr>"; 
    117  
    118         $aog=$rowg["aog"]; 
    119         $aug=$rowg["aug"]; 
    120         $hoh=$rowg["hochhaus"]; 
    121         $nam=trim(trim($rowg["name"], "{}"), '"'); // Gebaeude-Name ist ein Array in der DB: '{"A","B"}' 
    122         // Mehrfachbelegung nur theoretisch. Entklammern reicht. Mal mit und mal ohne "" drum !? 
    123         /* SELECT name FROM ax_gebaeude WHERE NOT name IS NULL AND array_length(name, 1) > 1; */ 
    124         $kfunk=$rowg["gebaeudefunktion"]; 
    125         $bfunk=$rowg["bfunk"]; 
    126         $dfunk=$rowg["dfunk"]; 
    127  
    128         $baw=$rowg["bauweise"]; 
    129         $bbauw=$rowg["bbauw"]; 
    130         $dbauw=$rowg["dbauw"]; 
    131  
    132         $ofl=$rowg["lagezurerdoberflaeche"]; 
    133         $oflv=$rowg["oflv"]; 
    134         $ofld=$rowg["ofld"]; 
    135  
    136         $dga=$rowg["dachgeschossausbau"]; // Key 
    137         $dgav=$rowg["dgaus"]; // Value 
    138  
    139         $zus=$rowg["zustand"]; // Key 
    140         $zusv=$rowg["zustandv"]; // Value 
    141         $zusd=$rowg["zustandd"]; // Description 
    142  
    143         $wgf=$rowg["wgf"]; // Array-> kommagetrennte Liste 
    144  
    145         $daf=$rowg["dachform"]; // Key 
    146         $dach=$rowg["bdach"]; // Value 
    147  
    148         $hho=$rowg["objekthoehe"]; 
    149         $gfl=$rowg["geschossflaeche"]; 
    150         $grf=$rowg["grundflaeche"]; 
    151         $ura=$rowg["umbauterraum"]; 
    152         $bja=$rowg["baujahr"]; 
    153         $daa=$rowg["dachart"]; 
    154 //      $qag=$rowg["qualitaetsangaben"]; 
    155  
    156         if (($nam != "") OR $allefelder) { 
     102if (!($rowg = pg_fetch_assoc($resg))) { 
     103        echo "\n<p class='err'><br>Kein Geb&auml;ude gefunden</p>"; 
     104        die ("Abbruch"); 
     105} 
     106 
     107echo "\n<table class='geb'>" 
     108."\n<tr>\n" 
     109        ."\n\t<td class='head' title=''>Attribut</td>" 
     110        ."\n\t<td class='head mittelspalte' title=''>Wert</td>" 
     111        ."\n\t<td class='head' title=''>" 
     112                ."\n\t\t<p class='erklk'>Erkl&auml;rung Kategorie</p>" 
     113                ."\n\t\t<p class='erkli'>Erkl&auml;rung Inhalt</p>" 
     114        ."\n\t</td>" 
     115."\n</tr>"; 
     116 
     117$aog=$rowg["aog"]; 
     118$aug=$rowg["aug"]; 
     119$hoh=$rowg["hochhaus"]; 
     120$nam=trim(trim($rowg["name"], "{}"), '"'); // Gebaeude-Name ist ein Array. 
     121// Mehrfachbelegung theoretisch. Entklammern reicht. Mal mit und mal ohne "" drum. 
     122$kfunk=$rowg["gebaeudefunktion"]; 
     123$bfunk=$rowg["bfunk"]; 
     124$dfunk=$rowg["dfunk"]; 
     125 
     126$baw=$rowg["bauweise"]; 
     127$bbauw=$rowg["bbauw"]; 
     128$dbauw=$rowg["dbauw"]; 
     129 
     130$ofl=$rowg["lagezurerdoberflaeche"]; 
     131$oflv=$rowg["oflv"]; 
     132$ofld=$rowg["ofld"]; 
     133 
     134$dga=$rowg["dachgeschossausbau"]; // Key 
     135$dgav=$rowg["dgaus"];           // Value 
     136 
     137$zus=$rowg["zustand"];          // Key 
     138$zusv=$rowg["zustandv"];        // Value 
     139$zusd=$rowg["zustandd"];        // Description 
     140 
     141$wgf=$rowg["wgf"];                      // Array-> kommagetr. Liste 
     142 
     143$daf=$rowg["dachform"];         // Key 
     144$dach=$rowg["bdach"];           // Value 
     145 
     146$hho=$rowg["objekthoehe"]; 
     147$gfl=$rowg["geschossflaeche"]; 
     148$grf=$rowg["grundflaeche"]; 
     149$ura=$rowg["umbauterraum"]; 
     150$bja=$rowg["baujahr"]; 
     151$daa=$rowg["dachart"]; 
     152 
     153if (($nam != "") OR $allefelder) { 
     154        echo "\n<tr>" 
     155                ."\n\t<td class='li'>Name</td>" 
     156                ."\n\t<td>".$nam."</td>" 
     157                ."\n\t<td>" 
     158                        ."\n\t\t<p class='erklk'>'Name' ist der Eigenname oder die Bezeichnung des Geb&auml;udes." 
     159                ."\n\t</td>" 
     160        ."\n</tr>"; 
     161} 
     162 
     163// 0 bis N   L a g e bezeichnungen mit Haus- oder Pseudo-Nummer 
     164 
     165// HAUPTgebÀude 
     166$sqll ="SELECT 'm' AS ltyp, lh.gml_id AS gmllag, sh.lage, sh.bezeichnung, lh.hausnummer, '' AS laufendenummer FROM ax_gebaeude gh 
     167JOIN ax_lagebezeichnungmithausnummer lh ON lh.gml_id=ANY(gh.zeigtauf) 
     168JOIN ax_lagebezeichnungkatalogeintrag sh ON lh.kreis=sh.kreis AND lh.gemeinde=sh.gemeinde AND lh.lage=sh.lage 
     169WHERE gh.gml_id= $1 AND gh.endet IS NULL AND lh.endet IS NULL AND sh.endet IS NULL"; 
     170// oder NEBENgebÀude 
     171$sqll.=" UNION  
     172SELECT 'p' AS ltyp, ln.gml_id AS gmllag, sn.lage, sn.bezeichnung, ln.pseudonummer AS hausnummer, ln.laufendenummer 
     173FROM ax_gebaeude gn 
     174JOIN ax_lagebezeichnungmitpseudonummer ln ON ln.gml_id=gn.hat 
     175JOIN ax_lagebezeichnungkatalogeintrag sn ON ln.kreis=sn.kreis AND ln.gemeinde=sn.gemeinde AND ln.lage=sn.lage 
     176WHERE gn.gml_id= $1 AND gn.endet IS NULL AND ln.endet IS NULL AND sn.endet IS NULL "; 
     177 
     178$sqll.="ORDER BY bezeichnung, hausnummer ;"; 
     179 
     180$v = array($gmlid); 
     181$resl = pg_prepare("", $sqll); 
     182$resl = pg_execute("", $v); 
     183if (!$resl) { 
     184        echo "\n<p class='err'>Fehler bei Lage mit HsNr.</p>"; 
     185        if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".$sqll."<br>$1 = gml_id = '".$gmlid."'</p>";} 
     186} 
     187$zhsnr=0; 
     188while($rowl = pg_fetch_assoc($resl)) { // LOOP: Lagezeilen 
     189        $zhsnr++; 
     190        $ltyp=$rowl["ltyp"]; // Lagezeilen-Typ 
     191        $skey=$rowl["lage"]; // Str.-Schluessel 
     192        $snam=htmlentities($rowl["bezeichnung"], ENT_QUOTES, "UTF-8"); // -Name 
     193        $hsnr=$rowl["hausnummer"]; 
     194        $hlfd=$rowl["laufendenummer"]; 
     195        $gmllag=$rowl["gmllag"]; 
     196 
     197        if ($zhsnr === 1) { 
    157198                echo "\n<tr>" 
    158                         ."\n\t<td class='li'>Name</td>" 
    159                         ."\n\t<td>".$nam."</td>" 
     199                        ."\n\t<td class='li' title='Lage mit Hausnummer oder Pseudonummer'>Adresse</td>" 
     200                        ."\n\t<td class='fett'>"; 
     201        } 
     202        echo "\n\t\t<img src='ico/Lage_mit_Haus.png' width='16' height='16' alt=''>&nbsp;"; 
     203        if ($showkey) {echo "<span class='key'>(".$skey.")</span>&nbsp;";}                       
     204        echo "\n\t\t<a title='Hausnummer' href='alkislage.php?gkz=".$gkz."&amp;gmlid=".$gmllag."&amp;ltyp=".$ltyp; 
     205                if ($showkey) {echo "&amp;showkey=j";} 
     206                echo "'>".$snam."&nbsp;".$hsnr; 
     207                if ($ltyp === "p") {echo ", lfd.Nr ".$hlfd;} 
     208        echo "</a><br>"; 
     209} // Ende Loop Lagezeilen m.H. 
     210if ($zhsnr > 0) {echo "\n\t</td>\n\t<td>&nbsp;</td>\n</tr>";} 
     211pg_free_result($resl); 
     212 
     213// GebÀudefunktion 
     214echo "\n<tr>" 
     215        ."\n\t<td class='li'>Geb&auml;udefunktion</td>" 
     216        ."\n\t<td class='fett'>"; 
     217        if ($showkey and $kfunk != '') {echo "<span class='key'>(".$kfunk.")</span>&nbsp;";} 
     218        echo $bfunk."</td>" 
     219        ."\n\t<td>" 
     220                ."\n\t\t<p class='erklk'>'Geb&auml;udefunktion' ist die zum Zeitpunkt der Erhebung vorherrschend funktionale Bedeutung des Geb&auml;udes'</p>" 
     221                ."\n\t\t<p class='erkli'>".$dfunk."</p>" 
     222        ."</td>" 
     223."\n</tr>"; 
     224 
     225// Bauweise 
     226if ($baw != "" OR $allefelder) { 
     227        echo "\n<tr>" 
     228                ."\n\t<td class='li'>Bauweise</td>" 
     229                ."\n\t<td class='fett'>"; 
     230                if ($showkey and $baw != '') {echo "<span class='key'>(".$baw.")</span>&nbsp;";} 
     231                echo $bbauw."</td>" 
     232                ."\n\t<td>" 
     233                        ."\n\t\t<p class='erklk'>'Bauweise' ist die Beschreibung der Art der Bauweise.</p>" 
     234                        ."\n\t\t<p class='erkli'>".$dbauw."</p>" 
     235                ."\n\t</td>" 
     236        ."\n</tr>"; 
     237} 
     238 
     239// Geschosse 
     240if ($aog != "" OR $allefelder) { 
     241        echo "\n<tr>" 
     242                ."\n\t<td class='li'>Geschosse</td>" 
     243                ."\n\t<td class='fett'>".$aog."</td>" 
     244                ."\n\t<td>" 
     245                        ."\n\t\t<p class='erklk'>Anzahl oberirdischer Geschosse.</p>" 
     246                ."\n\t</td>" 
     247        ."\n</tr>"; 
     248} 
     249 
     250// U-Geschosse 
     251if ($aug != "" OR $allefelder) { 
     252        echo "\n<tr>" 
     253                ."\n\t<td class='li'>U-Geschosse</td>" 
     254                . "\n\t<td class='fett'>".$aug."</td>" 
     255                ."\n\t<td>" 
     256                        ."\n\t\t<p class='erklk'>Anzahl unterirdischer Geschosse.</p>" 
     257                ."\n\t</td>" 
     258        ."\n</tr>"; 
     259} 
     260 
     261// Hochhaus 
     262if ($hoh != "" OR $allefelder) { 
     263        echo "\n<tr>" 
     264                ."\n\t<td class='li'>Hochhaus</td>" 
     265                ."\n\t<td class='fett'>".$hoh."</td>" 
     266                ."\n\t<td>" 
     267                        ."\n\t\t<p class='erklk'>'Hochhaus' ist ein Geb&auml;ude, das nach Geb&auml;udeh&ouml;he und Auspr&auml;gung als Hochhaus zu bezeichnen ist. F&uuml;r Geb&auml;ude im Geschossbau gilt dieses i.d.R. ab 8 oberirdischen Geschossen, f&uuml;r andere Geb&auml;ude ab einer Geb&auml;udeh&ouml;he von 22 m." 
     268                ."\n\t</td>" 
     269        ."\n</tr>"; 
     270} 
     271 
     272// Lage zur ErdoberflÀche 
     273if ($ofl != "" OR $allefelder) { 
     274        echo "\n<tr>" 
     275                ."\n\t<td class='li'>Lage zur Erdoberfl&auml;che</td>" 
     276                ."\n\t<td class='fett'>"; 
     277                if ($showkey and $ofl != '') {echo "<span class='key'>(".$ofl.")</span>&nbsp;";} 
     278                echo $oflv."</td>" 
     279                ."\n\t<td>" 
     280                        ."\n\t\t<p class='erklk'>'Lage zur Erdoberfl&auml;che' ist die Angabe der relativen Lage des Geb&auml;udes zur Erdoberfl&auml;che. Diese Attributart wird nur bei nicht ebenerdigen Geb&auml;uden gef&uuml;hrt.<br>" 
     281                        ."\n\t\t<p class='erkli'>".$ofld."</p>" 
     282                ."\n\t</td>" 
     283        ."\n</tr>"; 
     284} 
     285 
     286// Dachgeschossausbau, Spalte dokumentation ist immer leer 
     287if ($dga != "" OR $allefelder) { 
     288        echo "\n<tr>" 
     289                ."\n\t<td class='li'>Dachgeschossausbau</td>" 
     290                ."\n\t<td class='fett'>"; 
     291                if ($showkey and $dga != '') {echo "<span class='key'>(".$dga.")</span>&nbsp;";} 
     292                echo $dgav."</td>" 
     293                ."\n\t<td>" 
     294                        ."\n\t\t<p class='erklk'>'Dachgeschossausbau' ist ein Hinweis auf den Ausbau bzw. die Ausbauf&auml;higkeit des Dachgeschosses." 
     295                ."\n\t</td>" 
     296        ."\n</tr>"; 
     297} 
     298 
     299// Zustand 
     300if ($zus != "" OR $allefelder) { 
     301        echo "\n<tr>" 
     302                ."\n\t<td class='li'>Zustand</td>" 
     303                ."\n\t<td class='fett'>"; 
     304                if ($showkey and $zus != '') {echo "<span class='key'>(".$zus.")</span>&nbsp;";} 
     305                echo $zusv."</td>" 
     306                ."\n\t<td>" 
     307                        ."\n\t\t<p class='erklk'>'Zustand' beschreibt die Beschaffenheit oder die Betriebsbereitschaft von 'Geb&auml;ude'. Diese Attributart wird nur dann optional gef&uuml;hrt, wenn der Zustand des Geb&auml;udes vom nutzungsf&auml;higen Zustand abweicht.</p>" 
     308                        ."\n\t\t<p class='erkli'>".$zusd."</p>" 
     309                ."\n\t</td>" 
     310        ."\n</tr>"; 
     311} 
     312 
     313// Weitere GebÀudefunktionen 
     314// Suche Testfall: SELECT gml_id, gebaeudefunktion, weiteregebaeudefunktion FROM ax_gebaeude WHERE (NOT weiteregebaeudefunktion IS NULL) AND cardinality(weiteregebaeudefunktion) > 1 liMIT 10; 
     315if ($wgf != "" OR $allefelder) { // ... ist ein Array 
     316        echo "\n<tr>" 
     317                ."\n\t<td class='li'>Weitere Geb&auml;udefunktionen</td>" 
     318                ."\n\t<td>"; 
     319                if ($wgf != "") { // Kommagetrennte Liste aus Array 
     320                        $sqlw="SELECT wert, beschreibung, dokumentation FROM ax_gebaeudefunktion WHERE wert IN ( $1 ) ORDER BY wert;"; 
     321                        $v = array($wgf); 
     322                        $resw = pg_prepare("", $sqlw); 
     323                        $resw = pg_execute("", $v); 
     324                        if (!$resw) { 
     325                                echo "\n<p class='err'>Fehler bei Geb&auml;ude - weitere Funktion.</p>"; 
     326                                if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".$sqlw."<br>$1 = Werteliste = '".$wgf."'</p>";} 
     327                        } 
     328                        $zw=0; 
     329                        while($roww = pg_fetch_assoc($resw)) { // LOOP Funktion 
     330                                if ($zw > 0) {echo "<br>";} 
     331                                if ($showkey and $roww["wert"] != '') {echo "<span class='key'>(".$roww["wert"].")</span>&nbsp;";} 
     332                                echo "<span title='".$roww["dokumentation"]."'>".$roww["beschreibung"]."</span>"; 
     333                                $zw++; 
     334                   } 
     335                   pg_free_result($resw); 
     336                } 
     337                echo "</td>" 
     338                ."\n\t<td>" 
     339                        ."\n\t\t<p class='erklk'>'Weitere Geb&auml;udefunktion' ist die Funktion, die ein Geb&auml;ude neben der dominierenden Geb&auml;udefunktion hat." 
     340                ."\n\t</td>" 
     341        ."\n</tr>"; 
     342} 
     343 
     344// Dachform, Spalte dokumentation ist immer leer 
     345if ($daf != "" OR $allefelder) { 
     346        echo "\n<tr>" 
     347                ."\n\t<td class='li'>Dachform</td>" 
     348                ."\n\t<td class='fett'>"; 
     349                if ($showkey and $daf != '') {echo "<span class='key'>(".$daf.")</span>&nbsp;";} 
     350                echo $dach."</td>" 
     351                ."\n\t<td>" 
     352                        ."\n\t\t<p class='erklk'>'Dachform' beschreibt die charakteristische Form des Daches." 
     353                ."\n\t</td>" 
     354        ."\n</tr>"; 
     355} 
     356 
     357// Objekthöhe 
     358if ($hho != "" OR $allefelder) { 
     359        echo "\n<tr>" 
     360                ."\n\t<td class='li'>Objekth&ouml;he</td>" 
     361                ."\n\t<td class='fett'>".$hho."</td>" 
     362                ."\n\t<td>" 
     363                        ."\n\t\t<p class='erklk'>'Objekth&ouml;he' ist die H&ouml;hendifferenz in [m] zwischen dem h&ouml;chsten Punkt der Dachkonstruktion und der festgelegten Gel&auml;ndeoberfl&auml;che des Geb&auml;udes." 
     364                ."\n\t</td>" 
     365        ."\n</tr>"; 
     366} 
     367 
     368// GeschossflÀche 
     369if ($gfl != "" OR $allefelder) { 
     370        echo "\n<tr>" 
     371                ."\n\t<td class='li'>Geschossfl&auml;che</td>" 
     372                ."\n\t<td class='fett'>"; 
     373                if ($gfl != "") {echo $gfl." m&#178;";} 
     374                echo "</td>" 
     375                ."\n\t<td>" 
     376                        ."\n\t\t<p class='erklk'>'Geschossfl&auml;che' ist die Geb&auml;udegeschossfl&auml;che in [qm]." 
     377                ."\n\t</td>" 
     378        ."\n</tr>"; 
     379} 
     380 
     381// GrundflÀche 
     382if ($grf != "" OR $allefelder) { 
     383        echo "\n<tr>" 
     384                ."\n\t<td class='li'>Grundfl&auml;che</td>" 
     385                ."\n\t<td class='fett'>"; 
     386                if ($grf != "") {echo $grf." m&#178;";} 
     387                echo "\n\t<td>" 
     388                        ."\n\t\t<p class='erklk'>'Grundfl&auml;che' ist die Geb&auml;udegrundfl&auml;che in [qm]." 
     389                ."\n\t</td>" 
     390        ."\n</tr>"; 
     391} 
     392 
     393// Umbauter Raum 
     394if ($ura != "" OR $allefelder) { 
     395        echo "\n<tr>" 
     396                ."\n\t<td class='li'>Umbauter Raum</td>" 
     397                ."\n\t<td class='fett'>".$ura."</td>" 
     398                ."\n\t<td>" 
     399                        ."\n\t\t<p class='erklk'>'Umbauter Raum' ist der umbaute Raum [Kubikmeter] des Geb&auml;udes." 
     400                ."\n\t</td>" 
     401        ."\n</tr>"; 
     402} 
     403 
     404// Baujahr 
     405if ($bja != "" OR $allefelder) { 
     406        echo "\n<tr>" 
     407                ."\n\t<td class='li'>Baujahr</td>" 
     408                ."\n\t<td class='fett'>".$bja."</td>" 
     409                ."\n\t<td>" 
     410                        ."\n\t\t<p class='erklk'>'Baujahr' ist das Jahr der Fertigstellung oder der baulichen Ver&auml;nderung des Geb&auml;udes." 
     411                ."\n\t</td>" 
     412        ."\n</tr>"; 
     413} 
     414 
     415// Dachart 
     416if ($daa != "" OR $allefelder) { 
     417        echo "\n<tr>" 
     418                ."\n\t<td class='li'>Dachart</td>" 
     419                ."\n\t<td class='fett'>".$daa."</td>" 
     420                ."\n\t<td>" 
     421                        ."\n\t\t<p class='erklk'>'Dachart' gibt die Art der Dacheindeckung (z.B. Reetdach) an." 
     422                ."\n\t</td>" 
     423        ."\n</tr>"; 
     424} 
     425 
     426// D a t e n e r h e b u n g  (QualitÀt der Einmessung) 
     427$sqle ="SELECT g.gml_id, e.wert, e.beschreibung, e.dokumentation FROM ax_gebaeude g  
     428LEFT JOIN ax_datenerhebung e ON cast(e.wert AS varchar) = any(g.herkunft_source_source_ax_datenerhebung)  
     429WHERE g.gml_id= $1 AND g.endet IS NULL;"; 
     430$v = array($gmlid); 
     431$rese = pg_prepare("", $sqle); 
     432$rese = pg_execute("", $v); 
     433if (!$rese) { 
     434        echo "\n<p class='err'>Fehler bei Datenerhebung.<br>".pg_last_error()."</p>"; 
     435        if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".$sqle."<br>$1 = gml_id = '".$gmlid."'</p>";} 
     436} 
     437while($rowe = pg_fetch_assoc($rese)) { // Schleife weil array-Feld, meist aber leer 
     438        $erheb =$rowe["wert"]; 
     439        $berheb=$rowe["beschreibung"]; 
     440        $derheb=$rowe["dokumentation"]; // immer leer, oder 
     441        if ($derheb == '' AND $erheb != '') { // Wert ohne Doku 
     442                if ( $erheb >= 2000) { // selbst was dazu sagen 
     443                        $derheb = 'nicht eingemessenes Geb&auml;ude'; // so hieß das in der ALK 
     444                } 
     445        } 
     446        if ($erheb != "" OR $allefelder) { 
     447                echo "\n<tr>" 
     448                        ."\n\t<td class='li'>Datenerhebung</td>" 
     449                        ."\n\t<td class='fett'>"; 
     450                        if ($showkey) {echo "<span class='key'>(".$erheb.")</span>&nbsp;";} 
     451                        echo $berheb."</td>" 
    160452                        ."\n\t<td>" 
    161                                 ."\n\t\t<p class='erklk'>'Name' ist der Eigenname oder die Bezeichnung des Geb&auml;udes." 
    162                         ."\n\t</td>" 
     453                                ."\n\t\t<p class='erklk'>'Datenerhebung' beschreibt Qualit&auml;tsangaben, Herkunft.</p>" 
     454                                ."\n\t\t<p class='erkli'>".$derheb."</p>" 
     455                        ."</td>" 
    163456                ."\n</tr>"; 
    164457        } 
    165  
    166         // 0 bis N   L a g e bezeichnungen mit Haus- oder Pseudo-Nummer 
    167  
    168         // HAUPTgebÀude 
    169         $sqll ="SELECT 'm' AS ltyp, lh.gml_id AS gmllag, sh.lage, sh.bezeichnung, lh.hausnummer, '' AS laufendenummer FROM ax_gebaeude gh 
    170         JOIN ax_lagebezeichnungmithausnummer lh ON lh.gml_id=ANY(gh.zeigtauf) 
    171         JOIN ax_lagebezeichnungkatalogeintrag sh ON lh.kreis=sh.kreis AND lh.gemeinde=sh.gemeinde AND lh.lage=sh.lage 
    172         WHERE gh.gml_id= $1 AND gh.endet IS NULL AND lh.endet IS NULL AND sh.endet IS NULL"; 
    173         // oder NEBENgebÀude 
    174         $sqll.=" UNION  
    175         SELECT 'p' AS ltyp, ln.gml_id AS gmllag, sn.lage, sn.bezeichnung, ln.pseudonummer AS hausnummer, ln.laufendenummer 
    176         FROM ax_gebaeude gn 
    177         JOIN ax_lagebezeichnungmitpseudonummer ln ON ln.gml_id=gn.hat 
    178         JOIN ax_lagebezeichnungkatalogeintrag sn ON ln.kreis=sn.kreis AND ln.gemeinde=sn.gemeinde AND ln.lage=sn.lage 
    179         WHERE gn.gml_id= $1 AND gn.endet IS NULL AND ln.endet IS NULL AND sn.endet IS NULL "; 
    180  
    181         $sqll.="ORDER BY bezeichnung, hausnummer ;"; 
    182  
    183         $v = array($gmlid); 
    184         $resl = pg_prepare("", $sqll); 
    185         $resl = pg_execute("", $v); 
    186         if (!$resl) { 
    187                 echo "\n<p class='err'>Fehler bei Lage mit HsNr.</p>"; 
    188                 if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".$sqll."<br>$1 = gml_id = '".$gmlid."'</p>";} 
     458} 
     459echo "\n</table>"; 
     460pg_free_result($rese); 
     461 
     462$gfla=$rowg["gebflae"]; // bei Flurstck. gebraucht 
     463pg_free_result($resg); 
     464 
     465echo "\n\n<h3><img src='ico/Flurstueck.png' width='16' height='16' alt=''> Flurst&uuml;cke</h3>" 
     466."\n<p>.. auf dem das Geb&auml;ude steht. Ermittelt durch Verschneidung der Geometrie.</p>"; 
     467 
     468// F l u r s t ÃŒ c k 
     469$sqlf ="SELECT f.gml_id, round(st_area(ST_Intersection(g.wkb_geometry,f.wkb_geometry))::numeric,2) AS schnittflae,  
     470st_within(g.wkb_geometry,f.wkb_geometry) as drin, o.gemarkungsnummer, o.bezeichnung, f.flurnummer, f.zaehler, f.nenner  
     471FROM ax_gebaeude g, ax_flurstueck f LEFT JOIN ax_gemarkung o ON f.land=o.land AND f.gemarkungsnummer=o.gemarkungsnummer 
     472WHERE g.gml_id= $1 AND f.endet IS NULL and g.endet IS NULL  
     473AND st_intersects(g.wkb_geometry,f.wkb_geometry) = true ORDER BY schnittflae DESC;"; 
     474 
     475$v=array($gmlid); 
     476$resf=pg_prepare("", $sqlf); 
     477$resf=pg_execute("", $v); 
     478if (!$resf) { 
     479        echo "\n<p class='err'>Fehler bei FS-Verschneidung.</p>"; 
     480        if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".$sqlf."<br>$1 = gml_id = '".$gmlid."'</p>";} 
     481} 
     482 
     483echo "\n<hr>\n<table class='geb'>" 
     484."\n<tr>" 
     485        ."\n\t<td class='heads fla' title='Schnittfl&auml;che zwischen Flurst&uuml;ck und Geb&auml;ude'><img src='ico/sortd.png' width='10' height='10' alt='' title='Sortierung (absteigend)'>Fl&auml;che</td>" 
     486        ."\n\t<td class='head' title='Verh&auml;ltnis Geb&auml;udefl&auml;che zur FlurstÃŒcksfl&auml;che'>Verh&auml;ltnis</td>" 
     487        ."\n\t<td class='head' title='Flurst&uuml;ckskennzeichen Ortsteil'>Gemarkung</td>" 
     488        ."\n\t<td class='head' title='Flurst&uuml;ckskennzeichen Flur-Nummer'>Flur</td>" 
     489        ."\n\t<td class='heads fsnr' title='Flurst&uuml;ckskennzeichen Flurst&uuml;cks-Nummer'>Flurst&uuml;ck</td>" 
     490        ."\n\t<td class='head nwlink' title='Flurst&uuml;cks-Nachweis'>weitere Auskunft</td>" 
     491."\n</tr>"; 
     492 
     493while($rowf = pg_fetch_assoc($resf)) { 
     494        $fgml=$rowf["gml_id"]; 
     495        $drin=$rowf["drin"]; 
     496        $schni=$rowf["schnittflae"]; 
     497        $flur= $rowf["flurnummer"]; 
     498        $fskenn=$rowf["zaehler"]; 
     499        if ($rowf["nenner"] != "") { $fskenn.="/".$rowf["nenner"];} 
     500 
     501        // 3 FÀlle: 
     502        if ($drin === "t") { // GebÀude liegt komplett in FlurstÃŒck 
     503                $gstyle="gin"; // siehe .css     
     504                $f1=number_format($schni,2,",",".") . " m&#178;"; 
     505                $f2="vollst&auml;ndig"; 
     506        } else { 
     507                if ($schni === "0.00") { // GebÀude angrenzend (Grenzbebauung) 
     508                        $gstyle="gan"; 
     509                        $f1="&nbsp;"; 
     510                        $f2="angrenzend"; 
     511                } else { // Teile des GebÀudes stehen auf dem FlurstÃŒck 
     512                        $gstyle="gtl"; 
     513                        $f1=number_format($schni,2,",",".") . " m&#178;"; 
     514                        $f2="teilweise"; 
     515                } 
    189516        } 
    190         $zhsnr=0; 
    191         while($rowl = pg_fetch_assoc($resl)) { // LOOP: Lagezeilen 
    192                 $zhsnr++; 
    193                 $ltyp=$rowl["ltyp"]; // Lagezeilen-Typ 
    194                 $skey=$rowl["lage"]; // Str.-Schluessel 
    195                 $snam=htmlentities($rowl["bezeichnung"], ENT_QUOTES, "UTF-8"); // -Name 
    196                 $hsnr=$rowl["hausnummer"]; 
    197                 $hlfd=$rowl["laufendenummer"]; 
    198                 $gmllag=$rowl["gmllag"]; 
    199  
    200                 if ($zhsnr == 1) { 
    201                         echo "\n<tr>" 
    202                                 ."\n\t<td class='li' title='Lage mit Hausnummer oder Pseudonummer'>Adresse</td>" 
    203                                 ."\n\t<td class='fett'>"; 
    204                 } 
    205                 echo "\n\t\t<img src='ico/Lage_mit_Haus.png' width='16' height='16' alt=''>&nbsp;"; 
    206                 if ($showkey) {echo "<span class='key'>(".$skey.")</span>&nbsp;";}                       
    207                 echo "\n\t\t<a title='Hausnummer' href='alkislage.php?gkz=".$gkz."&amp;gmlid=".$gmllag."&amp;ltyp=".$ltyp; 
    208                         if ($showkey) {echo "&amp;showkey=j";} 
    209                         echo "'>".$snam."&nbsp;".$hsnr; 
    210                         if ($ltyp == "p") {echo ", lfd.Nr ".$hlfd;} 
    211                 echo "</a><br>"; 
    212         } // Ende Loop Lagezeilen m.H. 
    213         if ($zhsnr > 0) {echo "\n\t</td>\n\t<td>&nbsp;</td>\n</tr>";} 
    214  
    215 // In der 3. Spalte: 
    216 // p.erklk = ErklÀrungen zur Kategorie 
    217 // p.erkli = .. zum Inhalt 
    218  
    219         // GebÀudefunktion 
    220         echo "\n<tr>" 
    221                 ."\n\t<td class='li'>Geb&auml;udefunktion</td>" 
    222                 ."\n\t<td class='fett'>"; 
    223                 if ($showkey) {echo "<span class='key'>".$kfunk."</span>&nbsp;";} 
    224                 echo $bfunk."</td>" 
    225                 ."\n\t<td>" 
    226                         ."\n\t\t<p class='erklk'>'Geb&auml;udefunktion' ist die zum Zeitpunkt der Erhebung vorherrschend funktionale Bedeutung des Geb&auml;udes'</p>" 
    227                         ."\n\t\t<p class='erkli'>".$dfunk."</p>" 
    228                 ."</td>" 
    229         ."\n</tr>"; 
    230  
    231         // Bauweise 
    232         if ($baw != "" OR $allefelder) { 
    233                 echo "\n<tr>" 
    234                         ."\n\t<td class='li'>Bauweise</td>" 
    235                         ."\n\t<td class='fett'>"; 
    236                         if ($showkey) {echo "<span class='key'>".$baw."</span>&nbsp;";} 
    237                         echo $bbauw."</td>" 
    238                         ."\n\t<td>" 
    239                                 ."\n\t\t<p class='erklk'>'Bauweise' ist die Beschreibung der Art der Bauweise.</p>" 
    240                                 ."\n\t\t<p class='erkli'>".$dbauw."</p>" 
    241                         ."\n\t</td>" 
    242                 ."\n</tr>"; 
    243         } 
    244  
    245         // Geschosse 
    246         if ($aog != "" OR $allefelder) { 
    247                 echo "\n<tr>" 
    248                         ."\n\t<td class='li'>Geschosse</td>" 
    249                         ."\n\t<td class='fett'>".$aog."</td>" 
    250                         ."\n\t<td>" 
    251                                 ."\n\t\t<p class='erklk'>Anzahl oberirdischer Geschosse.</p>" 
    252                         ."\n\t</td>" 
    253                 ."\n</tr>"; 
    254         } 
    255  
    256         // U-Geschosse 
    257         if ($aug != "" OR $allefelder) { 
    258                 echo "\n<tr>" 
    259                         ."\n\t<td class='li'>U-Geschosse</td>" 
    260                         . "\n\t<td class='fett'>".$aug."</td>" 
    261                         ."\n\t<td>" 
    262                                 ."\n\t\t<p class='erklk'>Anzahl unterirdischer Geschosse.</p>" 
    263                         ."\n\t</td>" 
    264                 ."\n</tr>"; 
    265         } 
    266  
    267         // Hochhaus 
    268         if ($hoh != "" OR $allefelder) { 
    269                 echo "\n<tr>" 
    270                         ."\n\t<td class='li'>Hochhaus</td>" 
    271                         ."\n\t<td class='fett'>".$hoh."</td>" 
    272                         ."\n\t<td>" 
    273                                 ."\n\t\t<p class='erklk'>'Hochhaus' ist ein Geb&auml;ude, das nach Geb&auml;udeh&ouml;he und Auspr&auml;gung als Hochhaus zu bezeichnen ist. F&uuml;r Geb&auml;ude im Geschossbau gilt dieses i.d.R. ab 8 oberirdischen Geschossen, f&uuml;r andere Geb&auml;ude ab einer Geb&auml;udeh&ouml;he von 22 m." 
    274                         ."\n\t</td>" 
    275                 ."\n</tr>"; 
    276         } 
    277  
    278         // Lage zur ErdoberflÀche 
    279         if ($ofl != "" OR $allefelder) { 
    280                 echo "\n<tr>" 
    281                         ."\n\t<td class='li'>Lage zur Erdoberfl&auml;che</td>" 
    282                         ."\n\t<td class='fett'>"; 
    283                         if ($showkey) {echo "<span class='key'>".$ofl."</span>&nbsp;";} 
    284                         echo $oflv."</td>" 
    285                         ."\n\t<td>" 
    286                                 ."\n\t\t<p class='erklk'>'Lage zur Erdoberfl&auml;che' ist die Angabe der relativen Lage des Geb&auml;udes zur Erdoberfl&auml;che. Diese Attributart wird nur bei nicht ebenerdigen Geb&auml;uden gef&uuml;hrt.<br>" 
    287                                 ."\n\t\t<p class='erkli'>".$ofld."</p>" 
    288                         ."\n\t</td>" 
    289                 ."\n</tr>"; 
    290         } 
    291  
    292         // Dachgeschossausbau, Spalte dokumentation ist immer leer 
    293         if ($dga != "" OR $allefelder) { 
    294                 echo "\n<tr>" 
    295                         ."\n\t<td class='li'>Dachgeschossausbau</td>" 
    296                         ."\n\t<td class='fett'>"; 
    297                         if ($showkey) {echo "<span class='key'>".$dga."</span>&nbsp;";} 
    298                         echo $dgav."</td>" 
    299                         ."\n\t<td>" 
    300                                 ."\n\t\t<p class='erklk'>'Dachgeschossausbau' ist ein Hinweis auf den Ausbau bzw. die Ausbauf&auml;higkeit des Dachgeschosses." 
    301                         ."\n\t</td>" 
    302                 ."\n</tr>"; 
    303         } 
    304  
    305         // Zustand 
    306         if ($zus != "" OR $allefelder) { 
    307                 echo "\n<tr>" 
    308                         ."\n\t<td class='li'>Zustand</td>" 
    309                         ."\n\t<td class='fett'>"; 
    310                         if ($showkey) {echo "<span class='key'>".$zus."</span>&nbsp;";} 
    311                         echo $zusv."</td>" 
    312                         ."\n\t<td>" 
    313                                 ."\n\t\t<p class='erklk'>'Zustand' beschreibt die Beschaffenheit oder die Betriebsbereitschaft von 'Geb&auml;ude'. Diese Attributart wird nur dann optional gef&uuml;hrt, wenn der Zustand des Geb&auml;udes vom nutzungsf&auml;higen Zustand abweicht.</p>" 
    314                                 ."\n\t\t<p class='erkli'>".$zusd."</p>" 
    315                         ."\n\t</td>" 
    316                 ."\n</tr>"; 
    317         } 
    318  
    319         // Weitere GebÀudefunktionen 
    320         // Suche Testfall: SELECT gml_id, gebaeudefunktion, weiteregebaeudefunktion FROM ax_gebaeude WHERE (NOT weiteregebaeudefunktion IS NULL) AND cardinality(weiteregebaeudefunktion) > 1 liMIT 10; 
    321         if ($wgf != "" OR $allefelder) { // ... ist ein Array 
    322                 echo "\n<tr>" 
    323                         ."\n\t<td class='li'>Weitere Geb&auml;udefunktionen</td>" 
    324                         ."\n\t<td>"; 
    325                         if ($wgf != "") { // Kommagetrennte Liste aus Array 
    326                                 $sqlw="SELECT wert, beschreibung, dokumentation FROM ax_gebaeudefunktion WHERE wert IN ( $1 ) ORDER BY wert;"; 
    327                                 $v = array($wgf); 
    328                                 $resw = pg_prepare("", $sqlw); 
    329                                 $resw = pg_execute("", $v); 
    330                                 if (!$resw) { 
    331                                         echo "\n<p class='err'>Fehler bei Geb&auml;ude - weitere Funktion.</p>"; 
    332                                         if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".$sqlw."<br>$1 = Werteliste = '".$wgf."'</p>";} 
    333                                 } 
    334                                 $zw=0; 
    335                                 while($roww = pg_fetch_assoc($resw)) { // LOOP Funktion 
    336                                         if ($zw > 0) {echo "<br>";} 
    337                                         if ($showkey) {echo "<span class='key'>".$roww["wert"]."</span>&nbsp;";} 
    338                                         echo "<span title='".$roww["dokumentation"]."'>".$roww["beschreibung"]."</span>"; 
    339                                         $zw++; 
    340                            } 
    341                         } 
    342                         echo "</td>" 
    343                         ."\n\t<td>" 
    344                                 ."\n\t\t<p class='erklk'>'Weitere Geb&auml;udefunktion' ist die Funktion, die ein Geb&auml;ude neben der dominierenden Geb&auml;udefunktion hat." 
    345                         ."\n\t</td>" 
    346                 ."\n</tr>"; 
    347         } 
    348  
    349         // Dachform, Spalte dokumentation ist immer leer 
    350         if ($daf != "" OR $allefelder) { 
    351                 echo "\n<tr>" 
    352                         ."\n\t<td class='li'>Dachform</td>" 
    353                         ."\n\t<td class='fett'>"; 
    354                         if ($showkey) {echo "<span class='key'>".$daf."</span>&nbsp;";} 
    355                         echo $dach."</td>" 
    356                         ."\n\t<td>" 
    357                                 ."\n\t\t<p class='erklk'>'Dachform' beschreibt die charakteristische Form des Daches." 
    358                         ."\n\t</td>" 
    359                 ."\n</tr>"; 
    360         } 
    361  
    362         // Objekthöhe 
    363         if ($hho != "" OR $allefelder) { 
    364                 echo "\n<tr>" 
    365                         ."\n\t<td class='li'>Objekth&ouml;he</td>" 
    366                         ."\n\t<td class='fett'>".$hho."</td>" 
    367                         ."\n\t<td>" 
    368                                 ."\n\t\t<p class='erklk'>'Objekth&ouml;he' ist die H&ouml;hendifferenz in [m] zwischen dem h&ouml;chsten Punkt der Dachkonstruktion und der festgelegten Gel&auml;ndeoberfl&auml;che des Geb&auml;udes." 
    369                         ."\n\t</td>" 
    370                 ."\n</tr>"; 
    371         } 
    372  
    373         // GeschossflÀche 
    374         if ($gfl != "" OR $allefelder) { 
    375                 echo "\n<tr>" 
    376                         ."\n\t<td class='li'>Geschossfl&auml;che</td>" 
    377                         ."\n\t<td class='fett'>"; 
    378                         if ($gfl != "") {echo $gfl." m&#178;";} 
    379                         echo "</td>" 
    380                         ."\n\t<td>" 
    381                                 ."\n\t\t<p class='erklk'>'Geschossfl&auml;che' ist die Geb&auml;udegeschossfl&auml;che in [qm]." 
    382                         ."\n\t</td>" 
    383                 ."\n</tr>"; 
    384         } 
    385  
    386         // GrundflÀche 
    387         if ($grf != "" OR $allefelder) { 
    388                 echo "\n<tr>" 
    389                         ."\n\t<td class='li'>Grundfl&auml;che</td>" 
    390                         ."\n\t<td class='fett'>"; 
    391                         if ($grf != "") {echo $grf." m&#178;";} 
    392                         echo "\n\t<td>" 
    393                                 ."\n\t\t<p class='erklk'>'Grundfl&auml;che' ist die Geb&auml;udegrundfl&auml;che in [qm]." 
    394                         ."\n\t</td>" 
    395                 ."\n</tr>"; 
    396         } 
    397  
    398         // Umbauter Raum 
    399         if ($ura != "" OR $allefelder) { 
    400                 echo "\n<tr>" 
    401                         ."\n\t<td class='li'>Umbauter Raum</td>" 
    402                         ."\n\t<td class='fett'>".$ura."</td>" 
    403                         ."\n\t<td>" 
    404                                 ."\n\t\t<p class='erklk'>'Umbauter Raum' ist der umbaute Raum [Kubikmeter] des Geb&auml;udes." 
    405                         ."\n\t</td>" 
    406                 ."\n</tr>"; 
    407         } 
    408  
    409         // Baujahr 
    410         if ($bja != "" OR $allefelder) { 
    411                 echo "\n<tr>" 
    412                         ."\n\t<td class='li'>Baujahr</td>" 
    413                         ."\n\t<td class='fett'>".$bja."</td>" 
    414                         ."\n\t<td>" 
    415                                 ."\n\t\t<p class='erklk'>'Baujahr' ist das Jahr der Fertigstellung oder der baulichen Ver&auml;nderung des Geb&auml;udes." 
    416                         ."\n\t</td>" 
    417                 ."\n</tr>"; 
    418         } 
    419  
    420         // Dachart 
    421         if ($daa != "" OR $allefelder) { 
    422                 echo "\n<tr>" 
    423                         ."\n\t<td class='li'>Dachart</td>" 
    424                         ."\n\t<td class='fett'>".$daa."</td>" 
    425                         ."\n\t<td>" 
    426                                 ."\n\t\t<p class='erklk'>'Dachart' gibt die Art der Dacheindeckung (z.B. Reetdach) an." 
    427                         ."\n\t</td>" 
    428                 ."\n</tr>"; 
    429         } 
    430  
    431         // QualitÀtsangaben 
    432 /*      if ($qag != "" OR $allefelder) { 
    433                 echo "\n<tr>" 
    434                         ."\n\t<td class='li'>Qualit&auml;tsangaben</td>" 
    435                         ."\n\t<td class='fett'>".$qag."</td>" 
    436                         ."\n\t<td>" 
    437                                 ."\n\t\t<p class='erklk'>Angaben zur Herkunft der Informationen (Erhebungsstelle). Die Information ist konform zu den Vorgaben aus ISO 19115 zu repr&auml;sentieren." 
    438                         ."\n\t</td>" 
    439                 ."\n</tr>"; 
    440         } */ 
    441         echo "\n</table>"; 
    442 } 
    443 if ($gebnr == 0) {echo "\n<p class='err'><br>Kein Geb&auml;ude gefunden<br>&nbsp;</p>";} 
    444  
    445 // ++ ToDo:  -Verschnitt mit FS?  -Ausgeben ax_georeferenziertegebaeudeadresse dazz, wenn gefÃŒllt. 
     517        echo "\n<tr>" 
     518                ."\n\t<td class='fla'>".$f1."</td>" 
     519                ."\n\t<td class='".$gstyle."'>".$f2."</td>"; 
     520        echo "\n\t<td>"; 
     521        if ($showkey) {echo "<span class='key'>(".$rowf["gemarkungsnummer"].")</span> ";} 
     522        echo $rowf["bezeichnung"]."</td>" 
     523        ."\n\t<td>".$flur."</td>" 
     524        ."\n\t<td class='fsnr'><span class='wichtig'>".$fskenn."</span></td>"; 
     525 
     526        echo "\n\t<td class='nwlink noprint'>" // Link FS 
     527                ."\n\t\t<a title='Flurst&uuml;ck' href='alkisfsnw.php?gkz=".$gkz."&amp;gmlid=".$fgml; 
     528                if ($showkey) {echo "&amp;showkey=j";} 
     529                echo "'>Flurst&uuml;ck&nbsp;<img src='ico/Flurstueck_Link.png' width='16' height='16' alt=''></a>" 
     530                ."\n\t</td>" 
     531        ."\n</tr>"; 
     532} 
     533 
     534$gfla=number_format($gfla,2,",",".") . " m&#178;"; 
     535echo "\n<tr>\n\t<td class='fla sum'>".$gfla."</td>\n\t<td>Geb&auml;udefl&auml;che</td>\n\t<td></td>\n</tr>"; 
     536echo "\n</table>"; // Ende FlurstÃŒcke 
    446537?> 
    447538 
     
    452543</div> 
    453544 
    454 <?php footer($gmlid, $_SERVER['PHP_SELF']."?", ""); ?> 
     545<?php footer($gmlid, selbstverlinkung()."?", ""); ?> 
    455546 
    456547</body> 
  • trunk/info/info/alkisn/alkisinlayausk.php

    r412 r422  
    1111        Version: 
    1212        2016-02-24 Version fuer norGIS-ALKIS-Import 
    13         2016-11-29 HTML5, Gemeinsam genutzte Datenbanken ermöglichen (Berechtigung fÃŒr Gemeinde prÃŒfen) 
    14         2017-06-01 Function "eigentuemer" ohne Parameter $con 
    15         2017-06-08 Validierung Eingabeparameter, Feinkorrekturen 
    16         2017-10-09 Sauber filtern auf endet IS NULL 
    17         2017-12-20 Fehlerkorrektur: Link Straße ohne gml_id, Bessere Title fÃŒr Links, Icon an Lage. 
    18         2018-04-23 FÃŒr GB-Teil Function benutzen 
    19         2018-04-24 Feinschliff 
    20         2018-05-03 neuer GrundstÃŒcksnachweis 
    21         2018-11-09 Umstellung Full-Schema 
     13        .... 
     14        2020-02-03 Fenster-Weite 
     15        2020-02-20 Authentifizierung ausgelagert in Function darf_ich() 
     16        2020-10-14 include ohne Klammer 
     17        2020-12-15 Input-Validation und Strict Comparisation (===) 
     18        2021-03-09 Link zum GebÀudenachweis auch mit "Bauwerke" betiteln 
    2219*/ 
     20ini_set("session.cookie_httponly", 1); 
    2321session_start(); 
    2422$cntget = extract($_GET); // Parameter in Variable umwandeln 
    2523 
    2624// strikte Validierung aller Parameter 
    27 if (!isset($gmlid) or !preg_match('#^[0-9A-Za-z]{16}$#', $gmlid)) {die("Eingabefehler gmlid");} 
    28 if (!isset($gkz) or !preg_match('#^[0-9]{3}$#', $gkz)) {die("Eingabefehler gkz");} 
    29  
    30 require_once("alkis_conf_location.php"); 
    31 if ($auth == "mapbender") {require_once($mapbender);} 
    32 include("alkisfkt.php"); 
    33  
     25if (isset($gmlid)) { 
     26        if (!preg_match('#^[0-9A-Za-z]{16}$#', $gmlid)) {die("Eingabefehler gmlid");} 
     27} else { 
     28        die("Fehlender Parameter"); 
     29} 
     30if (isset($gkz)) { 
     31        if (!preg_match('#^[0-9]{3}$#', $gkz)) {die("Eingabefehler gkz");} 
     32} else { 
     33        die("Fehlender Parameter"); 
     34} 
     35 
     36include "alkis_conf_location.php"; 
     37include "alkisfkt.php"; 
     38 
     39// Wert fÃŒr "width=" aus der Function "imFenster" synchron halten mit "@media screen body width" aus "alkisauszug.css" 
    3440echo <<<END 
    3541<!doctype html> 
     
    4147        <link rel="shortcut icon" type="image/x-icon" href="ico/Flurstueck.ico"> 
    4248        <title>ALKIS-Auskunft</title> 
    43         <script> 
     49        <script type="text/javascript" language="JavaScript"> 
    4450                function imFenster(dieURL) { 
    4551                        var link = encodeURI(dieURL); 
     
    4854        </script> 
    4955</head> 
    50 <body> 
     56<body class ="mbfi"> 
    5157END; 
     58// <body style='width: 98%;'> 
     59$erlaubnis = darf_ich(); if ($erlaubnis === 0) { die('<p class="stop1">Abbruch</p></body>'); } 
     60 
     61// Body des Inlay muss in Mapbender-Feature-Info-PopUp passen. Kleiner als 750 aus css. 
    5262$con = pg_connect($dbconn." options='--application_name=ALKIS-Auskunft_alkisinlayausk.php'"); 
    5363if (!$con) {echo "<br>Fehler beim Verbinden der DB.\n<br>";} 
     
    6373if (!$res) { 
    6474        echo "\n<p class='err'>Fehler bei Flurstuecksdaten.</p>"; 
    65         if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = gml_id = '".$gmlid."'</p>";} 
     75        if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".htmlentities(str_replace("$1", "'".$gmlid."'", $sql), ENT_QUOTES, "UTF-8")."</p>";} 
    6676} 
    6777 
     
    122132// Gebaeude-NW zum FS 
    123133echo "\n\t\t\t\t<a href='javascript:imFenster(\"alkisgebaeudenw.php?gkz=".$gkz."&amp;gmlid=".$gmlid."\")' " 
    124         ."title='Geb&auml;udenachweis'>Geb&auml;ude&nbsp;" 
     134        ."title='Geb&auml;ude oder Bauwerke'>Geb&auml;ude/Bauw.&nbsp;" 
    125135        ."<img src='ico/Haus.png' width='16' height='16' alt=''>" 
    126136."</a>"; 
     
    139149if (!$res) { 
    140150        echo "\n<p class='err'>Fehler bei Lagebezeichnung mit Hausnummer.</p>"; 
    141         if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = gml_id = '".$gmlid."'</p>";} 
     151        if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".htmlentities(str_replace("$1", "'".$gmlid."'", $sql), ENT_QUOTES, "UTF-8")."</p>";} 
    142152} 
    143153$j=0; 
     
    145155while($row = pg_fetch_assoc($res)) { 
    146156        $sname=htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8"); // Str.-Name 
    147         if (substr($sname, strlen($sname) -3, 3) == 'weg') { // Versuch fuer korrekten Satzbau 
     157        if (substr($sname, strlen($sname) -3, 3) === 'weg') { // Versuch fuer korrekten Satzbau 
    148158                $slink=" am ".$sname; 
    149159        } else { 
     
    153163        echo "\n\t<tr>" 
    154164                ."\n\t\t<td class='ll'>"; 
    155                 if ($j == 0) {echo "<img src='ico/Lage_mit_Haus.png' width='16' height='16' alt='MIT'> Lage:";} 
     165                if ($j === 0) {echo "<img src='ico/Lage_mit_Haus.png' width='16' height='16' alt='MIT'> Lage:";} 
    156166                echo "</td>" 
    157167                ."\n\t\t<td class='lr'>".$sname."&nbsp;".$hsnr."</td>" 
     
    182192if (!$res) { 
    183193        echo "\n<p class='err'>Fehler bei Lagebezeichnung ohne Hausnummer.</p>"; 
    184         if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = gml_id = '".$gmlid."'</p>";} 
     194        if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".htmlentities(str_replace("$1", "'".$gmlid."'", $sql), ENT_QUOTES, "UTF-8")."</p>";} 
    185195} 
    186196$kgmlalt=''; 
     
    188198        $sname=htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8"); // Str.-Name 
    189199 
    190         if (substr($sname, strlen($sname) -3, 3) == 'weg') { // Versuch fuer korrekten Satzbau 
     200        if (substr($sname, strlen($sname) -3, 3) === 'weg') { // Versuch fuer korrekten Satzbau 
    191201                $slink=" am ".$sname; 
    192202        } else { 
  • trunk/info/info/alkisn/alkisinlaybaurecht.php

    r416 r422  
    22/*      alkisinlaybaurecht.php - Inlay fuer Template: Baurecht 
    33        ALKIS-Buchauskunft, Kommunales Rechenzentrum Minden-Ravensberg/Lippe (Lemgo). 
    4         Ähnlich alkisbaurecht, aber nur Basisdaten, kein Footer und keine Flurstücks-Verschneidung. 
     4        Ähnlich alkisbaurecht, aber nur Basisdaten, kein Footer und keine FlurstÃŒcks-Verschneidung. 
    55 
    66        Version: 
    77        2016-02-24 Version fuer norGIS-ALKIS-Import 
    8         2016-11-29 HTML5, Gemeinsam genutzte Datenbanken ermöglichen 
    9         2017-06-08 Validierung Eingabeparameter, Feinkorrekturen 
    10         2017-10-09 Sauber filtern auf endet IS NULL 
    11         2018-11-09 Umstellung Full-Schema 
    12         2018-11-15 Nachkorrektur 
     8        .... 
     9        2020-02-03 Fenster-Weite 
     10        2020-02-20 Authentifizierung ausgelagert in Function darf_ich() 
     11        2020-12-15 Input-Validation und Strict Comparisation (===) 
    1312*/ 
     13ini_set("session.cookie_httponly", 1); 
    1414session_start(); 
    1515$cntget = extract($_GET); // Parameter in Variable umwandeln 
    1616// strikte Validierung aller Parameter 
    17 if (!isset($gmlid) or !preg_match('#^[0-9A-Za-z]{16}$#', $gmlid)) {die("Eingabefehler gmlid");} 
    18 if (!isset($gkz) or !preg_match('#^[0-9]{3}$#', $gkz)) {die("Eingabefehler gkz");} 
     17if (isset($gmlid)) { 
     18        if (!preg_match('#^[0-9A-Za-z]{16}$#', $gmlid)) {die("Eingabefehler gmlid");} 
     19} else { 
     20        die("Fehlender Parameter"); 
     21} 
     22if (isset($gkz)) { 
     23        if (!preg_match('#^[0-9]{3}$#', $gkz)) {die("Eingabefehler gkz");} 
     24} else { 
     25        die("Fehlender Parameter"); 
     26} 
    1927 
    20 require_once("alkis_conf_location.php"); 
    21 if ($auth == "mapbender") {require_once($mapbender);} 
     28include "alkis_conf_location.php"; 
     29include "alkisfkt.php"; 
     30 
     31// Wert fÃŒr "width=" aus der Function "imFenster" synchron halten mit "@media screen body width" aus "alkisauszug.css" 
    2232echo <<<END 
    2333<!doctype html> 
     
    3242        function imFenster(dieURL) { 
    3343                var link = encodeURI(dieURL); 
    34                 window.open(link,'','left=30,top=30,width=680,height=800,resizable=yes,menubar=no,toolbar=no,location=no,status=no,scrollbars=yes'); 
     44                window.open(link,'','left=30,top=30,width=750,height=800,resizable=yes,menubar=no,toolbar=no,location=no,status=no,scrollbars=yes'); 
    3545        } 
    3646        </script> 
    3747</head> 
    38 <body> 
     48<body style='width: 98%;'> 
    3949END; 
     50 
     51$erlaubnis = darf_ich(); if ($erlaubnis === 0) { die('<p class="stop1">Abbruch</p></body>'); } 
     52 
     53// Body des Inlay muss in Mapbender-Feature-Info-PopUp passen. Kleiner als 750 aus css. 
    4054$con = pg_connect($dbconn." options='--application_name=ALKIS-Auskunft_alkisinlaybaurecht.php'"); 
    4155if (!$con) echo "\n<p class='err'>Fehler beim Verbinden der DB</p>"; 
    4256 
    43 // Keine Spalten, die eine Berechtigungsprüfung nach Gemeinde ermöglichen: 
     57// Keine Spalten, die eine BerechtigungsprÃŒfung nach Gemeinde ermöglichen: 
    4458$sql ="SELECT r.ogc_fid, r.name, r.stelle, r.bezeichnung AS rechtbez, a.beschreibung AS adfbez, d.bezeichnung AS stellbez, round(st_area(r.wkb_geometry)::numeric,0) AS flae  
    4559FROM ax_bauraumoderbodenordnungsrecht r  
     
    5468if (!$res) { 
    5569        echo "\n<p class='err'>Fehler bei Baurecht.</p>"; 
    56         if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".$sql."<br>$1 = ".$gmlid."</p>";} 
     70        if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".str_replace("$1", "'".$gmlid."'", $sql)."</p>";} 
    5771} 
    5872echo "\n<h2><img src='ico/Gericht.png' width='16' height='16' alt=''> Bau-, Raum- oder Bodenordnungsrecht</h2>"; 
  • trunk/info/info/alkisn/alkislage.php

    r412 r422  
    77        Version: 
    88        2016-02-24 Version fuer norGIS-ALKIS-Import 
    9         2016-03-14 Korrekturen 
    10         2016-11-29 HTML5, Gemeinsam genutzte Datenbanken ermöglichen 
    11         2017-06-08 Validierung Eingabeparameter, gestreifte Tabelle, Feinkorrekturen 
    12         2017-10-09 Sauber filtern auf endet IS NULL 
    13         2018-04-23 &nodebug 
    14         2018-11-09 Umstellung Full-Schema 
     9        .... 
     10        2020-02-20 Authentifizierung ausgelagert in Function darf_ich() 
     11        2020-12-03 function selbstverlinkung() statt $_SERVER['PHP_SELF'] 
     12        2020-12-15 Input-Validation und Strict Comparisation (===) 
    1513 
    1614        ToDo: 
     
    2018        Mit FlÀchen-Verschneidung auch weitere FS anzeigen? 
    2119*/ 
     20ini_set("session.cookie_httponly", 1); 
    2221session_start(); 
    2322$showkey="n"; $nodebug=""; // Var. aus Parameter initalisieren 
     
    2524 
    2625// strikte Validierung aller Parameter 
    27 if (!isset($gmlid) or !preg_match('#^[0-9A-Za-z]{16}$#', $gmlid)) {die("Eingabefehler gmlid");} 
    28 if (!isset($gkz) or !preg_match('#^[0-9]{3}$#', $gkz)) {die("Eingabefehler gkz");} 
     26if (isset($gmlid)) { 
     27        if (!preg_match('#^[0-9A-Za-z]{16}$#', $gmlid)) {die("Eingabefehler gmlid");} 
     28} else { 
     29        die("Fehlender Parameter"); 
     30} 
     31if (isset($gkz)) { 
     32        if (!preg_match('#^[0-9]{3}$#', $gkz)) {die("Eingabefehler gkz");} 
     33} else { 
     34        die("Fehlender Parameter"); 
     35} 
    2936if (!preg_match('#^[j|n]{0,1}$#', $showkey)) {die ("Eingabefehler showkey");} 
    30 if ($showkey == "j") {$showkey=true;} else {$showkey=false;} 
     37if ($showkey === "j") {$showkey=true;} else {$showkey=false;} 
    3138if (!preg_match('#^[m|p|o]{1}$#', $ltyp)) {die ("Eingabefehler ltyp");} 
    3239if (!preg_match('#^j{0,1}$#', $nodebug)) {die("Eingabefehler nodebug");} 
    3340 
    34 require_once("alkis_conf_location.php"); 
    35 if ($auth == "mapbender") {require_once($mapbender);} 
    36 include("alkisfkt.php"); 
     41include "alkis_conf_location.php"; 
     42include "alkisfkt.php"; 
    3743 
    3844switch ($ltyp) { 
     
    5965<body> 
    6066END; 
     67 
     68$erlaubnis = darf_ich(); if ($erlaubnis === 0) { die('<p class="stop1">Abbruch</p></body>'); } 
     69 
    6170// Mit URL-Parameter "&nodebug=j" kann man die Entwicklungsumgebung (in Conf definiert) ausschalten. 
    6271// Manuell an die URL anfÃŒgen, wirkt nur temporÀr und wird nicht in Links weiter gereicht. 
    63 if ($nodebug == "j") {$debug=0;}  
     72if ($nodebug === "j") {$debug=0;}  
    6473 
    6574$con = pg_connect($dbconn." options='--application_name=ALKIS-Auskunft_alkislage.php'"); 
     
    94103if (!$res) { 
    95104        echo "\n<p class='err'>Fehler bei Lagebezeichnung.</p>"; 
    96         if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = gml_id = '".$gmlid."'</p>";} 
     105        if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".htmlentities(str_replace("$1", "'".$gmlid."'", $sql), ENT_QUOTES, "UTF-8")."</p>";} 
    97106} 
    98107 
     
    117126                        $kennz.=$hsnr; 
    118127                        $untertitel="Hauptgeb&auml;ude mit Hausnummer"; 
    119                         echo "\n<p class='lage'>ALKIS Lagebezeichnung mit Hausnummer ".$kennz."&nbsp;</p>"; // Balken 
     128                        echo "\n<p class='balken lage'>ALKIS Lagebezeichnung mit Hausnummer ".$kennz."&nbsp;</p>"; // Balken 
    120129                        $osub=""; 
    121130                break; 
     
    125134                        $kennz.=$pseu."-".$lfd; 
    126135                        $untertitel="NebengebÀude mit laufender Nummer (Lagebezeichnung mit Pseudonummer)"; 
    127                         echo "\n<p class='lage'>ALKIS Lagebezeichnung NebengebÀude ".$kennz."&nbsp;</p>"; // Balken 
     136                        echo "\n<p class='balken lage'>ALKIS Lagebezeichnung NebengebÀude ".$kennz."&nbsp;</p>"; // Balken 
    128137                        $osub=""; 
    129138                break; 
     
    135144                                $kennz=" - ".$unver; 
    136145                                $untertitel="Gewanne (unverschl&uuml;sselte Lage)"; 
    137                                 echo "\n<p class='lage'>ALKIS Lagebezeichnung Ohne Hausnummer ".$kennz."&nbsp;</p>"; // Balken 
     146                                echo "\n<p class='balken lage'>ALKIS Lagebezeichnung Ohne Hausnummer ".$kennz."&nbsp;</p>"; // Balken 
    138147                        } else { 
    139148                                $osub="s"; // Sub-Typ Strasse (ohne HsNr) 
    140149                                $kennz.=$unver; 
    141150                                $untertitel="Stra&szlig;e ohne Hausnummer"; 
    142                                 echo "\n<p class='lage'>ALKIS Lagebezeichnung Ohne Hausnummer ".$kennz."&nbsp;</p>"; // Balken 
     151                                echo "\n<p class='balken lage'>ALKIS Lagebezeichnung Ohne Hausnummer ".$kennz."&nbsp;</p>"; // Balken 
    143152                        } 
    144153                break; 
     
    147156        echo "\n<p class='err'>Fehler! Kein Treffer fuer Lagebezeichnung mit gml_id='".$gmlid."'</p>"; 
    148157        if ($debug > 2) { 
    149                 echo "\n<p class='err'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = gml_id = '".$gmlid."'</p>"; 
     158                echo "\n<p class='err'>SQL=<br>".htmlentities(str_replace("$1", "'".$gmlid."'", $sql), ENT_QUOTES, "UTF-8")."</p>"; 
    150159        } 
    151160        echo "\n</body>\n</html>"; 
     
    174183                                break; 
    175184                                case "o": //"Ohne HsNr" 
    176                                         if ($osub == "g") { 
     185                                        if ($osub === "g") { 
    177186                                                echo "\n\t\t\t<td class='head'>unverschl&uuml;sselte Lage</td>"; 
    178187                                        } 
     
    200209                                echo "\n\t\t\t<td title='Stra&szlig;e'>"; 
    201210                                if ($showkey and $osub != "g") {echo "<span class='key'>".$lage."</span><br>";} 
    202                                 if ($ltyp == "o") { 
     211                                if ($ltyp === "o") { 
    203212                                        echo "<span class='wichtig'>".$snam."</span>"; 
    204213                                } else { 
     
    217226                                break; 
    218227                                case "o": 
    219                                         if ($osub == "g") { 
     228                                        if ($osub === "g") { 
    220229                                                echo "\n\t\t\t<td title='Gewanne'><span class='wichtig'>".$unver."</span></td>"; 
    221230                                        } 
     
    243252// ax_Flurstueck  >zeigtAuf>  ax_LagebezeichnungOhneHausnummer 
    244253// ++ auch FlÀchenverschneidung? 
    245 if ($ltyp <> "p") { // Pseudonummer linkt nur GebÀude 
     254if ($ltyp != "p") { // Pseudonummer linkt nur GebÀude 
    246255        echo "\n\n<a id='fs'></a>\n<h3><img src='ico/Flurstueck.png' width='16' height='16' alt=''> Flurst&uuml;cke</h3>" 
    247256        ."\n<p>mit dieser Lagebezeichnung.</p>"; 
     
    261270        if (!$resf) { 
    262271                echo "\n<p class='err'>Fehler bei Flurst&uuml;ck.</p>"; 
    263                 if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = gml_id = '".$gmlid."'</p>";}         
     272                if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".htmlentities(str_replace("$1", "'".$gmlid."'", $sql), ENT_QUOTES, "UTF-8")."</p>";}    
    264273        } 
    265274        echo "\n<table class='fs'>" 
     
    303312// L A G E 
    304313// andere Lage mit gleicher Hausnummer suchen 
    305 if ($ltyp <> "o") { // nicht bei Gewanne (Ohne HsNr) 
     314if ($ltyp != "o") { // nicht bei Gewanne (Ohne HsNr) 
    306315        echo "\n\n<a id='lage'></a>\n<h3><img src='ico/Lage_mit_Haus.png' width='16' height='16' alt=''> Lage</h3>" 
    307316        ."\n<p>Andere Lagebezeichnungen zur gleichen Hausnummer.</p>"; 
    308317        $whereclaus="WHERE land= $1 AND regierungsbezirk= $2 AND kreis= $3 AND gemeinde= $4 AND lage= $5 "; 
    309318 
    310         $url=$_SERVER['PHP_SELF']."?gkz=".$gkz; // Basis 
     319        $url=selbstverlinkung()."?gkz=".$gkz; // Basis 
    311320        if ($showkey) {$url.="&amp;showkey=j";} 
    312321        $url.="&amp;gmlid="; 
     
    323332                        $res = pg_execute("", $v); 
    324333                        if (!$res) { 
    325                                 echo "\n<p class='err'>Fehler bei Nebengeb&auml;ude.<br>".$sql."</p>"; 
    326                                 if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."</p>";} 
     334                                echo "\n<p class='err'>Fehler bei Nebengeb&auml;ude.</p>"; 
     335                                if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."</p>";} // 7 $-Parameter 
    327336                        } 
    328337                        $neb=0; 
     
    331340                                $neb++; 
    332341                        } 
    333                         if ($neb == 0) {echo "keine";} 
     342                        if ($neb === 0) {echo "keine";} 
    334343                        echo "</p>"; 
    335344                break; 
     
    349358                                $hg++; 
    350359                        } 
    351                         if ($hg == 0) {echo "&nbsp;Kein Hauptgeb&auml;ude gefunden.";} 
     360                        if ($hg === 0) {echo "&nbsp;Kein Hauptgeb&auml;ude gefunden.";} 
    352361                        echo "</p>"; 
    353362 
     
    360369                        if (!$res) { 
    361370                                echo "\n<p class='err'>Fehler bei Nebengeb&auml;ude.</p>"; 
    362                                 if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."</p>";}                       
     371                                if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."</p>";} // 7 $-Parameter              
    363372                        } 
    364373                        $neb=0; 
     
    367376                                $neb++; 
    368377                        } 
    369                         if ($neb == 0) {echo "keine";} 
     378                        if ($neb === 0) {echo "keine";} 
    370379                        echo "</p>"; 
    371380                break; 
     
    374383 
    375384// G E B A E U D E 
    376 if ($ltyp <> "o") { // OhneHsNr linkt nur Flurst. 
     385if ($ltyp != "o") { // OhneHsNr linkt nur Flurst. 
    377386        echo "\n\n<a id='geb'></a>\n<h3><img src='ico/Haus.png' width='16' height='16' alt=''> Geb&auml;ude</h3>" 
    378387        ."\n<p>mit dieser Lagebezeichnung.</p>"; 
     
    396405        if (!$res) { 
    397406                echo "\n<p class='err'>Fehler bei Geb&auml;ude.</p>"; 
    398                 if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = gml_id = '".$gmlid."'</p>";} 
     407                if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".htmlentities(str_replace("$1", "'".$gmlid."'", $sql), ENT_QUOTES, "UTF-8")."</p>";} 
    399408        } 
    400409        echo "\n<table class='geb'>" 
     
    444453</div> 
    445454 
    446 <?php footer($gmlid, $_SERVER['PHP_SELF']."?", "&amp;ltyp=".$ltyp); ?> 
     455<?php footer($gmlid, selbstverlinkung()."?", "&amp;ltyp=".$ltyp); ?> 
    447456 
    448457</body> 
  • trunk/info/info/alkisn/alkisnamstruk.php

    r412 r422  
    77        Version: 
    88        2016-02-24 Version fuer norGIS-ALKIS-Import 
    9         2016-11-29 HTML5, Gemeinsam genutzte Datenbanken ermöglichen 
    10         2017-06-02 Validierung Eingabeparameter, Feinkorrekturen 
    11         2017-10-09 Sauber filtern auf endet IS NULL 
    12         2017-10-17 Deutsches Datumsformat im Geburtsdatum 
    13         2017-12-20 Anlass und Datum zur Adresse ausgeben, wenn es mehrere gibt oder SchlÃŒssel angefordert werden 
    14         2018-04-23 &nodebug 
    15         2018-11-09 Umstellung Full-Schema 
     9        ... 
     10        2020-02-20 Authentifizierung ausgelagert in Function darf_ich() 
     11        2020-12-03 function selbstverlinkung() statt $_SERVER['PHP_SELF'] 
     12        2020-12-15 Input-Validation und Strict Comparisation (===) 
    1613*/ 
     14ini_set("session.cookie_httponly", 1); 
    1715session_start(); 
    1816$multiadress="n"; $showkey="n"; $nodebug=""; // Var. aus Parameter initalisieren 
     
    2018 
    2119// strikte Validierung aller Parameter 
    22 if (!isset($gmlid) or !preg_match('#^[0-9A-Za-z]{16}$#', $gmlid)) {die("Eingabefehler gmlid");} 
    23 if (!isset($gkz) or !preg_match('#^[0-9]{3}$#', $gkz)) {die("Eingabefehler gkz");} 
     20if (isset($gmlid)) { 
     21        if (!preg_match('#^[0-9A-Za-z]{16}$#', $gmlid)) {die("Eingabefehler gmlid");} 
     22} else { 
     23        die("Fehlender Parameter"); 
     24} 
     25if (isset($gkz)) { 
     26        if (!preg_match('#^[0-9]{3}$#', $gkz)) {die("Eingabefehler gkz");} 
     27} else { 
     28        die("Fehlender Parameter"); 
     29} 
    2430if (!preg_match('#^[j|n]{0,1}$#', $showkey)) {die ("Eingabefehler showkey");} 
    25 if ($showkey == "j") {$showkey=true;} else {$showkey=false;} 
     31if ($showkey === "j") {$showkey=true;} else {$showkey=false;} 
    2632if (!preg_match('#^[j|n]{0,1}$#', $multiadress)) {die ("Eingabefehler multiadress");} 
    2733if (!preg_match('#^j{0,1}$#', $nodebug)) {die("Eingabefehler nodebug");} 
    2834 
    2935require_once("alkis_conf_location.php"); 
    30 if ($auth == "mapbender") {require_once($mapbender);} 
    3136include("alkisfkt.php"); 
    32  
    3337?> 
    3438<!doctype html> 
     
    4751</head> 
    4852<body> 
    49  
    5053<?php 
     54$erlaubnis = darf_ich(); if ($erlaubnis === 0) { die('<p class="stop1">Abbruch</p></body>'); } 
     55 
    5156// Mit URL-Parameter "&nodebug=j" kann man die Entwicklungsumgebung (in Conf definiert) ausschalten. 
    5257// Manuell an die URL anfÃŒgen, wirkt nur temporÀr und wird nicht in Links weiter gereicht. 
    53 if ($nodebug == "j") {$debug=0;}  
    54  
    55 echo "<p class='nakennz'>ALKIS Name id=".$gmlid."&nbsp;</p>\n" // Balken 
     58if ($nodebug === "j") {$debug=0;}  
     59 
     60echo "<p class='balken nakennz'>ALKIS Name id=".$gmlid."&nbsp;</p>\n" // Balken 
    5661."\n<h2><img src='ico/Eigentuemer.png' width='16' height='16' alt=''> Person</h2>"; 
    5762$con = pg_connect($dbconn." options='--application_name=ALKIS-Auskunft_alkisnamstruk.php'"); 
     
    6873if (!$res) { 
    6974        echo "\n<p class='err'>Fehler bei Zugriff auf Namensnummer</p>"; 
    70         if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = gml_id = '".$gmlid."'</p>";} 
     75        if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities(str_replace("$1", "'".$gmlid."'", $sql), ENT_QUOTES, "UTF-8")."</p>";} 
    7176} 
    7277if ($row = pg_fetch_assoc($res)) { 
     
    9297 
    9398        // A d r e s s e 
    94         if ($multiadress == "j") {$plural="n";} else {$plural="";} 
     99        if ($multiadress === "j") {$plural="n";} else {$plural="";} 
    95100        echo "\n\n<h3><img src='ico/Strasse_mit_Haus.png' width='16' height='16' alt=''> Adresse".$plural."</h3>"; 
    96101        // Es können redundante Adressen vorhanden sein, z.B. aus Migration, temporÀr aus LBESAS. 
     
    106111        if (!$resa) { 
    107112                echo "\n<p class='err'>Fehler bei Adressen</p>"; 
    108                 if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".$sqla."<br>$1=gml(Person)= '".$gmlid."'</p>";} 
     113                if ($debug > 2) {echo "\n<p class='err'>SQL=<br>". str_replace("$1", "'".$gmlid."'", $sqla)."</p>";} 
    109114        } 
    110115 
     
    113118        while($rowa = pg_fetch_assoc($resa)) { 
    114119                $j++; 
    115                 if ($multiadress == "j" OR $j == 1) { 
     120                if ($multiadress === "j" OR $j === 1) { 
    116121                        $gmla=$rowa["gml_id"]; 
    117122                        $plz=$rowa["plz"]; 
     
    124129                        $datum=$rowa["datum"]; 
    125130                        echo "<table>\n"; 
    126                                 if ($multiadress == "j" OR $showkey) { 
     131                                if ($multiadress === "j" OR $showkey) { 
    127132                                        if ($debug > 0) { // nur Entw.: Sortierung gml_id vs. beginnt? 
    128133                                                echo "\t<tr><td class='dbg'>gml_id:</td><td class='dbg'>".$rowa["gml_id"]."</td></tr>\n"; 
     
    148153        } 
    149154        pg_free_result($resa); 
    150         if ($j == 0) { 
     155        if ($j === 0) { 
    151156                echo "\n<p class='err'>Keine Adressen.</p>"; 
    152157        } elseif ($j > 1) { 
    153158                echo "\n\t\t<p class='nwlink noprint'>" 
    154                 ."\n\t\t\t<a href='".$_SERVER['PHP_SELF']. "?gkz=".$gkz."&amp;gmlid=".$gmlid; 
     159                ."\n\t\t\t<a href='".selbstverlinkung(). "?gkz=".$gkz."&amp;gmlid=".$gmlid; 
    155160                if ($showkey) {echo "&amp;showkey=j";} 
    156                 if ($multiadress == "j") { 
     161                if ($multiadress === "j") { 
    157162                        echo "&amp;multiadress=n' title='mehrfache Adressen unterdr&uuml;cken'>erste Adresse "; 
    158163                } else { 
     
    183188                echo "\n<p class='err'>Fehler bei Grundbuch</p>"; 
    184189                if ($debug > 2) { 
    185                         echo "\n<p class='err'>SQL=<br>".htmlentities($sqlg, ENT_QUOTES, "UTF-8")."<br>$1 = gml_id = '".$gmlid."'</p>"; 
     190                        echo "\n<p class='err'>SQL=<br>".htmlentities(str_replace("$1", "'".$gmlid."'", $sqlg ), ENT_QUOTES, "UTF-8")."</p>"; 
    186191                } 
    187192        } 
     
    231236 
    232237                        echo "\n\t<td>"; // Anteil 
    233                                 if ($zae == "") { 
     238                                if ($zae == '') { 
    234239                                        echo "&nbsp;"; 
    235240                                } else { 
     
    252257        pg_free_result($resg); 
    253258        echo "</table>"; 
    254         if ($i == 0) {echo "\n<p class='err'>Kein Grundbuch.</p>";} 
     259        if ($i === 0) {echo "\n<p class='err'>Kein Grundbuch.</p>";} 
    255260} else { 
    256261        echo "\n\t<p class='err'>Fehler! Kein Treffer f&uuml;r\n\t<a target='_blank' href='alkisrelationen.php?gkz=".$gkz."&amp;gmlid=".$gmlid."'>".$gmlid."</a>\n</p>\n\n"; 
     
    265270</div> 
    266271 
    267 <?php footer($gmlid, $_SERVER['PHP_SELF']."?", ""); ?> 
     272<?php footer($gmlid, selbstverlinkung()."?", ""); ?> 
    268273 
    269274</body> 
  • trunk/info/info/alkisn/alkisstrasse.php

    r412 r422  
    88        Version: 
    99        2016-02-24 Version fuer norGIS-ALKIS-Import 
    10         2016-11-29 HTML5, Gemeinsam genutzte Datenbanken ermöglichen, SQL optimiert (FS-Liste jetzt schneller) 
    11         2017-02-23 Neuer Parameter &haus=m/o zum alkisexport.php 
    12         2017-06-08 Validierung Eingabeparameter, gestreifte Tabelle, Feinkorrekturen 
    13         2017-10-09 Sauber filtern auf endet IS NULL 
    14         2018-04-23 &nodebug 
    15         2018-11-09 Umstellung Full-Schema 
     10        ... 
     11        2020-02-20 Authentifizierung ausgelagert in Function darf_ich() 
     12        2020-12-15 Input-Validation und Strict Comparisation (===) 
    1613*/ 
     14ini_set("session.cookie_httponly", 1); 
    1715session_start(); 
    1816$showkey="n"; $nodebug=""; // Var. aus Parameter initalisieren 
     
    2018 
    2119// strikte Validierung aller Parameter 
    22 if (!isset($gmlid) or !preg_match('#^[0-9A-Za-z]{16}$#', $gmlid)) {die("Eingabefehler gmlid");} 
    23 if (!isset($gkz) or !preg_match('#^[0-9]{3}$#', $gkz)) {die("Eingabefehler gkz");} 
     20if (isset($gmlid)) { 
     21        if (!preg_match('#^[0-9A-Za-z]{16}$#', $gmlid)) {die("Eingabefehler gmlid");} 
     22} else { 
     23        die("Fehlender Parameter"); 
     24} 
     25if (isset($gkz)) { 
     26        if (!preg_match('#^[0-9]{3}$#', $gkz)) {die("Eingabefehler gkz");} 
     27} else { 
     28        die("Fehlender Parameter"); 
     29} 
    2430if (!preg_match('#^[j|n]{0,1}$#', $showkey)) {die ("Eingabefehler showkey");} 
    25 if ($showkey == "j") {$showkey=true;} else {$showkey=false;} 
     31if ($showkey === "j") {$showkey=true;} else {$showkey=false;} 
    2632if (!preg_match('#^j{0,1}$#', $nodebug)) {die("Eingabefehler nodebug");} 
    2733 
    28 require_once("alkis_conf_location.php"); 
    29 if ($auth == "mapbender") {require_once($mapbender);} 
    30 include("alkisfkt.php"); 
    31  
     34include "alkis_conf_location.php"; 
     35include "alkisfkt.php"; 
    3236?> 
    3337<!doctype html> 
     
    4751<body> 
    4852<?php 
     53$erlaubnis = darf_ich(); if ($erlaubnis === 0) { die('<p class="stop1">Abbruch</p></body>'); } 
     54 
    4955// Mit URL-Parameter "&nodebug=j" kann man die Entwicklungsumgebung (in Conf definiert) ausschalten. 
    5056// Manuell an die URL anfÃŒgen, wirkt nur temporÀr und wird nicht in Links weiter gereicht. 
    51 if ($nodebug == "j") {$debug=0;}  
     57if ($nodebug === "j") {$debug=0;}  
    5258 
    5359$con = pg_connect($dbconn." options='--application_name=ALKIS-Auskunft_alkisstrasse.php'"); 
     
    6975if (!$res) { 
    7076        echo "\n<p class='err'>Fehler bei Lagebezeichnungskatalogeintrag.</p>"; 
    71         if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = gml_id = '".$gmlid."'</p>";} 
     77        if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".htmlentities(str_replace("$1", "'".$gmlid."'", $sql), ENT_QUOTES, "UTF-8")."</p>";} 
    7278} 
    7379if ($row = pg_fetch_assoc($res)) { 
     
    7682        $gem=$row["gemeinde"]; 
    7783        $kennz=$gem."-".$lage." (".$snam.")"; // Schluessel als Sucheingabe in NAV brauchbar? 
    78         echo "\n<p class='strasse'>ALKIS Stra&szlig;e ".$kennz."&nbsp;</p>"; // Balken 
     84        echo "\n<p class='balken strasse'>ALKIS Stra&szlig;e ".$kennz."&nbsp;</p>"; // Balken 
    7985} else { 
    8086        echo "\n<p class='err'>Kein Treffer bei Lagebezeichnungskatalogeintrag.</p>"; 
     
    155161if (!$resf) { 
    156162        echo "\n<p class='err'>Fehler bei Flurst&uuml;ck.</p>"; 
    157         if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = gml_id = '".$gmlid."'</p>";}         
     163        if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".htmlentities(str_replace("$1", "'".$gmlid."'", $sql), ENT_QUOTES, "UTF-8")."</p>";}    
    158164} 
    159165 
     
    206212                ."\n\t<td class='hsnr'>".$rowf["hausnummer"]."</td>" 
    207213                ."\n\t<td>\n\t\t<p class='nwlink noprint'>"; 
    208                         if ($ltyp == 'm') { // nur Typ "Mit Haus" anzeigen. Dar Typ 'o' ist immer gleich und identisch mit dem Link im Kopf 
     214                        if ($ltyp === 'm') { // nur Typ "Mit Haus" anzeigen. Dar Typ 'o' ist immer gleich und identisch mit dem Link im Kopf 
    209215                                echo "\n\t\t<a href='alkislage.php?gkz=".$gkz."&amp;ltyp=".$ltyp."&amp;gmlid=".$lgml; 
    210216                                if ($showkey) {echo "&amp;showkey=j";} 
     
    238244</div> 
    239245 
    240 <?php footer($gmlid, $_SERVER['PHP_SELF']."?", ""); ?> 
     246<?php footer($gmlid, selbstverlinkung()."?", ""); ?> 
    241247 
    242248</body> 
  • trunk/info/info/featureinfo.css

    r107 r422  
    1 /* Style fuer Feature-Info-Request - nicht kommunal-spezifisch, Vers. 17.12.2009 */ 
    2 body {  background-color: #FCFCFC;} 
    3 h1, h2, p, td, a, iframe, div {font-family:Verdana, Arial, Helvetica, sans-serif; color:navy;} 
    4 h1      {color:navy; 
    5         font-size:13pt; 
    6         text-align:center; 
    7         border-bottom:2px solid #AAAAAA; 
    8         border-top:2px solid #AAAAAA; 
    9         margin-bottom:6px;} 
    10 h2      {font-size:13pt;} 
     1/* Style fuer Feature-Info-Request - nicht kommunal-spezifisch, 
     2Vers. 2020-10-14 inlay f. ALKIS */ 
     3body {background-color: #FCFCFC;} 
     4h1, h2, p, td, th, a, iframe, div {font-family:Verdana, Arial, Helvetica, sans-serif; color:navy;} 
     5h1 {color:navy; font-size:14pt; text-align:center; border-bottom:2px solid #AAAAAA; 
     6        border-top:2px solid #AAAAAA; margin-bottom:6px;} 
     7h2      {font-size: 13pt;} 
    118p, td, a, iframe {font-size:11pt;} 
    12 p.datum, a.datum {font-size: 7pt; text-align:right;} 
    13 p.hinweis, td.hinweis, div.hinweis {font-size: 8pt;} 
    14 p.err { color: red; } 
     9p.datum, a.datum {font-size:8pt; text-align:right;} 
     10p.hinweis, td.hinweis, div.hinweis {font-size:8pt;} 
     11p.err {color:red;} 
     12 
    1513/* Tabelle allgemein */ 
    16 td      {min-width:40px; border-bottom:1px solid gray;} 
     14td, th  {min-width:40px; border-bottom:1px solid gray;} 
     15 
    1716/* Tabellenfeld invisible */ 
    1817td.inv {border-bottom:0px;} 
     18 
    1919/* linke Tabellenspalte - Feldname */ 
    20 td.li, td.gr { 
    21         color:gray; 
    22         padding-left:8px; 
    23         padding-right:8px; 
    24         border-bottom:0px; 
    25         vertical-align:top; } 
     20td.li, td.gr { color:gray; padding-left:8px; padding-right:8px; border-bottom:0px; vertical-align:top;} 
     21 
    2622/* Tabellenspalte - Gruppenueberschrift */ 
    27 td.gr { margin-top:8px; 
    28         font-style:italic ; 
    29         font-stretch:expanded; 
    30         border-top:1px dotted #AAAAAA; } 
    31 /* Tabellenspalte - Nav-Form gerahmt Google */ 
    32 td.nav, div.nav { 
    33         padding:8px; 
    34         margin:8px; 
    35         border:1px solid #AAAAAA; 
    36         background-color: #ffffdd;} 
    37 /* Tabellenspalte - Nav-Form gerahmt OpenRouteService */ 
    38 td.ors, div.ors { 
    39         padding:8px; 
    40         margin:8px; 
    41         border:1px solid #AAAAAA; 
    42         background-color: #ddffdd;} 
     23td.gr { margin-top:8px; font-style:italic; font-stretch:expanded; border-top:1px dotted #AAAAAA;} 
     24 
     25/* Tabellenspalte - Nav-Form gerahmt Google  
     26td.nav, div.nav {padding:8px; margin:8px; border:1px solid #AAAAAA; background-color: #ffffdd;} */ 
     27 
     28/* Tabellenspalte - Nav-Form gerahmt OpenRouteService  
     29td.ors, div.ors {padding:8px; margin:8px; border:1px solid #AAAAAA; background-color: #ddffdd;} */ 
     30 
    4331/* cms2map */ 
    44 div.poi {text-align: center; } 
    45 iframe.poi { 
    46         text-align: center; 
    47         margin: 1px; 
    48         padding: 1px; 
    49         align: middle; 
    50         height: 40px; 
    51         width: 96%; 
    52         scrolling: no; 
    53         frameborder: 0; 
    54         background-color: #fff5fa;} 
     32div.poi {text-align:center;} 
     33iframe.poi {text-align:center; margin:1px; padding:1px; height:40px; width:96%; background-color:#fff5fa;} 
    5534a.cms2map {background-color: #ffff22;} 
    5635 
     36/* iframe.inlay {border:1px dotted #FFBBBB; width: 100%; height: 400px;} */ 
     37iframe.inlay {border:0px; ; width: 98%; height: 580px;} 
     38 
    5739@media print { 
    58         body { 
    59                 width: 100%; 
    60                 background-color:white; 
    61         } 
     40        body { width:100%; background-color:white;      } 
    6241} 
Note: See TracChangeset for help on using the changeset viewer.