Changeset 425


Ignore:
Timestamp:
12/30/21 17:49:00 (2 years ago)
Author:
frank.jaeger
Message:

Web-GIS-Auskunft und Mapbender2-Navigation: neue Konfigurations-Parameter und verbessertes Grundbuch-Modul

Location:
trunk
Files:
1 added
1 deleted
24 edited

Legend:

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

    r422 r425  
    1010 
    1111        Version: 
    12         2016-02-24 Version fuer norGIS-ALKIS-Import 
     12        2016-02-24 Version fÃŒr norGIS-ALKIS-Import 
    1313        .... 
    1414        2020-12-03 function selbstverlinkung() statt $_SERVER['PHP_SELF'] 
    1515        2020-12-15 Input-Validation und Strict Comparisation (===) 
    1616 
    17         H i n w e i s :  Dies Modul wird beim Entwickler nicht mehr produktiv eingesetzt. 
     17H i n w e i s :  Dies Modul wird beim Entwickler nicht mehr produktiv eingesetzt. 
    1818                Statt dessen wird "alkisinlayausk.php" verwendet um von einer WMS-FeatureInfo in ein Fenster ÃŒberzuleiten. 
    1919                Mangels Praxis bleiben Fehler möglicherweise unerkannt. 
     
    4545 
    4646$erlaubnis = darf_ich(); if ($erlaubnis === 0) { die('<p class="stop1">Abbruch</p></body>'); } 
     47$dbg=$debug; // CONF in Arbeits-Variable 
    4748 
    4849$con = pg_connect($dbconn." options='--application_name=ALKIS-Auskunft_alkisausk.php'"); 
     
    5960if (!$res) { 
    6061        echo "\n<p class='err'>Fehler bei Flurstuecksdaten.</p>"; 
    61         if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".$sql."<br>$1 = gml_id = '".$gmlid."'</p>";} 
     62        if ($dbg > 2) {echo "\n<p class='err'>SQL=<br>".$sql."<br>$1 = gml_id = '".$gmlid."'</p>";} 
    6263} 
    6364 
     
    8586if ( ($filtkreis != '' and $filtkreis != $fskrs) or ($filtgem != '' and $filtgem != $fsgem) ) { 
    8687        // Einer der gesetzten Filter passt nicht 
    87         if ($debug > 2) { 
     88        if ($dbg > 2) { 
    8889                echo "\n<p class='err'>Filter Kreis='".$filtkreis."', Gemeinde='".$filtgem."'</p>"; 
    8990                echo "\n<p class='err'>Flstk. Kreis='".$fskrs."', Gemeinde='".$fsgem."'</p>"; 
     
    156157if (!$res) { 
    157158        echo "\n<p class='err'>Fehler bei Lagebezeichnung mit Hausnummer.</p>"; 
    158         if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".$sql."<br>$1 = gml_id = '".$gmlid."'</p>";} 
     159        if ($dbg > 2) {echo "\n<p class='err'>SQL=<br>".$sql."<br>$1 = gml_id = '".$gmlid."'</p>";} 
    159160} 
    160161$j=0; 
     
    196197if (!$resg) { 
    197198        echo "\n<p class='err'>Keine Buchungen.</p>"; 
    198         if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".$sql."<br>$1 = gml_id = '".$gmlid."'</p>";} 
     199        if ($dbg > 2) {echo "\n<p class='err'>SQL=<br>".$sql."<br>$1 = gml_id = '".$gmlid."'</p>";} 
    199200} 
    200201 
  • trunk/info/info/alkisn/alkisauszug.css

    r422 r425  
    1010        2021-03-08  Gruppenwechsel-ZwischenÃŒberschrift 
    1111        2021-03-17      Balken von Bauwerk Farbe wie im WMS 
     12        2021-12-30      Spalte nwlink breiter, Class td.flag entfÀllt, Tabellenkopf Hintergrund 
    1213 
    1314        https://wiki.selfhtml.org/wiki/Grafik/Farbpaletten#Farbnamen 
     
    100101td.lr   {color: black; padding-left: 4px;}      /* Liste Rechts */ 
    101102td.re   {min-width: 80px; padding-right: 4px; text-align: right;}       /* RechtsbÃŒndig */ 
    102 td.fla  {width: 110px; padding-right: 4px; text-align: right;}          /* Flaechen rechtsbuendig (stellengerecht) */ 
    103 td.flag {min-width: 110px; padding-right: 4px; text-align: right;}      /* .. im GB-Bestandsnachweis erweiterbar */ 
     103td.fla  {width: 110px; padding-right: 4px; text-align: right;}          /* FlÀchen rechtsbuendig (stellengerecht) */ 
    104104td.fsnr {padding-right: 4px; text-align: right;}                                        /* Flst.-Nr. rechtsbuendig */ 
    105105td.key  {width:  35px; padding-right: 4px; padding-left: 4px;} 
    106 /* td.emz       {width: 45px; padding-right: 4px; padding-left: 4px; text-align: right;} Ertragsmesszahl der Bodenschaetzung */ 
     106/* td.emz       {width: 45px; padding-right: 4px; padding-left: 4px; text-align: right;} Ertragsmesszahl der BodenschÀtzung */ 
    107107td.kurz {width: 26px; padding-left: 4px;} 
    108 td.nanu {width: 50px;}                                                                  /* Namensnummer */ 
     108td.nanu {width: 50px;} /* Namensnummer */ 
    109109td.sond, p.sond {font-size: 9pt; font-style: italic; background-color: white; 
    110                 border: 1px dotted silver; padding: 6px;}               /* Sondereigentumsbeschreibung */ 
     110                border: 1px dotted silver; padding: 6px;} /* Sondereigentumsbeschreibung */ 
    111111td.nrap, p.nrap {font-size: 9pt; font-style: italic; background-color: white;}  /* Nummer im Aufteilungsplan */ 
    112112td.fett {font-weight: bold;} 
    113 td.nwlink {min-width: 80px;}                                                    /* Link zum Nachweis */ 
     113td.nwlink {min-width: 99px;} /* Link zum Nachweis */ 
    114114 
    115115/* Kopfzeile, SpaltenÃŒberschrift, GW-Zwischenzeile */ 
    116 td.head, td.heads, td.gw{font-style: italic; padding-top: 2px;}  
     116td.head, td.heads, td.gw{font-style: italic; padding-top: 2px; background-color: rgb(246,247,248);}      
    117117td.head         {border-bottom: 1px solid gray;}         
    118 td.heads        {border-bottom: 1px solid black;}                       /* Kopf Sortierspalte */ 
    119 td.gw           {background-color: WhiteSmoke;}                         /* Gruppen-Wechsel */ 
     118td.heads        {border-bottom: 1px solid black;}       /* Kopf Sortierspalte */ 
     119td.gw           {background-color: WhiteSmoke;}         /* Gruppen-Wechsel */ 
    120120 
    121121td.sum {border-top: 2px dotted maroon;  border-bottom:3px solid maroon; 
    122122        border-left:0px dotted maroon;  border-right:0px dotted maroon; font-weight: bold;}     /* unter dem Strich = Summenzeile */ 
    123 td.bez  {font-weight: bold;}            /* Beziehungen */ 
    124 td.nhd  {width: 150px;}                         /* Namen - linke / rechte Spalte */ 
     123td.bez  {font-weight: bold;}    /* Beziehungen */ 
     124td.nhd  {width: 150px;}                 /* Namen - linke / rechte Spalte */ 
    125125td.nam  {font-weight: bold;} 
    126126/* td.gbl       {border-bottom: 1px dotted green;}       Name: GB-Liste */ 
     
    132132 
    133133/* Fallunterscheidung bei GebÀude oder Bauwerk auf FlurstÃŒck: */ 
    134 td.gin {color: rgb(0,50,0);}                    /* in FS */ 
    135 td.gtl {color: rgb(140,140,100);}               /* teilweise auf FS */ 
    136 td.gan {color: rgb(210,170,170);}               /* angrenzend an FS*/ 
     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*/ 
    137137 
    138138/* Farbwechsel je Zeile pair/unpair */ 
  • trunk/info/info/alkisn/alkisbaurecht.php

    r422 r425  
    44 
    55        Version: 
    6         2016-02-24 Version fuer norGIS-ALKIS-Import 
     6        2016-02-24 Version fÃŒr norGIS-ALKIS-Import 
    77        .... 
    88        2020-02-20 Authentifizierung ausgelagert in Function darf_ich() 
    99        2020-12-03 function selbstverlinkung() statt $_SERVER['PHP_SELF'] 
    1010        2020-12-15 Input-Validation und Strict Comparisation (===) 
     11        2021-12-09 Neue Parameter: $katAmtMix (Kataster-Amt-Mix), $PrntBtn (Drucken-SchaltflÀche) 
    1112*/ 
    1213ini_set("session.cookie_httponly", 1); 
     
    4849$erlaubnis = darf_ich(); if ($erlaubnis === 0) {die('<p class="stop1">Abbruch</p></body>');} 
    4950 
     51$dbg=$debug; // CONF in Arbeits-Variable 
    5052// Mit URL-Parameter "&nodebug=j" kann man die Entwicklungsumgebung (in Conf definiert) ausschalten. 
    51 // Manuell an die URL anfÃŒgen, wirkt nur temporÀr und wird nicht in Links weiter gereicht. 
    52 if ($nodebug === "j") {$debug=0;}  
     53// Wirkt temporÀr und wird nicht in Links weiter gereicht. 
     54if ($nodebug === "j") {$dbg=0;}  
    5355 
    5456$con = pg_connect($dbconn." options='--application_name=ALKIS-Auskunft_alkisbaurecht.php'"); 
     
    6062FROM ax_bauraumoderbodenordnungsrecht r  
    6163LEFT JOIN ax_artderfestlegung_bauraumoderbodenordnungsrecht a ON r.artderfestlegung = a.wert 
    62 LEFT JOIN ax_dienststelle d ON r.land=d.land AND r.stelle=d.stelle  
    63 LEFT JOIN ax_behoerde wd ON d.stellenart = wd.wert 
     64LEFT JOIN ax_dienststelle d ON r.land=d.land AND r.stelle=d.stelle ".UnqKatAmt("r","d") 
     65."LEFT JOIN ax_behoerde wd ON d.stellenart = wd.wert 
    6466WHERE r.gml_id= $1 AND r.endet IS NULL AND d.endet IS NULL;"; 
    6567 
     
    6971if (!$res) { 
    7072        echo "\n<p class='err'>Fehler bei Baurecht.</p>"; 
    71         if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".htmlentities(str_replace("$1", "'".$gmlid."'", $sql), ENT_QUOTES, "UTF-8")."</p>";} 
     73        if ($dbg > 2) {echo "\n<p class='err'>SQL=<br>".htmlentities(str_replace("$1", "'".$gmlid."'", $sql), ENT_QUOTES, "UTF-8")."</p>";} 
     74} 
     75if ($dbg > 0) { 
     76        $zeianz=pg_num_rows($res); 
     77        if ($zeianz > 1){ 
     78                echo "\n<p class='err'>Die Abfrage liefert mehr als ein (".$zeianz.") Baurecht-Objekt!</p>"; 
     79                if ($dbg > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities(str_replace("$1","'".$gmlid."'",$sql), ENT_QUOTES, "UTF-8")."</p>";} 
     80        } 
    7281} 
    7382if ($row = pg_fetch_assoc($res)) { 
     
    8089        $behd=$row["dokumentation"]; 
    8190 
    82         // Balken 
    83         echo "<p class='balken recht'>ALKIS Bau-, Raum- oder Bodenordnungsrecht ".$artfest."-".$verfnr."&nbsp;</p>"; 
    84  
     91        echo "<p class='balken recht'>ALKIS Bau-, Raum- oder Bodenordnungsrecht ".$artfest."-".$verfnr."&nbsp;</p>"; // Balken 
    8592        echo "\n<h2><img src='ico/Gericht.png' width='16' height='16' alt=''> Bau-, Raum- oder Bodenordnungsrecht</h2>"; 
    86  
    8793        echo "\n<table>" 
    8894                ."\n<tr>" 
     
    133139."\n<p>Ermittelt durch geometrische Verschneidung. Nach Gr&ouml;&szlig;e absteigend.</p>"; 
    134140 
    135 $sql ="SELECT f.gml_id, f.flurnummer, f.zaehler, f.nenner, f.amtlicheflaeche, round(st_area(ST_Intersection(r.wkb_geometry,f.wkb_geometry))::numeric,1) AS schnittflae  
    136 FROM ax_flurstueck f, ax_bauraumoderbodenordnungsrecht r 
     141$sql ="SELECT f.gml_id, g.bezeichnung, f.gemarkungsnummer, f.flurnummer, f.zaehler, f.nenner, f.amtlicheflaeche, round(st_area(ST_Intersection(r.wkb_geometry,f.wkb_geometry))::numeric,1) AS schnittflae  
     142FROM ax_flurstueck f   
     143JOIN ax_gemarkung g ON f.gemeindezugehoerigkeit_land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer ".UnqKatAmt("f","g") 
     144."JOIN ax_bauraumoderbodenordnungsrecht r 
     145ON st_intersects(r.wkb_geometry,f.wkb_geometry) = true AND st_area(st_intersection(r.wkb_geometry,f.wkb_geometry)) > 0.05  
    137146WHERE r.gml_id= $1 AND f.endet IS NULL AND r.endet IS NULL "; 
    138 if ($filtgem === '' ) { // ungefiltert 
     147if ($filtgem === '' ) { 
    139148        $v=array($gmlid); 
    140149} else { 
     
    142151        $v=array($gmlid, $filtkreis, $filtgem); 
    143152} 
    144 $sql.="AND st_intersects(r.wkb_geometry,f.wkb_geometry) = true  
    145 AND st_area(st_intersection(r.wkb_geometry,f.wkb_geometry)) > 0.05  
    146 ORDER BY schnittflae DESC LIMIT 100;";  
     153$sql.="ORDER BY schnittflae DESC LIMIT 100;";  
    147154// > 0.0 ist gemeint, Ungenauigkeit durch st_simplify 
    148 // Limit: Flurbereinig. kann gross werden! 
     155// Limit: Flurbereinig. kann groß werden! 
    149156// Trotz Limit lange Antwortzeit, wegen OrderBy -> intersection 
    150157 
     
    153160if (!$res) { 
    154161        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! 
     162        //if ($dbg > 2) {echo "\n<p class='err'>SQL=<br>".htmlentities(str_replace("$1", "'".$gmlid."'", $sql), ENT_QUOTES, "UTF-8")."</p>";} // ggf. mehrere Parameter! 
    156163} 
    157164 
    158165echo "\n<table class='fs'>" 
    159166        ."\n<tr>" 
    160                 ."\n\t<td class='head' title='Flur- und Flurst&uuml;cksnummer'>Flurst&uuml;ck</td>" 
     167                ."\n\t<td class='head' title='Gemarkung'>Gemarkung</td>" 
     168                ."\n\t<td class='head' title='Flurnummer'>Flur</td>" 
     169                ."\n\t<td class='head' title='Flurst&uuml;cksnummer Z&auml;hler / Nenner'>Flurst&uuml;ck</td>" 
    161170                ."\n\t<td class='heads fla' title='geometrische Schnittfl&auml;che'><img src='ico/sort.png' width='10' height='10' alt='' title='Sortierung'>Fl&auml;che</td>" 
    162171                ."\n\t<td class='head fla' title='amtliche Flurst&uuml;cksfl&auml;che, Buchfl&auml;che'>von</td>" 
     
    167176        while($row = pg_fetch_assoc($res)) { 
    168177                $fscnt++; 
     178                $gmkgnr=$row["gemarkungsnummer"]; 
     179                $gemarkung=$row["bezeichnung"]; 
     180                $nen=$row["nenner"]; 
    169181                echo "\n<tr>" 
    170                         ."\n\t<td>".$row["flurnummer"]."-<span class='wichtig'>".$row["zaehler"]; 
    171                                 $nen=$row["nenner"]; 
     182                        ."\n\t<td>"; 
     183                        if ($showkey) {echo "<span class='key'>(".$gmkgnr.")</span> ";} 
     184                        echo $gemarkung."</td>" 
     185                        ."\n\t<td>".$row["flurnummer"]."</td>" 
     186                        ."\n\t<td><span class='wichtig'>".$row["zaehler"]; 
    172187                                if ($nen != "") {echo "/".$nen;} 
    173188                        echo "</span></td>" 
     
    189204        } else { // Wahrscheinliche Ursache = Filter 
    190205                echo "\n<p class='err'>Kein Flurst&uuml;ck im berechtigten Bereich.</p>"; 
    191         //      if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = ".$gmlid." $2 = ".$filtkreis." $3 = ".$filtgem."</p>";} 
     206        //      if ($dbg > 2) {echo "\n<p class='err'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = ".$gmlid." $2 = ".$filtkreis." $3 = ".$filtgem."</p>";} 
    192207        } 
    193208} elseif ($fscnt === 100) { 
     
    196211 
    197212pg_close($con); 
    198 echo <<<END 
    199  
    200 <div class='buttonbereich noprint'> 
    201 <hr> 
    202         <a title="zur&uuml;ck" href='javascript:history.back()'><img src="ico/zurueck.png" width="16" height="16" alt="zur&uuml;ck" /></a>&nbsp; 
    203         <a title="Drucken" href='javascript:window.print()'><img src="ico/print.png" width="16" height="16" alt="Drucken" /></a>&nbsp; 
    204 </div> 
    205 END; 
     213echo " 
     214<div class='buttonbereich noprint'>\n<hr>" 
     215        ."\n\t<a title='zur&uuml;ck' href='javascript:history.back()'><img src='ico/zurueck.png' width='16' height='16' alt='zur&uuml;ck' /></a>&nbsp;"; 
     216if ($PrntBtn==true){echo "\n\t<a title='Drucken' href='javascript:window.print()'><img src='ico/print.png' width='16' height='16' alt='Drucken'></a>&nbsp;";} 
     217echo "\n</div>"; 
    206218 
    207219footer($gmlid, selbstverlinkung()."?", ""); 
    208  
    209220?> 
    210221 
  • trunk/info/info/alkisn/alkisbauwerk.php

    r422 r425  
    55        1 Bauwerk im Verkehrsbereich 
    66        2 Bauwerk im GewÀsserbereich 
    7         3 Sonstiges Bauwerk oder sonstige Einrichtung 
    8         4 Bauwerk oder Anlage fÃŒr Industrie und Gewerbe 
    9         5 Bauwerk oder Anlage fÃŒr Sport, Freizeit und Erholung 
    10         6 Leitung 
    11         7 Transportanlage 
    12         8 Turm 
    13         9 VorratsbehÀlter, Speicherbauwerk 
     7        3 Sonstiges Bauwerk oder sonstige Einrichtung 51009 
     8        4 Bauwerk oder Anlage fÃŒr Industrie und Gewerbe 51002 
     9        5 Bauwerk oder Anlage fÃŒr Sport, Freizeit und Erholung 51006 
     10        6 Leitung 51005 
     11        7 Transportanlage 51004 
     12        8 Turm 51001 
     13        9 VorratsbehÀlter, Speicherbauwerk 51003 
    1414 
    1515        Version: 
    1616        2021-03-11 Neues Modul 
    1717        2021-03-17 Korrekturen 
    18  
     18        2021-12-09 2021-12-09 Neue Parameter: $katAmtMix (Kataster-Amt-Mix), $PrntBtn (Drucken-SchaltflÀche). Debugging verbessert. 
     19 
     20ToDo: 
     21        - Icon fÃŒr "Bauwerk" machen! ggf. einzeln fÃŒr jede der 9 Arten? 
     22        - 4 weitere Objektarten, bisher nicht verwendet: 
     23        51007 'Historisches Bauwerk oder historische Einrichtung' 
     24        51008 'Heilquelle, Gasquelle' 
     25        51010 'Einrichtung in öffentlichen Bereichen' 
     26        51011 'Besonderer Bauwerkspunkt' 
    1927*/ 
    2028 
     
    2230// Ein Bauwerk "gehört zu" (Relation) einem GebÀude. Zu diesem GebÀude die Adresse(n) als Tabellen-Zeile ausgeben 
    2331function bw_gz_lage($gmlgz) { 
    24         global $gkz, $debug, $showkey; 
     32        global $gkz, $dbg, $showkey; 
    2533         
    2634        // HAUPTgebÀude  Geb >zeigtAuf> lage (mehrere) 
    27         $sqlgz="SELECT 'm' AS ltyp, l.gml_id AS lgml, s.lage, s.bezeichnung, l.hausnummer, '' AS laufendenummer " 
     35        $sqlgz ="SELECT 'm' AS ltyp, l.gml_id AS lgml, s.lage, s.bezeichnung, l.hausnummer, '' AS laufendenummer, p.bezeichnung as gemeinde " 
    2836        ."FROM ax_gebaeude g JOIN ax_lagebezeichnungmithausnummer l ON l.gml_id=ANY(g.zeigtauf) " 
    29         ."JOIN ax_lagebezeichnungkatalogeintrag s ON l.kreis=s.kreis AND l.gemeinde=s.gemeinde AND l.lage=s.lage " 
     37        ."JOIN ax_lagebezeichnungkatalogeintrag s ON l.kreis=s.kreis AND l.gemeinde=s.gemeinde AND l.lage=s.lage "       
     38        ."JOIN ax_gemeinde p ON s.land=p.land AND s.regierungsbezirk=p.regierungsbezirk AND s.kreis=p.kreis AND s.gemeinde=p.gemeinde ".UnqKatAmt("s","p") 
    3039        ."WHERE g.gml_id= $1 AND g.endet IS NULL AND l.endet IS NULL AND s.endet IS NULL "; 
    3140 
    3241        // ++ evtl. keine NEBEN-GebÀude möglich, nur Haupt-? 
    3342        // UNION - oder NEBENgebÀude  Geb >hat> Pseudo 
    34         $sqlgz.="UNION SELECT 'p' AS ltyp, l.gml_id AS lgml, s.lage, s.bezeichnung, l.pseudonummer AS hausnummer, l.laufendenummer " 
     43        $sqlgz.="UNION SELECT 'p' AS ltyp, l.gml_id AS lgml, s.lage, s.bezeichnung, l.pseudonummer AS hausnummer, l.laufendenummer, p.bezeichnung as gemeinde " 
    3544        ."FROM ax_gebaeude g JOIN ax_lagebezeichnungmitpseudonummer l ON l.gml_id=g.hat " 
    3645        ."JOIN ax_lagebezeichnungkatalogeintrag s ON l.kreis=s.kreis AND l.gemeinde=s.gemeinde AND l.lage=s.lage " 
    37         ."WHERE g.gml_id= $1 AND g.endet IS NULL AND l.endet IS NULL AND s.endet IS NULL "; // ID des Hauses" 
    38  
    39         $sqlgz.="ORDER BY bezeichnung, hausnummer, laufendenummer;"; 
     46        ."JOIN ax_gemeinde p ON s.land=p.land AND s.regierungsbezirk=p.regierungsbezirk AND s.kreis=p.kreis AND s.gemeinde=p.gemeinde ".UnqKatAmt("s","p")       
     47        ."WHERE g.gml_id= $1 AND g.endet IS NULL AND l.endet IS NULL AND s.endet IS NULL " // ID des Hauses" 
     48        ."ORDER BY bezeichnung, hausnummer, laufendenummer;"; 
    4049        $v = array($gmlgz); 
    4150        $resgz = pg_prepare("", $sqlgz); 
     
    4352        if (!$resgz) { 
    4453                echo "\n<p class='err'>Fehler bei Lage mit HsNr. zum Bauwerk</p>"; 
    45                 if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".str_replace("$1", "'".$gmlgz."'", $sqlgz)."</p>";} 
    46                 if ($debug > 1) {echo "<p class='dbg'>Fehler:".pg_result_error($resgz)."</p>";} 
     54                if ($dbg > 2) {echo "\n<p class='dbg'>SQL=<br>".str_replace("$1", "'".$gmlgz."'", $sqlgz)."</p>";} 
     55                if ($dbg > 1) {echo "<p class='dbg'>Fehler:".pg_result_error($resgz)."</p>";} 
    4756        } else { 
    4857                echo "\n<tr>"; 
     
    5665                        $hlfd=$rowgz["laufendenummer"]; 
    5766                        $gmllag=$rowgz["lgml"]; 
     67                        $gemeinde=$rowgz["gemeinde"]; 
    5868 
    5969                        if ($ltyp === "p") { 
    6070                                $lagetitl="NebengebÀude Nr. ".$hlfd; 
    61                         //      $lagetxt="Nebengeb&auml;ude Nr. ".$hlfd; // alt 
    62                                 $lagetxt=$snam."&nbsp;".$hsnr." (".$hlfd.")"; 
     71                                $lagetxt=$snam." ".$hsnr." (".$hlfd."), ".$gemeinde; 
    6372                        } else { 
    6473                                $lagetitl="HauptgebÀude - Hausnummer ".$hsnr; 
    65                                 $lagetxt=$snam."&nbsp;".$hsnr; 
     74                                $lagetxt=$snam." ".$hsnr.", ".$gemeinde; 
    6675                        } 
    6776 
     
    8291// Eine Zeile der HTML-Tabelle ausgeben 
    8392function tab_zeile($titel, $key, $inhalt, $ea, $ei) { 
    84         global $showkey, $allefelder, $debug; 
     93        global $showkey, $allefelder, $dbg; 
    8594        if ($inhalt != "" OR $allefelder) { 
    8695                echo "\n<tr>\n\t<td class='li'>".$titel."</td>\n\t<td class='fett'>"; 
     
    96105// Anwendung fÃŒr die DB-Spalten, die nicht bei jeder Bauwerks-Tabelle vorkommen 
    97106function zusatz_spalte($col, $inhalt) { // Spalten-Name, Value 
    98         global $debug; 
     107        global $dbg; 
    99108        $einh=''; 
    100109        switch ($col) {  
     
    126135        // Fehler 
    127136                default: // noch nicht berÃŒcksichtigt 
    128                         if ($debug > 1) {echo "<p class='dbg'>Der Feldname ".$col." ist in function zusatz_spalte noch nicht ber&uuml;cksichtigt.</p>";} 
     137                        if ($dbg > 1) {echo "<p class='dbg'>Der Feldname ".$col." ist in function zusatz_spalte noch nicht ber&uuml;cksichtigt.</p>";} 
    129138                        $titel=$col; 
    130139        } 
     
    144153// inhalt = gml_id oder Array mit gml_id's 
    145154function objektverweis($col, $inhalt) { 
    146         global $gkz, $showkey, $debug; 
    147 //      if ($debug > 1) {echo "<p>Verweis Typ '".$col."' auf Objekt(e): '".$inhalt."'.</p>";} 
     155        global $gkz, $showkey, $dbg; 
     156//      if ($dbg > 1) {echo "<p>Verweis Typ '".$col."' auf Objekt(e): '".$inhalt."'.</p>";} 
    148157        switch ($col) { 
    149158                case 'hatdirektunten': // [] ++ Wie kann man dies Objekt finden? 
     
    168177        // 'istabgeleitetaus';  'traegtbeizu': 'istteilvon': // -> Keine FÀlle vorhanden 
    169178                default: 
    170                         if ($debug > 1) {echo "<p class='dbg'>Der Feldname ".$col." ist in function 'objektverweis' noch nicht ber&uuml;cksichtigt.</p>";} 
    171         } 
    172 } 
    173 // alle leer: 
    174 //  SELECT * FROM bauwerke_zusammenfassung WHERE NOT istabgeleitetaus IS NULL; 
    175 //  SELECT * FROM bauwerke_zusammenfassung WHERE NOT traegtbeizu IS NULL; 
    176 //  SELECT * FROM bauwerke_zusammenfassung WHERE NOT istteilvon IS NULL; 
    177 // SELECT gml_id, hatdirektunten, st_asewkt( wkb_geometry ) as wkt FROM ax_bauwerkimgewaesserbereich WHERE NOT hatdirektunten IS NULL; 
    178 //  1 Fall  in 290: 2 / DENW15AL360000N7 ,  
    179 // SELECT gml_id, hatdirektunten, st_asewkt( wkb_geometry ) as wkt FROM ax_bauwerkimgewaesserbereich WHERE gml_id = 'DENW15AL360000N7'; 
    180 // 34 FÀlle in 200:  
    181 // 16 FÀlle in 300: 
     179                        if ($dbg > 1) {echo "<p class='dbg'>Der Feldname ".$col." ist in function 'objektverweis' noch nicht ber&uuml;cksichtigt.</p>";} 
     180        } 
     181} 
    182182 
    183183// S T A R T 
     
    185185ini_set("session.cookie_httponly", 1); 
    186186session_start(); 
    187 $allfld = "n"; $showkey="n"; $nodebug=""; // Var. aus Parameter initalisieren 
     187$allfld = "n"; $showkey="n"; $nodebug=""; // Var. initalisieren 
    188188$cntget = extract($_GET);       // Parameter in Variable umwandeln 
    189189 
     
    224224 
    225225$erlaubnis = darf_ich(); if ($erlaubnis === 0) { die('<p class="stop1">Abbruch</p></body>'); } 
    226  
    227 // Mit URL-Parameter "&nodebug=j" kann man die Entwicklungsumgebung (in Conf definiert) ausschalten. 
    228 // Manuell an die URL anfÃŒgen, wirkt nur temporÀr und wird nicht in Links weiter gereicht. 
    229 if ($nodebug === "j") {$debug=0;}  
     226$dbg=$debug; // CONF in Arbeits-Variable 
     227if ($nodebug === "j") {$dbg=0;} // Entwicklungsumgebung temporÀr ausschalten 
    230228 
    231229$con = pg_connect($dbconn." options='--application_name=ALKIS-Auskunft_alkisbauwerk.php'"); 
     
    237235 
    238236/* in ALLEN Bauwerks-Typen folgende Spalten, bisher NICHT verwendet: 
    239     processstep_ax_li_processstep_mitdatenerhebung_description[] processstep_rationale[] 
    240     processstep_datetime[] processstep_individualname[] processstep_organisationname[] processstep_positionname[] 
    241     processstep_phone[] processstep_address[] processstep_onlineresource[] processstep_hoursofservice[] 
    242     processstep_contactinstructions[] processstep_role[] processstep_ax_datenerhebung[] 
    243     processstep_scaledenominator[] processstep_sourcereferencesystem[] processstep_sourceextent[] processstep_sourcestep[] 
    244  
    245237    herkunft_source_source_ax_datenerhebung[] herkunft_source_source_scaledenominator[] herkunft_source_source_sourcereferencesystem[] 
    246238    herkunft_source_source_sourceextent[]     herkunft_source_source_sourcestep[] */ 
     
    414406if (!$resb) { 
    415407        echo "\n<p class='err'>Fehler bei Bauwerksdaten Standardfelder.</p>"; 
    416         if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".str_replace("$1","'".$gmlid."'",$sqlb)."'</p>";} 
    417         if ($debug > 1) {echo "\n<p class='dbg'>Fehler:".pg_result_error($resb)."</p>";} 
     408        if ($dbg > 0) { 
     409                echo "\n<p class='dbg'>Fehler:".pg_result_error($resb)."</p>"; 
     410                if ($dbg > 2) {echo "\n<p class='err'>SQL=<br>".str_replace("$1","'".$gmlid."'",$sqlb)."'</p>";} 
     411        } 
    418412} else { 
     413        if ($dbg > 0) { 
     414                $zeianz=pg_num_rows($resb); 
     415                if ($zeianz > 1){ 
     416                        echo "\n<p class='err'>Die Abfrage liefert mehr als ein (".$zeianz.") Bauwerk! (Standardfelder)</p>"; 
     417                        if ($dbg > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities(str_replace("$1","'".$gmlid."'",$sqlb), ENT_QUOTES, "UTF-8")."</p>";} 
     418                } 
     419        } 
    419420        if (!$rowb = pg_fetch_assoc($resb)) { 
    420421                echo "\n<p class='err'>Fehler! Kein Treffer f&uuml;r gml_id=".$gmlid."</p>"; 
    421422                die('<p class="stop1">Abbruch</p></body>'); // Das wÃŒrde sich sonst 2x wiederholen 
    422         } else { 
    423         // Treffer 
     423        } else { // Treffer 
    424424                // Seitenkopf 
    425425                echo "<p class='balken bauwerk".$btyp."'>ALKIS Bauwerk ".$btyp." - ".$gmlid."&nbsp;</p>"; // Balken, Farbe wie WMS 
     
    484484        if (!$resk) { 
    485485                echo "\n<p class='err'>Fehler bei Schl&uuml;sseltabelle ".$btyp."</p>"; 
    486                 if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".str_replace("$1","'".$gmlid."'",$sqlk)."'</p>";} 
    487                 if ($debug > 1) {echo "<p class='dbg'>Fehler:".pg_result_error($resk)."</p>";} 
     486                if ($dbg > 0) { 
     487                        echo "<p class='dbg'>Fehler:".pg_result_error($resk)."</p>"; 
     488                        if ($dbg > 2) {echo "\n<p class='err'>SQL=<br>".str_replace("$1","'".$gmlid."'",$sqlk)."'</p>";} 
     489                } 
    488490        } else { 
     491                if ($dbg > 0) { 
     492                        $zeianz=pg_num_rows($resk); 
     493                        if ($zeianz > 1){ 
     494                                echo "\n<p class='err'>Die Abfrage liefert mehr als ein (".$zeianz.") Bauwerk! (Key-Value)</p>"; 
     495                                if ($dbg > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities(str_replace("$1","'".$gmlid."'",$sqlk), ENT_QUOTES, "UTF-8")."</p>";} 
     496                        } 
     497                } 
    489498                if (!$rowk = pg_fetch_array($resk)) { 
    490499                        echo "\n<p class='err'>Fehler! Kein Treffer f&uuml;r gml_id=".$gmlid."</p>"; 
     
    532541        if (!$resz) { 
    533542                echo "\n<p class='err'>Fehler bei Bauwerk Relation.</p>"; 
    534                 if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".str_replace("$1","'".$gmlid."'",$sqlz)."'</p>";} 
    535                 if ($debug > 1) {echo "<p class='dbg'>Fehler:".pg_result_error($resz)."</p>";} 
     543                if ($dbg > 0) { 
     544                        echo "<p class='dbg'>Fehler:".pg_result_error($resz)."</p>"; 
     545                        if ($dbg > 2) {echo "\n<p class='err'>SQL=<br>".str_replace("$1","'".$gmlid."'",$sqlz)."'</p>";} 
     546                } 
    536547        } else { 
     548                if ($dbg > 0) { 
     549                        $zeianz=pg_num_rows($resz); 
     550                        if ($zeianz > 1){ 
     551                                echo "\n<p class='err'>Die Abfrage liefert mehr als ein (".$zeianz.") Bauwerk! (Zusatz-Spalten)</p>"; 
     552                                if ($dbg > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities(str_replace("$1","'".$gmlid."'",$sqlz), ENT_QUOTES, "UTF-8")."</p>";} 
     553                        } 
     554                } 
    537555                if (!$rowz = pg_fetch_array($resz)) { 
    538556                        echo "\n<p class='err'>Fehler! Kein Treffer f&uuml;r gml_id=".$gmlid."</p>"; 
     
    540558                        // Die Spalten im Row abarbeiten 
    541559                        $anzcol=pg_num_fields($resz); 
    542                 //      if ($debug > 1) {echo "<p class='dbg'>".$anzcol." Zusatz-Spalten vorhanden"."</p>";} 
    543560                        for ($i = 0; $i < $anzcol; $i++) { 
    544561                                $k=pg_field_name($resz, $i); 
     
    560577        if (!$resr) { 
    561578                echo "\n<p class='err'>Fehler bei Bauwerksdaten Zusatzfelder.</p>"; 
    562                 if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".str_replace("$1","'".$gmlid."'",$sqlr)."'</p>";} 
    563                 if ($debug > 1) {echo "<p class='dbg'>Fehler:".pg_result_error($resr)."</p>";} 
     579                if ($dbg > 0) { 
     580                        echo "<p class='dbg'>Fehler:".pg_result_error($resr)."</p>"; 
     581                        if ($dbg > 2) {echo "\n<p class='err'>SQL=<br>".str_replace("$1","'".$gmlid."'",$sqlr)."'</p>";} 
     582                } 
    564583        } else { 
     584                if ($dbg > 0) { 
     585                        $zeianz=pg_num_rows($resr); 
     586                        if ($zeianz > 1){ 
     587                                echo "\n<p class='err'>Die Abfrage liefert mehr als ein (".$zeianz.") Bauwerk! (Relationen)</p>"; 
     588                                if ($dbg > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities(str_replace("$1","'".$gmlid."'",$sqlr), ENT_QUOTES, "UTF-8")."</p>";} 
     589                        } 
     590                } 
    565591                if (!$rowr = pg_fetch_array($resr)) { 
    566592                        echo "\n<p class='err'>Fehler! Kein Treffer f&uuml;r gml_id=".$gmlid."</p>"; 
    567593                } else { // Die Spalten im Row abarbeiten 
    568594                        $anzcol=pg_num_fields($resr); 
    569                 //      if ($debug > 1) {echo "<p class='dbg'>".$anzcol." Relationen-Spalten vorhanden"."</p>";} 
    570595                        for ($i = 0; $i < $anzcol; $i++) { 
    571596                                $k=pg_field_name($resr, $i); 
     
    581606 
    582607echo "\n</table>\n"; 
    583 // +++ Test, ob ein zweiter Satz zum Bauwerk gefunden wird? Das sollte nicht sein. 
     608echo "<div class='buttonbereich noprint'>\n<hr>\n\t<a title='zur&uuml;ck' href='javascript:history.back()'><img src='ico/zurueck.png' width='16' height='16' alt='zur&uuml;ck'></a>&nbsp;"; 
     609if ($PrntBtn==true){echo "\n\t<a title='Drucken' href='javascript:window.print()'><img src='ico/print.png' width='16' height='16' alt='Drucken'></a>&nbsp;";} 
     610echo "\n</div>"; 
     611 
     612footer($gmlid, selbstverlinkung()."?", "&amp;btyp=".$btyp); 
    584613?> 
    585   
    586 <div class='buttonbereich noprint'> 
    587         <hr> 
    588         <a title="zur&uuml;ck" href='javascript:history.back()'><img src="ico/zurueck.png" width="16" height="16" alt="zur&uuml;ck"></a>&nbsp; 
    589         <a title="Drucken" href='javascript:window.print()'><img src="ico/print.png" width="16" height="16" alt="Drucken"></a> 
    590 </div> 
    591  
    592 <?php footer($gmlid, selbstverlinkung()."?", "&amp;btyp=".$btyp); ?> 
    593  
    594614</body> 
    595615</html> 
  • trunk/info/info/alkisn/alkisbestnw.php

    r422 r425  
    66 
    77        Version: 
    8         2016-02-24 Version fuer norGIS-ALKIS-Import 
     8        2016-02-24 Version fÃŒr norGIS-ALKIS-Import 
    99        .... 
    10         2020-02-20 Authentifizierung ausgelegert in Function darf_ich() 
     10        2020-02-20 Authentifizierung ausgelagert in Function darf_ich() 
    1111        2020-12-03 function selbstverlinkung() statt $_SERVER['PHP_SELF'] 
    1212        2020-12-15 Input-Validation und Strict Comparisation (===) 
     13        2021-12-09 Neue Parameter: $katAmtMix (Kataster-Amt-Mix), $PrntBtn (Drucken-SchaltflÀche) 
     14                           Tabellenstruktur verbessert und Title bei "Recht an". 
     15        2021-12-30 Bestandsnachweis recursiv ÃŒber alle Buchungs-Ebenen 
    1316*/ 
    1417ini_set("session.cookie_httponly", 1); 
     
    5457 
    5558$erlaubnis = darf_ich(); if ($erlaubnis === 0) { die('<p class="stop1">Abbruch</p></body>'); } 
    56  
    57 // Mit URL-Parameter "&nodebug=j" kann man die Entwicklungsumgebung (in Conf definiert) ausschalten. 
    58 // Manuell an die URL anfÃŒgen, wirkt nur temporÀr und wird nicht in Links weiter gereicht. 
    59 if ($nodebug === "j") {$debug=0;}  
     59$dbg=$debug; // CONF in Arbeits-Variable 
     60 
     61// Entwicklungsumgebung (in Conf definiert) ausschalten. 
     62if ($nodebug === "j") {$dbg=0;}  
    6063 
    6164$con = pg_connect($dbconn." options='--application_name=ALKIS-Auskunft_alkisbestnw.php'"); 
     
    6467// G R U N D B U C H 
    6568$sql="SELECT g.gml_id, g.bezirk, g.buchungsblattnummermitbuchstabenerweiterung AS blatt, g.blattart, wb.beschreibung AS blattartv, wb.dokumentation AS blattartd,  
    66 b.gml_id, b.bezirk, b.bezeichnung AS beznam, d.gml_id, d.land, d.bezeichnung, d.stelle, d.stellenart, wd.beschreibung AS stellev FROM ax_buchungsblatt g  
    67 LEFT JOIN ax_buchungsblattbezirk b ON g.land=b.land AND g.bezirk=b.bezirk  
    68 LEFT JOIN ax_dienststelle d ON b.land=d.land AND b.gehoertzu_stelle=d.stelle  
    69 LEFT JOIN ax_blattart_buchungsblatt wb ON g.blattart = wb.wert 
    70 LEFT JOIN ax_behoerde wd ON d.stellenart = wd.wert 
     69b.gml_id, b.bezirk, b.bezeichnung AS beznam, d.gml_id, d.land, d.bezeichnung, d.stelle, d.stellenart, wd.beschreibung AS stellev  
     70FROM ax_buchungsblatt g  
     71LEFT JOIN ax_buchungsblattbezirk b ON g.land=b.land AND g.bezirk=b.bezirk ".UnqKatAmt("g","b") 
     72."LEFT JOIN ax_dienststelle d ON b.land=d.land AND b.gehoertzu_stelle=d.stelle ".UnqKatAmt("b","d") 
     73."LEFT JOIN ax_blattart_buchungsblatt wb ON g.blattart = wb.wert 
     74LEFT JOIN ax_behoerde wd ON d.stellenart = wd.wert  
    7175WHERE g.gml_id= $1 AND g.endet IS NULL AND b.endet IS NULL AND d.endet IS NULL;"; 
    7276// .. AND d.stellenart=1000  
     
    7781if (!$res) { 
    7882        echo "\n<p class='err'>Fehler bei Grundbuchdaten.</p>"; 
    79         if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities(str_replace("$1", "'".$gmlid."'", $sql), ENT_QUOTES, "UTF-8")."</p>";} 
     83        if ($dbg > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities(str_replace("$1", "'".$gmlid."'", $sql), ENT_QUOTES, "UTF-8")."</p>";} 
     84} 
     85$zeianz=pg_num_rows($res); 
     86if ($dbg > 0) { 
     87        if ($zeianz > 1){ 
     88                echo "\n<p class='err'>Die Abfrage liefert mehr als ein (".$zeianz.") Grundbuch-Objekt!</p>"; 
     89                if ($dbg > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities(str_replace("$1","'".$gmlid."'",$sql), ENT_QUOTES, "UTF-8")."</p>";} 
     90        } 
     91} 
     92if ($zeianz == 0){ 
     93        echo "\n<p class='err'>Fehler! Kein Treffer f&uuml;r ein Grundbuch-Blatt mit gml_id=".$gmlid."</p>"; 
     94        if ($dbg > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities(str_replace("$1","'".$gmlid."'",$sql), ENT_QUOTES, "UTF-8")."</p>";} 
     95        echo "\n</body>\n</html>"; 
     96        return; 
    8097} 
    8198if ($row = pg_fetch_assoc($res)) { 
     
    87104        echo "\n<h2>Grundbuch</h2>"; 
    88105        echo "\n<table class='outer'>" // Blatt UND Eigent. 
    89                 ."\n<tr>\n\t<td class='ll'><img src='ico/Grundbuch.png' width='16' height='16' alt=''> Blatt:</td>"  // outer Links 
    90                 ."\n\t<td colspan='2'>"; // Outer Mitte, Kennz. im Rahmen 
    91                 if ($blattkey == 1000) { 
    92                         echo "\n\t\t<table class='kennzgb' title='Bestandskennzeichen'>"; 
    93                 } else { 
    94                         echo "\n\t\t<table class='kennzgbf' title='Bestandskennzeichen'>"; // dotted 
    95                 } 
    96                         echo "\n\t\t<tr>" 
    97                                 ."\n\t\t\t<td class='head'>"; // .d nicht gefÃŒllt 
     106                ."\n\t<tr>\n\t\t<td class='ll'><img src='ico/Grundbuch.png' width='16' height='16' alt=''> Blatt:</td>" 
     107                ."\n\t\t<td colspan='2'>"; // Outer Mitte, Kennz. im Rahmen 
     108                        if ($blattkey === "1000") { 
     109                                echo "\n\t\t\t<table class='kennzgb' title='Bestandskennzeichen'>"; 
     110                        } else { 
     111                                echo "\n\t\t\t<table class='kennzgbf' title='Bestandskennzeichen'>"; // dotted 
     112                        } 
     113                        echo "\n\t\t\t<tr>" 
     114                                ."\n\t\t\t<td class='head'>"; 
    98115                                if ($showkey) {echo "<span class='key'>".$row["stellenart"]."&nbsp;</span>";} 
    99116                                echo $row["stellev"]."</td>"; 
    100117                                echo "\n\t\t\t<td class='head'>Bezirk</td>" 
    101                                 ."\n\t\t\t<td class='head' title='".htmlentities($row["blattartd"], ENT_QUOTES, "UTF-8")."'>"; 
     118                                ."\n\t\t\t\t<td class='head' title='".htmlentities($row["blattartd"], ENT_QUOTES, "UTF-8")."'>"; 
    102119                                if ($showkey) {echo "<span class='key'>".$blattkey."&nbsp;</span>";} 
    103120                                echo $blattart."</td>" 
    104                         ."\n\t\t</tr>\n\t\t<tr>" 
    105                                 ."\n\t\t\t<td title='Amtsgerichtsbezirk'>"; 
     121                        ."\n\t\t\t</tr>\n\t\t\t<tr>" 
     122                                ."\n\t\t\t\t<td title='Amtsgerichtsbezirk'>"; 
    106123                                if ($showkey) {echo "<span class='key'>".$row["stelle"]."</span><br>";} 
    107124                                echo htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8")."</td>" 
    108                                 ."\n\t\t\t<td title='Grundbuchbezirk'>"; 
     125                                ."\n\t\t\t\t<td title='Grundbuchbezirk'>"; 
    109126                                if ($showkey) {echo "<span class='key'>".$row["bezirk"]."</span><br>";} 
    110127                                echo htmlentities($row["beznam"], ENT_QUOTES, "UTF-8")."</td>" 
    111                                 ."\n\t\t\t<td title='Grundbuch-Blatt'><span class='wichtig'>".$blatt."</span></td>" 
    112                         ."\n\t\t</tr>" 
    113                 ."\n\t\t</table>" 
    114                 ."\n\t</td>\n\t<td>&nbsp;" 
    115         ."\n\t</td>\n</tr>"; 
    116 } 
    117  
    118 if ($blattkey == 5000) { // fikt. Blatt 
     128                                ."\n\t\t\t\t<td title='Grundbuch-Blatt'><span class='wichtig'>".$blatt."</span></td>" 
     129                        ."\n\t\t\t</tr>" 
     130                ."\n\t\t\t</table>" 
     131                ."\n\t\t</td>\n\t\t<td>&nbsp;</td>\n\t</tr>"; 
     132} 
     133pg_free_result($res); 
     134 
     135if ($blattkey === "5000") { // fikt. Blatt 
    119136        echo "\n<p>Keine Angaben zum Eigentum bei fiktivem Blatt.</p>"; 
    120 } else { // E I G E N T U E M E R 
     137} else { // E I G E N T Ü M E R 
    121138        $n = eigentuemer($gmlid, true, ""); // MIT Adressen. 
    122139        if ($n === 0) { // keine NamensNr, kein Eigentuemer 
     
    127144echo "\n</table>"; 
    128145 
    129 // Vorab pruefen, ob der Fall "Rechte an .." vorliegt. 
    130 // ToDo: +++ Es gibt auch den Fall, dass auf der nÀchsten Stufe "nur Rechte" angezeigt werden, noch keine FlurstÃŒcke 
    131 // ++ Also 3 Möglichkeiten: 
    132 // - Nur Rechte an  (+++ FEHLT NOCH ++) 
    133 // - Rechte und FlurstÃŒcke 
    134 // - FlurstÃŒcke 
    135  
    136 // GB-Blatt  <istBestandteilVon<  sh=herrschend  >an/zu>  sd=dienend 
    137 $sql="SELECT count(sd.laufendenummer) AS anzahl " 
    138 ."FROM ax_buchungsstelle sh JOIN ax_buchungsstelle sd ON (sd.gml_id=ANY(sh.an) OR sd.gml_id=ANY(sh.zu)) " 
    139 ."WHERE sh.istbestandteilvon= $1 AND sd.endet IS NULL AND sh.endet IS NULL;"; 
    140  
     146// Vorab eine Tiefbohrung zur Sondierung von (potentiell) herrschend bis dienend ÃŒber max. 4 Buchungs-Stellen. 
     147// Diese ZÀhlung sagt nur aus, ob es "generell" solche FÀlle auf diesem Grundbuch gibt (ist selten). 
     148// In jedem einzelnen Zweig der Buchungen muss aber individuell danach gesucht werden.  
     149// Die Relation "zu" ist hier einbezogen, wird aber spÀter nicht ausgewertet. Hier könnte man die Differenz erkennen falls "zu" doch mal auftaucht. 
     150$sql ="SELECT count(s2.laufendenummer) AS anz2"; 
     151if ($dbg > 1) {$sql.=", count(s3.laufendenummer) AS anz3, count(s4.laufendenummer) AS anz4";} 
     152$sql.=" FROM ax_buchungsstelle sh " // herrschend 
     153        ."LEFT JOIN ax_buchungsstelle s2 ON (s2.gml_id=ANY(sh.an) OR s2.gml_id=ANY(sh.zu)) "; 
     154if ($dbg > 1) { 
     155        $sql.="LEFT JOIN ax_buchungsstelle s3 ON (s3.gml_id=ANY(s2.an) OR s3.gml_id=ANY(s2.zu)) " 
     156                ."LEFT JOIN ax_buchungsstelle s4 ON (s4.gml_id=ANY(s3.an) OR s4.gml_id=ANY(s3.zu)) "; 
     157} 
     158$sql.="WHERE sh.istbestandteilvon= $1 AND sh.endet IS NULL AND s2.endet IS NULL "; 
     159if ($dbg > 1) {$sql.="AND s3.endet IS NULL AND s4.endet IS NULL";} 
    141160$v=array($gmlid); // GB-Blatt 
    142161$res=pg_prepare("", $sql); 
    143162$res=pg_execute("", $v); 
    144 if (!$res) echo "\n<p class='err'>Fehler bei Suche nach Buchungen.</p>"; 
     163if (!$res) { 
     164        echo "\n<p class='err'>Fehler bei tiefer Suche nach Buchungen.</p>"; 
     165        if ($dbg > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities(str_replace("$1", "'".$gmlid."'", $sql), ENT_QUOTES, "UTF-8")."</p>";} 
     166} 
    145167$row=pg_fetch_assoc($res); 
    146 $anz=$row["anzahl"]; 
    147  
     168$anz2=$row["anz2"]; // steuert Tabellenform und Überschrift 
     169if ($dbg > 1) { 
     170        $anz3=$row["anz3"]; 
     171        $anz4=$row["anz4"]; 
     172        echo "\n<p class='dbg'>Anzahl dienende Buchungen Ebene 2: '".$anz2."', Ebene 3: '".$anz3."', Ebene 4: '".$anz4."'</p>"; 
     173} 
    148174echo "\n<hr>\n\n<h3><img src='ico/Flurstueck.png' width='16' height='16' alt=''>"; 
    149 if ($anz > 0) { // auch "Rechte an" 
     175if ($anz2 > 0) { // auch "Rechte an", also dienende B. 
    150176        echo " Rechte und Flurst&uuml;cke</h3>\n<table class='fs'>"; 
    151         // zusaetzliche Kopfzeile "Rechte" 
    152         echo "\n<tr>"  
    153                 ."\n\t<td>&nbsp;</td>" 
    154                 ."\n\t<td class='dien' title='herrschendes Grundst&uuml;ck'>herrschende Buchungsart</td>" 
    155                 ."\n\t<td class='dien'>Anteil</td>" 
    156                 ."\n\t<td class='dien'>Bezirk</td>" 
    157                 ."\n\t<td class='dien'>Blatt</td>" 
    158                 ."\n\t<td class='dien'>BVNR</td>" 
    159                 ."\n\t<td class='dien' title='dienendes Grundst&uuml;ck'>Buchungsart</td>" 
    160                 ."\n\t<td>&nbsp;</td>" 
     177        echo "\n<tr>" // zus. Kopfz. "Rechte" vor FS 
     178                ."\n\t<td class='heads' title='laufende Nummer Bestandsverzeichnis (BVNR) = Grundst&uuml;ck'>\n\t\t<span class='wichtig'>BVNR</span>" 
     179                        ."\n\t\t<img src='ico/sort.png' width='10' height='10' alt='' title='prim&auml;re Sortierung'>\n\t</td>" 
     180                ."\n\t<td class='head dien' title='herrschendes Grundst&uuml;ck'>Buchungsart</td>" 
     181                ."\n\t<td class='head dien'>Anteil</td>" 
     182                ."\n\t<td class='head dien'>Bezirk</td>" 
     183                ."\n\t<td class='head dien'>Blatt</td>" 
     184                ."\n\t<td class='head dien'>BVNR</td>" 
     185                ."\n\t<td class='head dien'>&nbsp;</td>" 
     186                ."\n\t<td class='head dien'>&nbsp;</td>" 
    161187        ."\n</tr>"; 
    162 } else { // keine Rechte an, nur FlurstÃŒcke gebucht 
     188} else { // keine Rechte an, nur FS 
    163189        echo " Flurst&uuml;cke</h3>\n<table class='fs'>"; 
    164190} 
    165  
    166 // gemeinsame Kopfzeile "Buchung + FlurstÃŒck" 
    167 echo "\n<tr>" 
    168         ."\n\t<td class='heads' title='laufende Nummer Bestandsverzeichnis (BVNR) = Grundst&uuml;ck'><span class='wichtig'>BVNR</span><img src='ico/sort.png' width='10' height='10' alt='' title='prim&auml;re Sortierung'></td>" 
    169         ."\n\t<td class='head'>Buchungsart</td>" 
    170         ."\n\t<td class='head'>&nbsp;</td>" 
     191echo "\n<tr>"; // Kopfzeile "FlurstÃŒck" 
     192        if ($anz2 > 0) { // BS und FS 
     193                echo "\n\t<td class='head'>&nbsp;</td>" 
     194                ."\n\t<td class='head'>&nbsp;</td>"; 
     195        } else { // nur FS 
     196                echo "\n\t<td class='heads' title='laufende Nummer Bestandsverzeichnis (BVNR) = Grundst&uuml;ck'>\n\t\t<span class='wichtig'>BVNR</span>" 
     197                        ."\n\t\t<img src='ico/sort.png' width='10' height='10' alt='' title='prim&auml;re Sortierung'>" 
     198                ."\n\t</td>" 
     199                ."\n\t<td class='head'>Buchungsart</td>"; 
     200        } 
     201        echo "\n\t<td class='head'>&nbsp;</td>" 
    171202        ."\n\t<td class='heads'>Gemarkung</td>" 
    172203        ."\n\t<td class='heads'>Flur</td>" 
    173204        ."\n\t<td class='heads fsnr' title='Flurst&uuml;cksnummer (Z&auml;hler / Nenner)'><span class='wichtig'>Flurst.</span></td>" 
    174         ."\n\t<td class='head flag'>Fl&auml;che</td>" 
     205        ."\n\t<td class='head fla'>Fl&auml;che</td>" 
    175206        ."\n\t<td class='head nwlink noprint' title='Verlinkung zu anderen Nachweis-Arten und verbundenen Objekten'>weitere Auskunft</td>" 
    176207."\n</tr>"; 
    177208 
    178 // Blatt ->  B u c h u n g s s t e l l e 
     209// Blatt ->  B u c h u n g s s t e l l e (oberste Ebene 1, GrundstÃŒck oder herrschend). Relation istBestandteilVon 
    179210// aktuelles ax_buchungsblatt <istBestandteilVon< ax_buchungsstelle  
    180211$sql ="SELECT s.gml_id, s.buchungsart, s.laufendenummer AS lfd, s.beschreibungdesumfangsderbuchung AS udb, s.zaehler, s.nenner,  
    181212s.nummerimaufteilungsplan AS nrap, s.beschreibungdessondereigentums AS sond, b.beschreibung as bart, b.dokumentation 
    182 FROM ax_buchungsstelle s LEFT JOIN ax_buchungsart_buchungsstelle b ON s.buchungsart = b.wert 
     213FROM ax_buchungsstelle s  
     214LEFT JOIN ax_buchungsart_buchungsstelle b ON s.buchungsart = b.wert 
    183215WHERE s.istbestandteilvon= $1 AND s.endet IS NULL ORDER BY cast(s.laufendenummer AS integer);"; 
    184 $v=array($gmlid); // Rel. istBestandteilVon 
     216$v=array($gmlid); 
    185217$res=pg_prepare("", $sql); 
    186218$res=pg_execute("", $v); 
    187219if (!$res) { 
    188220        echo "\n<p class='err'>Fehler bei Buchung.</p>"; 
    189         if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities(str_replace("$1", "'".$gmlid."'", $sql), ENT_QUOTES, "UTF-8")."</p>";} 
    190 } 
    191 $i=0; 
    192 $fscnt=0; 
     221        if ($dbg > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities(str_replace("$1", "'".$gmlid."'", $sql), ENT_QUOTES, "UTF-8")."</p>";} 
     222} 
     223$i=0;  // ZÀhler Buchungs-Stellen auf oberer Ebene 
    193224$zpaar=false; 
    194 while($row = pg_fetch_assoc($res)) { // Loop Buchungsstelle (GrundstÃŒck) 
     225$altlfdnr=''; // GW 
     226 
     227while($row = pg_fetch_assoc($res)) { // Loop Buchungsstellen der 1. Ebene (herrschend oder nur FS) 
     228        $i++; 
     229        $gml_bs=$row["gml_id"]; // gml der Buchungsstelle 
    195230        $lfdnr=$row["lfd"]; 
    196         $bvnr=str_pad($lfdnr, 4, "0", STR_PAD_LEFT); 
    197         $gml_bs=$row["gml_id"]; // id der buchungsstelle 
    198         $bartkey=$row["buchungsart"]; // SchlÃŒsselwert 
     231        $bartkey=$row["buchungsart"]; // Key 
    199232        $bart=$row["bart"]; // BuchungsART Text dazu 
    200         $bartstory=htmlentities($row["dokumentation"], ENT_QUOTES, "UTF-8"); // .. fÃŒr Anzeige aufbereitet 
    201         if ($row["zaehler"] == "") { 
    202                 $anteil = ""; 
    203         } else { 
    204                 $anteil = $row["zaehler"]."/".$row["nenner"]; 
    205         } 
    206         if ($zpaar) {$trclass='paa';} else {$trclass='unp';} // Farbwechsel je GrundstÃŒck 
     233        $bartstory=htmlentities($row["dokumentation"], ENT_QUOTES, "UTF-8"); // .. fÃŒr Anzeige aufbereitet      
     234        if ($row["zaehler"] == "") {$anteil = "";}  
     235        else {$anteil = $row["zaehler"]."/".$row["nenner"];} 
     236        if ($zpaar) {$trclass='paa';} else {$trclass='unp';} // Farbwechsel je Buchung auf Ebene 1 
    207237        $zpaar=!$zpaar; 
    208238 
    209         // F l u r s t u e c k s d a t e n  zur direkten Buchungsstelle 
    210         $j = bnw_fsdaten($lfdnr, $gml_bs, $bart, $anteil, true, $bartkey, $bartstory); // return=Anzahl der FS 
    211         $fscnt=$fscnt + $j; 
    212         if ($j === 0) { //  k e i n e  Flurstuecke gefunden (Miteigentumsnteil usw.) 
    213                 // Bei "normalen" Grundstuecken wurden hier Flurstuecksdaten gefunden und ausgegeben. 
    214                 // Bei Miteigentumsanteil, Erbbaurecht usw. muss nach den "dienenden" Buchungsstellen gesucht werden, darauf sind die FS gebucht. 
    215                 //  Buchungsstelle >an/zu> (andere)Buchungsstelle >istBestandTeilVon> "FiktivesBlatt (ohne) Eigentuemer" 
    216  
    217                 // dann andere "dienende" Buchungsstellen 
    218                 //  sh=herrschend          sd=dienend 
    219                 //  ax_buchungsstelle >zu> ax_buchungsstelle (des gleichen Blattes) 
    220                 //  ax_buchungsstelle >an> ax_buchungsstelle (anderes Blatt, z.B Erbbaurecht an) 
    221  
    222                 // Mit "UNION" um die FÀlle mit JOIN ÃŒber die Arrays "an" und "zu" unterscheiden zu können 
    223                 $sql="SELECT uni.*, wb.beschreibung AS bart FROM " 
    224                 ."(SELECT sda.gml_id, sda.buchungsart, sda.laufendenummer AS lfd, sda.beschreibungdesumfangsderbuchung AS udb, sda.nummerimaufteilungsplan AS nrap, sda.beschreibungdessondereigentums AS sond, 'an' as anzu " 
    225                 ."FROM ax_buchungsstelle sha JOIN ax_buchungsstelle sda ON sda.gml_id=ANY(sha.an) " 
    226                 ."WHERE sha.gml_id= $1 AND sha.endet IS NULL AND sda.endet IS NULL " 
    227                 ."UNION SELECT sdz.gml_id, sdz.buchungsart, sdz.laufendenummer AS lfd, sdz.beschreibungdesumfangsderbuchung AS udb, sdz.nummerimaufteilungsplan AS nrap, sdz.beschreibungdessondereigentums AS sond, 'zu' as anzu " 
    228                 ."FROM ax_buchungsstelle shz JOIN ax_buchungsstelle sdz ON sdz.gml_id=ANY(shz.zu) " 
    229                 ."WHERE shz.gml_id= $1 AND shz.endet IS NULL AND sdz.endet IS NULL " 
    230                 .") AS uni LEFT JOIN ax_buchungsart_buchungsstelle wb ON uni.buchungsart = wb.wert " 
    231                 ."ORDER BY uni.lfd;"; 
    232         //      Testfall suchen: SELECT gml_id, zu, durch FROM ax_buchungsstelle WHERE NOT zu IS NULL OR NOT durch IS NULL; 
    233         //      Die Relationen "zu" und "durch" kommen in der Praxis nicht vor. 
    234  
    235                 $v=array($gml_bs); // gml_id der "herrschenden" Buchungs-Stelle 
    236                 $resan=pg_prepare("", $sql); // Suche nach "dienender" Buchungsstelle 
    237                 $resan=pg_execute("", $v); 
    238                 if (!$resan) { 
    239                         echo "\n<p class='err'>Fehler bei 'andere Buchungsstelle'.</p>"; 
    240                         if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities(str_replace("$1", "'".$gml_bs."'", $sql), ENT_QUOTES, "UTF-8")."</p>";} 
     239        if ($bartkey <= 1102) { // (aufgeteiltes) GrundstÃŒck 
     240 
     241                $zeianz = bnw_fsdaten($gml_bs, true); // FlurstÃŒcksdaten zur direkten Buchungsstelle 
     242                if ($zeianz === 0) {echo "\n<tr class='".$trclass."'>\n\t<td></td>\n\t<td colspan='7'><p class='warn'>Keine Flurst&uuml;cke im berechtigten Bereich.</p></td>\n\t<td></td>\n</tr>";} 
     243 
     244        } else { // herrschende Buchung 
     245 
     246                bnw_bszeile_h(); // Die herrschende Buchung, aus Global 
     247 
     248                $altlfdnr=$lfdnr; 
     249 
     250                if ($row["nrap"] != "") { // Nr im Auft.Plan 
     251                        echo "\n<tr>\n\t<td colspan=3></td><td class='nrap' colspan=4>Nummer <span class='wichtig'>".$row["nrap"]."</span> im Aufteilungsplan.</td><td></td>\n</tr>"; 
    241252                } 
    242253 
    243                 $a=0; // count 
    244                 $altbvnr=""; // Gruppenwechsel 
    245                 while($rowan= pg_fetch_assoc($resan)) { 
    246                         $lfdnran=$rowan["lfd"]; // BVNR an 
    247                         $gml_bsan=$rowan["gml_id"];     // id der buchungsstelle an 
    248                         $baan=$rowan["bart"];   // Buchungsart an, entschluesselt 
    249                         $anzu=$rowan["anzu"];   // Welche Relation? Recht an oder Recht zu ? 
    250  
    251                         // dienende Buchungsstelle 
    252                         $sql ="SELECT b.gml_id, b.land, b.bezirk, b.buchungsblattnummermitbuchstabenerweiterung AS blatt, b.blattart, wb.beschreibung AS blattartv, z.bezeichnung AS beznam " 
    253                         ."FROM ax_buchungsblatt b JOIN ax_buchungsstelle s ON b.gml_id=s.istbestandteilvon " 
    254                         ."LEFT JOIN ax_buchungsblattbezirk z ON b.land=z.land AND b.bezirk=z.bezirk " 
    255                         ."LEFT JOIN ax_blattart_buchungsblatt wb ON b.blattart = wb.wert " 
    256                         ."WHERE s.gml_id= $1 AND b.endet IS NULL AND s.endet IS NULL AND z.endet IS NULL ORDER BY b.land, b.bezirk, b.buchungsblattnummermitbuchstabenerweiterung;"; 
    257                         $v=array($gml_bsan); 
    258                         $fbres=pg_prepare("", $sql); 
    259                         $fbres=pg_execute("", $v); 
    260                         if (!$fbres) { 
    261                                 echo "\n<p class='err'>Fehler bei fiktivem Blatt.</p>"; 
    262                                 if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities( str_replace("$1", "'".$gml_bsan."'", $sql), ENT_QUOTES, "UTF-8")."</p>";}                        
    263                         } 
    264                         $b=0; 
    265                         while($fbrow = pg_fetch_assoc($fbres)) { // genau 1 
    266                                 $fbgml=$fbrow["gml_id"]; 
    267                                 $fbland=$fbrow["land"]; 
    268                                 $fbbez=$fbrow["bezirk"]; 
    269                                 $beznam=$fbrow["beznam"]; 
    270                                 $fbblatt=ltrim($fbrow["blatt"], "0"); 
    271                                 $fbbartkey=$fbrow["blattart"]; // Key 
    272                                 $fbbart=$fbrow["blattartv"];  // Value 
    273                                 $b++; 
    274                         } 
    275                         if ($b != 1) { // Überwachen: genau 1? 
    276                                 echo "\n<p class='err'>Anzahl fiktive Bl&auml;tter zu anderer Buchungstelle = ".$b."</p>"; 
    277                         } 
    278                         // Grundbuchdaten zur dienenden Buchungsstelle 
    279                         echo "\n<tr class='".$trclass."'>" 
    280                                 ."\n\t<td id='bvnr".$lfdnr."'>"; // Sp.1 Erbbau BVNR, Sprungmarke 
    281                                         if($bvnr === $altbvnr) {        // gleiches Grundstueck 
    282                                                 echo "&nbsp;"; // dann Anzeige unterdruecken 
    283                                         } else { 
    284                                         //      echo "<a id='bvnr".$lfdnr."'></a>" // Sprungmarke 
    285                                                 echo "<span class='wichtig'>".$bvnr."</span>";  
    286                                                 $altbvnr = $bvnr; // Gruppenwechsel merken 
    287                                         } 
    288                                 echo "</td>" 
    289                                 ."\n\t<td class='dien'>"; // Sp.2 Buchung 
    290                                         if ($showkey) {echo "<span class='key'>".$row["buchungsart"]."</span> ";} 
    291                                 echo $bart." an</td>" 
    292                                 ."\n\t<td class='dien'>".$anteil."</td>" // Sp.3 Anteil 
    293                                 ."\n\t<td class='dien' title='Grundbuch-Bezirk'>"; // Sp.4 Gemarkg., hier Bezirk 
    294                                         if ($showkey) {echo "<span class='key'>".$fbbez."</span> ";} 
    295                                         echo htmlentities($beznam, ENT_QUOTES, "UTF-8") 
    296                                 ."</td>"; 
    297                                 echo "\n\t<td class='dien' title='".$fbbart."'>".$fbblatt."</td>" // Sp. 5 Blatt 
    298                                         ."\n\t<td class='dien' title='Bestandsverzeichnis-Nummer'>".str_pad($lfdnran, 4, "0", STR_PAD_LEFT)."</td>" // Sp.6 BVNR 
    299                                         ."\n\t<td class='dien' title='Buchungsart'>"; // Sp.7 Buchungsart 
    300                                         if ($showkey) {echo "<span class='key'>".$rowan["buchungsart"]."</span> ";} 
    301                                         echo $baan." " 
    302                                 ."</td>" 
    303                                 ."\n\t<td>" // Sp.8 Link ("an" oder "zu"?) 
    304                                         ."\n\t\t<p class='nwlink noprint'>".$anzu; // Recht "an" oder "zu" 
    305  
    306                                         // Buchung 
    307                                         // +++ <a  gsnachw  
    308  
    309                                         // Bestand 
    310                                         if ($showkey) {echo " <span class='key'>".$fbbartkey."</span>";} // Blatt-Art SchlÃŒssel 
    311                                         echo "\n\t\t\t<a href='alkisbestnw.php?gkz=".$gkz."&amp;gmlid=".$fbgml; 
    312                                                 if ($showkey) {echo "&amp;showkey=j";} 
    313                                                 echo "#bvnr".$lfdnran // Sprungmarke auf der Seite 
    314                                                 ."' title='Zum Grundbuchnachweis des dienenden Blattes'>"; 
    315                                                 echo $fbbart // Blatt-Art entschlÃŒsselt 
    316                                         ." <img src='ico/GBBlatt_link.png' width='16' height='16' alt=''></a>"; 
    317  
    318                                         echo "\n\t\t</p>" 
    319                                 ."\n\t</td>" 
    320                         ."\n</tr>";  
    321  
    322                         // Flurstuecksdaten zur dienenden Buchungsstelle 
    323                         // Buchungsart wird nur in erster Zeile ausgegeben, hier leer 
    324                         $aj = bnw_fsdaten($lfdnran, $gml_bsan, "", $anteil, false, "", ""); // return=Anz.FS 
    325                         $fscnt=$fscnt + $aj; 
    326                         if ($rowan["nrap"] != "") { 
    327                                 echo "\n<tr>" 
    328                                         ."\n\t<td class='sond' colspan=8>Nr. im Aufteilungsplan: ".$rowan["nrap"]."</td>" 
    329                                 ."\n</tr>"; 
    330                         } 
    331                         if ($rowan["sond"] != "") { 
    332                                 echo "\n<tr>" 
    333                                         ."\n\t<td class='sond' colspan=8>Verbunden mit dem Sondereigentum an: ".htmlentities($rowan["sond"], ENT_QUOTES, "UTF-8")."</td>" 
    334                                 ."\n</tr>"; 
    335                         } 
    336                         $a++; 
     254                if ($row["sond"] != "") { // Sondereigentumsbeschreibung 
     255                        echo "\n<tr>\n\t<td></td><td class='sond' colspan=6 title='Sondereigentums-Beschreibung'>Verbunden mit dem Sondereigentum an: ".$row["sond"]."</td><td></td>\n</tr>"; 
    337256                } 
    338                 if ($a === 0) { 
    339                         echo "\n<tr class='".$trclass."'>" 
    340                                 ."\n\t<td><span class='wichtig'>".$bvnr."</span></td>" 
    341                                 ."\n\t<td colspan=7><p class='warn'>Keine Flurst&uuml;cke zu Buchung ".$bvnr." im berechtigten Bereich.</p></td>" 
    342                         ."\n</tr>"; 
    343                 } 
    344         } 
    345         $i++;  
    346         if ($row["nrap"] != "") { // Nr im Auft.Plan 
    347                 echo "\n<tr>" 
    348                         ."\n\t<td class='nrap' colspan=8>Nummer <span class='wichtig'>".$row["nrap"]."</span> im Aufteilungsplan.</td>" 
    349                 ."\n</tr>"; 
    350         } 
    351         if ($row["sond"] != "") { // Sondereigentumsbeschreibung 
    352                 echo "\n<tr>" 
    353                         ."\n\t<td class='sond' colspan=8>Verbunden mit dem Sondereigentum an: ".$row["sond"]."</td>" 
    354                 ."\n</tr>"; 
    355         } // Ende Buchungsstelle/BVNR 
    356 } // Ende Loop 
     257 
     258                $tiefer = bnw_bsdaten($gml_bs, 2);  // dienend, recursiv Ebenen 2,3,4 
     259 
     260        } 
     261} 
    357262echo "\n</table>"; 
    358  
    359 if ($i === 0) { 
    360         echo "\n<p class='err'>Keine Buchung gefunden.</p>"; 
    361 } else { 
    362         if ($i > 5 and $fscnt > 5) { // nur wenn nicht auf einen Blick zu erkennen 
    363                 echo "\n<p class='cnt'>".$i." Buchungen mit ".$fscnt." Flurst&uuml;cken</p>"; 
    364         } 
    365 } 
    366  
    367 // B e r e c h t i g t e  Buchungsblaetter  mit Recht an/zu dem aktuellen (fiktiven?) Blatt 
     263if ($i === 0) {echo "\n<p class='err'>Keine Buchung gefunden.</p>";} 
     264pg_free_result($res); 
     265 
     266// B e r e c h t i g t e  BuchungsblÀtter mit Recht an dem aktuellen (fiktiven?) Blatt 
    368267 
    369268// bf                          sf            sb                               bb 
     
    374273FROM ax_buchungsstelle sf JOIN ax_buchungsstelle sb ON (sf.gml_id=ANY(sb.an) OR sf.gml_id=ANY(sb.zu))  
    375274JOIN ax_buchungsblatt bb ON bb.gml_id=sb.istbestandteilvon  
    376 LEFT JOIN ax_buchungsblattbezirk bz ON bb.land=bz.land AND bb.bezirk=bz.bezirk  
    377 LEFT JOIN ax_dienststelle d ON bz.land=d.land AND bz.gehoertzu_stelle=d.stelle  
    378 LEFT JOIN ax_blattart_buchungsblatt wa ON bb.blattart = wa.wert 
     275LEFT JOIN ax_buchungsblattbezirk bz ON bb.land=bz.land AND bb.bezirk=bz.bezirk ".UnqKatAmt("bb","bz") 
     276."LEFT JOIN ax_dienststelle d ON bz.land=d.land AND bz.gehoertzu_stelle=d.stelle ".UnqKatAmt("bz","d") 
     277."LEFT JOIN ax_blattart_buchungsblatt wa ON bb.blattart = wa.wert 
    379278LEFT JOIN ax_buchungsart_buchungsstelle wb ON sb.buchungsart = wb.wert 
    380279LEFT JOIN ax_behoerde wd ON d.stellenart = wd.wert 
     
    387286if (!$resb) { 
    388287        echo "\n<p class='err'>Fehler bei 'Berechtigte Bl&auml;tter.</p>"; 
    389         if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities(str_replace("$1", "'".$gmlid."'", $sql), ENT_QUOTES, "UTF-8")."</p>";} 
     288        if ($dbg > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities(str_replace("$1", "'".$gmlid."'", $sql), ENT_QUOTES, "UTF-8")."</p>";} 
    390289} 
    391290$b=0; // count: Buchungen / BlÀtter 
     
    421320        $zpaar=!$zpaar; 
    422321 
    423         echo "\n<tr class='".$trclass."'>"; // Der Teil "berechtigte GrundbÃŒcher" ist sortiert wie oberer Teil "FlurstÃŒcke" 
     322        echo "\n<tr class='".$trclass."'>"; // Der Teil "berechtigte GrundbÃŒcher" ist nach BVNR sortiert wie oberer Teil "FlurstÃŒcke" 
    424323                echo "\n\t<td><span class='wichtig'>".$anlfdnr0."</span></td>" 
    425324                ."\n\t<td>"; // Amtsgericht,Grundbuchamt 
     
    440339                ."\n\t<td>" 
    441340                        ."\n\t\t<p class='nwlink noprint'>"; 
     341 
    442342                        // Bestand 
    443343                        if ($showkey) {echo "<span class='key'>".$blart."</span> ";} 
    444344                        echo "\n\t\t\t<a href='alkisbestnw.php?gkz=".$gkz."&amp;gmlid=".$gml_b; 
    445345                                if ($showkey) {echo "&amp;showkey=j";} 
    446                                 echo "#bvnr".$lfdnr."' title='Nachweis des berechtigten Blattes an einer Buchung auf ".$blattart."'>".$rowb["blattartv"]; // "an" ggf. durch "zu" ersetzen? 
     346                                echo "#bvnr".$lfdnr."' title='Nachweis des berechtigten Blattes an einer Buchung auf ".$blattart."'>".$rowb["blattartv"]; 
    447347                                echo " \n\t\t\t<img src='ico/GBBlatt_link.png' width='16' height='16' alt=''></a>"; 
    448348                        echo "\n\t\t</p>" 
     
    461361        } 
    462362} 
    463  
    464 echo "\n<div class='buttonbereich noprint'><hr>" 
    465         ."\n\t<a title='zur&uuml;ck' href='javascript:history.back()'><img src='ico/zurueck.png' width='16' height='16' alt='zur&uuml;ck'></a>&nbsp;" 
    466         ."\n\t<a title='Drucken' href='javascript:window.print()'><img src='ico/print.png' width='16' height='16' alt='Drucken'></a>&nbsp;"; 
     363pg_free_result($resb); 
     364 
     365echo "\n<div class='buttonbereich noprint'>\n<hr>" 
     366        ."\n\t<a title='zur&uuml;ck' href='javascript:history.back()'><img src='ico/zurueck.png' width='16' height='16' alt='zur&uuml;ck'></a>&nbsp;"; 
     367if ($PrntBtn==true){echo "\n\t<a title='Drucken' href='javascript:window.print()'><img src='ico/print.png' width='16' height='16' alt='Drucken'></a>&nbsp;";} 
    467368if ($blattkey == 5000) { // Nicht bei "fiktives Blatt" 
    468369        echo "\n\t<img src='ico/download_gb_no.png' width='32' height='16' alt='Export' title='F&uuml;r ein fiktives Blatt ohne Eigent&uuml;mer ist ein CSV-Export nicht sinnvoll.'>";  
  • trunk/info/info/alkisn/alkisexport.php

    r422 r425  
    11<?php 
    22/*      Modul alkisexport.php 
     3 
    34        CSV-Export von ALKIS-Daten zu einem Flurstueck, Grundbuch, EigentÃŒmer oder Straße. 
    45        Es wird eine GML-ID ÃŒbergeben. 
    56        Es wird ein gespeicherter View verwendet, der nach der gml_id gefiltert wird.  
    6         Der View verkettet Flurstueck - Buchungsstelle - Grundbuch - Eigentuemer 
     7        Der View verkettet Flurstueck - Buchungsstelle - Grundbuch - EigentÃŒmer 
    78        Die Lagebezeichnung des FlurstÃŒcks wird in ein Feld komprimiert. 
    89        Parameter Beispiele:  
     
    2122        Version: 
    2223        -------- 
    23         2016-02-23      Version fuer norGIS-ALKIS-Import 
     24        2016-02-23      Version fÃŒr norGIS-ALKIS-Import 
    2425        .... 
    2526        2018-05-03 Aufruf aus neuem GrundstÃŒcksnachweis: tabtyp='buchung', angepasster View "exp_csv" notwendig 
    2627        2018-10-16 Neuer Aufruf-Typ aus der rÀumlichen Selektion, &tabtyp=flstliste&prefix=DENW15&gmlliste=AL...,AL.... 
    2728        2020-12-16 Input-Validation und Strict Comparisation (===), BerechtigungsprÃŒfung vorÃŒbergehend deaktiviert 
     29        2021-12-01 Client-Encoding 
    2830 
    2931        ToDo: 
     32        - In den gespeicherten Views "exp_csv" und "exp_csv_str" den Fall Kataster-Amts-Mix berÃŒcksichtigen. 
    3033        - Abruf FlurstÃŒck sollte auch mit "fskennz" (ggg-ff-zzz/nn) statt "gml-id" möglich sein 
    3134        - In Dateiname den Straßennamen statt der gmlid verwenden? (Umlaute?) 
     
    5356                $sneu=$row["bezeichnung"]; 
    5457                if ($sneu === $salt) { // gleiche Str. 
    55                         $lagehsnr.=$row["hausnummer"]; // HsNr dran haengen 
    56                 } else { // Name UND HsNr dranhaengen 
     58                        $lagehsnr.=$row["hausnummer"]; // HsNr dran hÀngen 
     59                } else { // Name UND HsNr dran hÀngen 
    5760                        $lagehsnr.=$sneu." ".$row["hausnummer"]; 
    5861                } 
    59                 $salt=$sneu; // Name f. naechste Runde 
     62                $salt=$sneu; // Name f. nÀchste Runde 
    6063                $j++; 
    6164        } 
     
    6467} 
    6568 
    66 // HIER START // 
    67  
    68 $tabtyp='';  $haus=''; // mögliche Parameter initialisieren 
     69// HIER START 
     70 
     71$tabtyp='';  $haus=''; // Var. init. 
    6972$cntget = extract($_GET); // Parameter in Variable umwandeln 
    7073 
     
    99102include "alkisfkt.php"; 
    100103 
    101 // BerechtigungsprÃŒfung fuer CSV vorÃŒbergehend deaktiviert weil darin HTML-Meldungen ausgegeben werden. 
     104// BerechtigungsprÃŒfung fÃŒr CSV vorÃŒbergehend deaktiviert weil darin HTML-Meldungen ausgegeben werden. 
    102105// ggf. dies per Option verhindern und wieder aktivieren. 
    103106//$erlaubnis = darf_ich(); if ($erlaubnis === 0) { die('Abbruch'); } 
    104107 
    105 if ($tabtyp === '') { // Parameter (-kombinationen) pruefen 
     108if ($tabtyp === '') { // Parameter (-kombinationen) prÃŒfen 
    106109        if ($gemarkung != '') { // Dieser Parameters bestimmt auch eindeutig den $tabtyp 
    107110                $tabtyp = 'gemarkung'; 
     
    176179        echo "\n".$err; exit($err); 
    177180} 
    178 pg_set_client_encoding($con, 'LATIN1'); // FÃŒr Excel kein UTF8 
     181//pg_set_client_encoding($con, 'LATIN1'); // FÃŒr Excel kein UTF8 
     182pg_set_client_encoding($con, 'WIN1252'); // Auch Buchstaben z.B. mit "CARON", wie ÅŸ Åœ Å¡ Å  
    179183 
    180184//$viewname="exp_csv"; // Standard-View, in der DB gespeichert 
     
    211215 
    212216        case 'flstliste': 
    213         // Ganze IN-Liste als $1 in SQL bringt kein Ergebnis. 
    214217        // GML-ID aufgeteilt: 6 Byte konstant, 10 Byte variabel in Liste 
    215         //$prefix vor JEDES Element setzen oder mit Substrings suchen? 
    216         //      $sql="SELECT * FROM exp_csv WHERE fsgml IN ('".str_replace(",", "','", $gmlliste)."')"; // komplette GML-ID in Liste 
    217218                $sql="SELECT * FROM exp_csv WHERE substring(fsgml from 1 for 6) = $1 " 
    218219                        ." AND substring(fsgml from 7 for 10) IN ('".str_replace(",", "','", $gmlliste)."')"; 
     
    234235//              // - Sonst ggf. Ausgabe Kreisgebiet 
    235236//      } else { // als zusÀtzlicher Filter AND 
     237 
    236238                $sql.=" AND fall='".$haus."' "; // m/o-Filter AnhÀngen 
     239 
    237240//      } 
    238241} 
  • trunk/info/info/alkisn/alkisfkt.php

    r422 r425  
    66 
    77        Version: 
    8         2016-02-24 Version fuer norGIS-ALKIS-Import, "function linkgml" raus. Case-EntschlÃŒsselung raus. 
     8        2016-02-24 Version fÃŒr norGIS-ALKIS-Import, "function linkgml" raus. Case-EntschlÃŒsselung raus. 
    99        .... 
    1010        2020-12-03 function selbstverlinkung() statt $_SERVER['PHP_SELF'] fÃŒr Einsatz hinter Gateway mit Änderung des Pfades (Docker/QWC2) 
     
    1212        2020-12-15 Input-Validation und Strict Comparisation (===) 
    1313        2020-12-16 Sonderfall QWC2 API-Gateway-Umleitung bei Selbstverlinkung 
     14        2021-12-09 Neue Parameter: $katAmtMix (Kataster-Amt-Mix), $PrntBtn (Drucken-SchaltflÀche) 
     15                           Footer: Umschalter fÃŒr SchlÃŒssel und Debug unabhÀngig benutzbar. Authentifizierung aus QWC2 nicht hier behandeln. 
     16        2021-12-30 Bestandsnachweis recursiv ÃŒber alle Buchungs-Ebenen 
     17 
     18++ ToDo: 
     19        - Parameter $lnkclass in eigentuemer() und $jfenster in buchung_anzg() vereinheitlichen 
    1420*/ 
    1521 
     
    1723//      Aus der Server-Variable den Pfad entfernen. 
    1824        global $pfadlos_selbstlink; 
    19         If ($pfadlos_selbstlink === 1) { // pfad-lose Selbstverlinkung hinter einer Umleitung. z.B. QWC2 API-Gateway 
    20                 // Pfad entfernen 
     25        If ($pfadlos_selbstlink === 1) { // Selbstverlinkung ohne Pfad z.B. hinter QWC2 API-Gateway (Umleitung) 
    2126                $mod=strrchr($_SERVER['PHP_SELF'], '/'); 
    2227                $mod=substr($mod, 1); 
     
    2934function darf_ich() { 
    3035//      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  
     36//      Der automatisch einloggende anonyme Gast-Benutzers muss bei der Authentifizierung ausgeschlossen werden. 
     37        global $auth, $customer, $mb_guest_user, $dbg; 
     38 
     39        if ($auth === "") {             // nicht prÃŒfen 
     40                $customer = "";         // dann anonym 
     41                return 1;                       // alles erlaubt 
    3942        } elseif ($auth === "mapbender") { 
    40  
    41         //      if ($debug > 1) {echo "\n<p class='dbg' Berechtigungs-Pr&uuml;fung Mapbender</p>";} 
    4243                $customer = ""; 
    4344                include '/opt/gdi/mapbender/http/php/mb_validateSession.php'; 
    44                  
     45 
    4546                if (!isset($_SESSION)) { // keine (passende) Session 
    46                         if ($debug > 1) {echo "\n<p class='dbg'>Session nicht gesetzt</p>";} 
     47                        if ($dbg > 1) {echo "\n<p class='dbg'>Session nicht gesetzt</p>";} 
    4748                } elseif ( !isset($_SESSION["mb_user_name"]) )  { 
    48                         if ($debug > 1) {echo "\n<p class='dbg'>username nicht gesetzt</p>";} 
     49                        if ($dbg > 1) {echo "\n<p class='dbg'>username nicht gesetzt</p>";} 
    4950                } else { 
    5051                        $customer = $_SESSION["mb_user_name"]; // angemeldeter Benutzer  
    5152                } 
    52                 //if ($debug > 1) {echo "\n<p class='dbg'>Customer '".$customer."'</p>";} 
    5353                if ($customer == "") {  // Wer bin ich? 
    5454                        echo "<p class='stop2'>Aufruf nur aus Mapbender erlaubt.</p>"; 
     
    6060                        return 1;       // echter User, ist erlaubt 
    6161                } 
    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  
    7462        } else { 
    75  
    76                 echo "\n<p class='stop2'>Die Berechtigungs-PrÃŒfung ist falsch konfiguriert</p>"; 
     63                echo "\n<p class='stop2'>Die Berechtigungs-Pr&uuml;fung ist falsch konfiguriert</p>"; 
    7764                return 0;       // verboten 
    7865        } 
     
    8067 
    8168function footer($gmlid, $link, $append) { 
    82         // Einen Seitenfuss ausgeben. 
     69        // Einen Seitenfuß ausgeben. 
    8370        // Die Parameter &gkz= und &gmlid= kommen in allen Modulen einheitlich vor 
    8471        // Den URL-Parameter "&showkey=j/n" umschalten lassen. 
    85         // $append wird angehaengt wenn gefuellt. Anwendung: &eig=j bei FS-NW, &ltyp=m/p/o bei Lage 
    86         global $gkz, $showkey, $hilfeurl, $debug, $customer; 
    87  
    88         echo "<footer>"; 
     72        // $append wird angehÀngt wenn gefÃŒllt. Anwendung: &eig=j bei FSNW, &ltyp=m/p/o bei Lage 
     73        global $gkz, $showkey, $hilfeurl, $debug, $dbg, $customer; 
     74 
     75        echo "\n<footer>"; 
    8976        // S c r e e n - F o o t 
    90         echo "\n<div class='confbereich noprint'>" 
    91         ."\n\t<table class='outer'>\n\t<tr>"; 
     77        echo "\n\t<div class='confbereich noprint'>" 
     78        ."\n\t\t<table class='outer'>\n\t\t<tr>"; 
    9279 
    9380        // Spalte 1: Info Benutzerkennung 
    94         if (isset($customer)) { // ÃŒber global von fkt. darf_ich() 
    95                 echo "\n\t\t<td title='Info'><i>Benutzer:&nbsp;".$customer."</i></td>"; 
     81        if (isset($customer) and $customer != '') { // ÃŒber global von fkt. darf_ich() 
     82                echo "\n\t\t\t<td title='Info'><i>Benutzer:&nbsp;".$customer."</i></td>"; 
    9683        } else { 
    97                 echo "\n\t\t<td>&nbsp;</td>"; 
     84                echo "\n\t\t\t<td>&nbsp;</td>"; 
    9885        } 
    9986 
    10087        // Spalte 2: Umschalter 
    101         echo "\n\t\t<td title='Konfiguration'>"; 
    102                 $mylink ="\n\t\t\t<a class='keyswitch' href='".$link."gkz=".$gkz."&amp;gmlid=".$gmlid.$append; 
     88        echo "\n\t\t\t<td title='Konfiguration'>"; 
     89                $mylink ="\n\t\t\t\t<a class='keyswitch' href='".$link."gkz=".$gkz."&amp;gmlid=".$gmlid.$append; 
     90 
    10391                if ($showkey) { // Umschalten SchlÃŒssel ein/aus 
    104                         echo $mylink."&amp;showkey=n' title='Verschl&uuml;sselungen ausblenden'>Schl&uuml;ssel aus</a>"; 
     92                        echo $mylink."&amp;showkey=n"; 
     93                        if ($debug > 0 and $dbg == 0) {echo "&amp;nodebug=j";} 
     94                        echo "' title='Verschl&uuml;sselungen ausblenden'>Schl&uuml;ssel aus</a>"; 
     95                        $mylink.="&amp;showkey=j"; 
    10596                } else { 
    106                         echo $mylink."&amp;showkey=j' title='Verschl&uuml;sselungen anzeigen'>Schl&uuml;ssel ein</a>"; 
    107                 } 
    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>"; 
    110                 } 
    111         echo "\n\t\t</td>"; 
    112  
    113         // Spalte 3 
    114         echo "\n\t\t<td title='Hilfe'>" 
    115                 ."\n\t\t\t<p class='nwlink'>\n\t\t\t\t<a target='_blank' href='".$hilfeurl."' title='Dokumentation'>Hilfe zur ALKIS-Auskunft</a>\n\t\t\t</p>\n\t\t</td>" 
    116                 ."\n\t</tr>\n\t</table>" 
    117         ."\n</div>\n"; 
     97                        echo $mylink."&amp;showkey=j"; 
     98                        if ($debug > 0 and $dbg == 0) {echo "&amp;nodebug=j";} 
     99                        echo "' title='Verschl&uuml;sselungen anzeigen'>Schl&uuml;ssel ein</a>"; 
     100                        $mylink.="&amp;showkey=n"; 
     101                } 
     102 
     103                if ($debug > 0) {       // nur fÃŒr Entwicklung 
     104                        if ($dbg > 0) { // temporÀr eine Ansicht OHNE debug 
     105                                echo "<br>".$mylink."&amp;nodebug=j' title='Debug-Ausgaben tempor&auml;r abschalten'>Testausgaben aus</a>"; 
     106                        } else {                // Abschaltung beenden 
     107                                echo "<br>".$mylink."' title='Debug-Ausgaben wie konfiguriert'>Testausgaben ein</a>"; 
     108                        } 
     109                } 
     110 
     111        echo "\n\t\t\t</td>"; 
     112 
     113        // Spalte 3: Dokumentation 
     114        echo "\n\t\t\t<td title='Hilfe'>" 
     115                ."\n\t\t\t\t<p class='nwlink'>\n\t\t\t\t\t<a target='_blank' href='".$hilfeurl."' title='Dokumentation'>Hilfe zur ALKIS-Auskunft</a>\n\t\t\t\t</p>\n\t\t\t</td>" 
     116                ."\n\t\t</tr>\n\t\t</table>" 
     117        ."\n\t</div>"; 
    118118 
    119119        // 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>"; 
     120        if (isset($customer) and $customer != '') { 
     121                echo "\n\t<p class='onlyprint'><i>Benutzer:&nbsp;".$customer."</i></p>"; 
     122        } 
     123 
     124        echo "\n</footer>\n"; 
    125125        return 0; 
     126} 
     127 
     128function UnqKatAmt($t1, $t2){ 
     129// Wenn der Datenbestand aus NBA-Verfahren mehrerer KatasterÀmter gemixt wurde, dann muss beim SQL-JOIN auf einige SchlÃŒsseltabellen 
     130// zusÀtzlich dafÃŒr gesort werden, dass nur die SchlÃŒssel des gleichen Katasteramtes verwendet werden. Sont bekommt man redundante Treffer. 
     131// Benötigt den Alias der zu verbindenden Tabellen. 
     132// Liefert einen String zum EinfÃŒgen hinter "JOIN .. ON". 
     133        global $katAmtMix; // aus Conf 
     134        if ($katAmtMix){ 
     135                return "AND substr(".$t1.".gml_id,1,6) = substr(".$t2.".gml_id,1,6) "; 
     136        } else { 
     137                return ""; 
     138        } 
    126139} 
    127140 
     
    150163        //  $gml_fs: GML-ID des FlurstÃŒcke (nur bei erstem Aufruf in einem FS-Nachweis notwendig) 
    151164        //      $trtyp: Tabellen-Zeilen-Typ. Werte: 1="mit GS-Link", 2="ohne GS-Link", 3="ohne GS-Link +Zeile einfÀrben" 
    152         global $gkz, $debug, $showkey, $bartgrp, $barttypgrp, $stufe; 
     165        global $gkz, $dbg, $showkey, $bartgrp, $barttypgrp, $stufe, $katAmtMix; 
    153166 
    154167        $sqlbs="SELECT sh.gml_id AS hgml, sh.buchungsart, sh.laufendenummer as lfd, sh.zaehler, sh.nenner, sh.nummerimaufteilungsplan as nrpl, sh.beschreibungdessondereigentums as sond, " // Buchungs-Stelle herrschend 
     
    156169        ."FROM ax_buchungsstelle sh " 
    157170        ."JOIN ax_buchungsblatt b ON b.gml_id=sh.istbestandteilvon " 
    158         ."LEFT JOIN ax_buchungsblattbezirk z ON z.land=b.land AND z.bezirk=b.bezirk " 
     171        ."LEFT JOIN ax_buchungsblattbezirk z ON z.land=b.land AND z.bezirk=b.bezirk ".UnqKatAmt("z","b") 
    159172        ."LEFT JOIN ax_buchungsart_buchungsstelle a ON sh.buchungsart = a.wert " // entschl. Buchungsart 
    160173        ."LEFT JOIN ax_blattart_buchungsblatt w ON b.blattart = w.wert " // entschl. Blatt-Art 
     
    166179        if (!$resbs) { 
    167180                echo "\n<p class='err'>Fehler bei 'Buchungsstelle ausgeben'.</p>"; 
    168                 if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities(str_replace("$1", "'".$gmlbs."'", $sqlbs), ENT_QUOTES, "UTF-8")."</p>";} 
     181                if ($dbg > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities(str_replace("$1", "'".$gmlbs."'", $sqlbs), ENT_QUOTES, "UTF-8")."</p>";} 
    169182        } 
    170183        $gezeigt = 0; // Funktionswert default 
    171  
    172         if ($rowbs = pg_fetch_assoc($resbs)) { // ein Treffer 
     184        if ($dbg > 0) { 
     185                $zeianz=pg_num_rows($resbs); 
     186                if ($zeianz > 1){ 
     187                        echo "\n<p class='err'>Die Abfrage liefert mehr als eine (".$zeianz.") Buchung!</p>"; 
     188                        if ($dbg > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities(str_replace("$1","'".$gmlid."'",$sqlbs), ENT_QUOTES, "UTF-8")."</p>";} 
     189                } 
     190        } 
     191        if ($rowbs = pg_fetch_assoc($resbs)) { // EIN Treffer 
    173192                $blattkeyber=$rowbs["blattart"]; // Schluessel von Blatt-Art des GB 
    174                 if ($blattkeyber != '5000' or $debug > 1) { // "Fiktives Blatt" nur bei Entwicklung anzeigen 
     193                if ($blattkeyber != '5000' or $dbg > 1) { // "Fiktives Blatt" nur bei Entwicklung anzeigen 
    175194                        $gezeigt = 1; // Funktionswert nach Treffer 
    176195                        $hgml=$rowbs["hgml"]; // GML-ID der (herrschenden) BuchungsStelle 
     
    218237                                } 
    219238 
    220                                 // +++ mehr Abstand oben zur Zeile in .css? 
     239                                // ++ mehr Abstand oben zur Zeile in .css? 
    221240                                echo "\n\t<tr>" // Buchungsart als Zwischenzeile 
    222241                                        ."\n\t\t<td class='ll'><img src='ico/Grundbuch.png' width='16' height='16' alt=''> Buchungsart:</td>" // 1 
    223242                                        ."\n\t\t<td colspan='2' title='".$barttitle."'>"; // 2-3 
    224                                                 if ($showkey) {echo "<span class='key'>(".$bartkey.")</span> ";} 
     243                                                if ($showkey) {echo "<span class='key' title='Buchungsart'>(".$bartkey.")</span> ";} 
    225244                                                echo "<span class='wichtig'>".$bart."</span>" 
    226245                                        ."</td>" 
     
    232251                        echo "\n\t<tr>" // Zeile mit 4 Spalten fÃŒr Buchung und EigentÃŒmer 
    233252                                ."\n\t\t<td class='ll'><img src='ico/Grundbuch_zu.png' width='16' height='16' alt=''> Buchung:"; // 1 
    234                         if ($showkey and $debug > 2) {echo "<br><span class='key'>Stufe ".$stufe."<br>".$hgml."</span> ";} 
     253                        if ($showkey and $dbg > 2) {echo "<br><span class='key'>Stufe ".$stufe."<br>".$hgml."</span> ";} 
    235254                        echo "</td>\n\t\t<td colspan='2'>"; // 2-3 
    236255 
     
    244263                                                ."\n\t\t\t\t<td class='head'>Bezirk</td>" 
    245264                                                ."\n\t\t\t\t<td class='head'>"; 
    246                                                 if ($showkey) {echo "<span class='key'>".$blattkeyber."</span> ";} 
     265                                                if ($showkey) {echo "<span class='key' title='Blattart'>(".$blattkeyber.")</span> ";} 
    247266                                                echo $blattartber."</td>" 
    248267                                                ."\n\t\t\t\t<td class='head'>Lfd-Nr</td>" 
     
    255274                                        } 
    256275                                        echo "\n\t\t\t\t<td title='Grundbuchbezirk'>"; 
    257                                                 if ($showkey) {echo "<span class='key'>".$rowbs["bezirk"]."</span><br>";} 
     276                                                if ($showkey) {echo "<span class='key' title='GB-Bezirk-Schl&uuml;ssel'>".$rowbs["bezirk"]."</span><br>";} 
    258277                                                echo $beznam."</td>" 
    259278                                                ."\n\t\t\t\t<td title='Grundbuch-Blatt'><span class='wichtig'>".$blatt."</span></td>" 
     
    275294                                echo "\n\t\t<td>"; // 4 
    276295                                        echo "\n\t\t\t<p class='nwlink noprint'>"; 
    277                                         // Bestand 
    278                                                 if ($showkey) {echo "<span class='key'>".$blattkeyber."</span> ";} 
     296                                        //      Bestand 
     297                                                if ($showkey) {echo "<span class='key' title='Blattart'>(".$blattkeyber.")</span> ";} 
    279298                                                $url="alkisbestnw.php?gkz=".$gkz."&amp;gmlid=".$gbgml; 
    280299                                                if ($showkey) {$url.="&amp;showkey=j";} 
     
    283302                                                        ." <img src='ico/GBBlatt_link.png' width='16' height='16' alt=''>" 
    284303                                                ."</a>"; 
    285                                         // Buchung 
     304                                        //      Buchung 
    286305                                                if ($trtyp === 1) { 
    287306                                                        echo "<br>"; 
    288                                                         if ($showkey) {echo "<span class='key'>".$bartkey."</span> ";} 
     307                                                        if ($showkey) {echo "<span class='key' title='Buchungsart'>(".$bartkey.")</span> ";} 
    289308                                                        $url="alkisgsnw.php?gkz=".$gkz."&amp;gmlid=".$hgml; 
    290309                                                        if ($showkey) {$url.="&amp;showkey=j";} 
     
    305324        pg_free_result($resbs); 
    306325         
    307         //if ($debug > 1) {echo "\n<p class='dbg'>Ende function buchung_anzg(), Return = ". $gezeigt ."</p>";} 
     326        //if ($dbg > 1) {echo "\n<p class='dbg'>Ende function buchung_anzg(), Return = ". $gezeigt ."</p>";} 
    308327         
    309328        return $gezeigt; // 1 wenn eine Buchung ausgegeben wurde 
     
    318337        //  $gml_fs: GML-ID des FlurstÃŒcke (nur bei erstem Aufruf in einem FS-Nachweis notwendig) 
    319338        //      $gsanfrd: In einem GS-Nachw. die GML-ID der in de URL angeforderten Buchungsstelle (-> Hervorhebung) 
    320         global $debug, $gezeigt; 
     339        global $dbg, $gezeigt; 
    321340 
    322341        // sh=Buchungstelle herrschend >(Recht)an> sd=Buchungstelle dienend >istBestandteilVon> BLATT -> Bezirk 
     
    332351        if (!$resber) { 
    333352                echo "\n<p class='err'>Fehler bei 'berechtigte Buchungsstellen'.</p>"; 
    334                 if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities(str_replace("$1", "'".$gmls."'", $sql), ENT_QUOTES, "UTF-8")."</p>";} 
     353                if ($dbg > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities(str_replace("$1", "'".$gmls."'", $sql), ENT_QUOTES, "UTF-8")."</p>";} 
    335354        } 
    336355        $an=0; 
     
    370389} 
    371390 
    372 function bnw_fsdaten($lfdnr, $gml_bs, $ba, $anteil, $bvnraus, $bartkey, $bartstory) { 
    373 /*      Bestandsnachweis - Flurstuecksdaten 
    374         Die Tabellenzeilen mit den Flurstuecksdaten zu EINER Buchungsstelle im Bestandsnachweis ausgeben. 
    375         Die Funktion wird je einmal aufgerufen fÃŒr die Buchungen direkt auf dem GB (Normalfall). 
    376         Weiterere Aufrufe ggf. bei Erbbaurecht fÃŒr die mit "an" verknuepften Buchungsstellen. 
    377         Tabellenkopf wird im aufrufenden Programm ausgegeben. */ 
    378         global $debug, $gkz, $showkey, $filtkreis, $filtgem, $trclass; 
    379  
    380         // F L U R S T U E C K 
     391function bnw_bszeile_h() { 
     392/*      Bestandsnachweis - Buchungs-Stellen-Zeile ausgeben - herrschend. 
     393        Die GB-Daten hierzu stehen bereits im Kopf und bleiben in der Tab. leer */ 
     394        global $dbg, $gkz, $showkey, $trclass, $lfdnr, $bartkey, $bart, $bartstory, $anteil; 
     395 
     396        $bvnr=str_pad($lfdnr, 4, "0", STR_PAD_LEFT); 
     397        echo "\n<tr class='".$trclass."'>" 
     398        ."\n\t<td id='bvnr".$bvnr."'><span class='wichtig'>".$bvnr."</span></td>" // Sprungmarke=BVNR auf dem GB-Blatt 
     399        ."\n\t<td class='dien' title='".$bartstory."'>"; 
     400        if ($showkey) {echo "<span class='key'>".$bartkey."</span> ";} 
     401        echo $bart."</td>" 
     402        ."\n\t<td class='dien'>".$anteil."</td>" 
     403        ."\n\t<td>&nbsp;</td>" 
     404        ."\n\t<td>&nbsp;</td>" 
     405        ."\n\t<td>&nbsp;</td>" 
     406        ."\n\t<td>&nbsp;</td>" 
     407        ."\n\t<td>&nbsp;</td>\n</tr>"; 
     408} 
     409 
     410function bnw_bszeile_d($bezkey, $beznam, $blatt, $blattartkey, $blattart, $lfdnran, $gbgml, $gml_bsan, $ebene, $und) { 
     411/*      Bestandsnachweis - Buchungsstellen-Zeile ausgeben - dienend 
     412        Eine Folge-Zeile fÃŒr eine dienende Buchung ausgeben. */ 
     413        global $gkz, $showkey, $trclass, $bartkey, $bart, $bartstory, $anteil; 
     414 
     415        $bvnr=str_pad($lfdnran, 4, "0", STR_PAD_LEFT); 
     416        $filler=str_repeat("&nbsp;", $ebene - 2); // 3 und 4 EinrÃŒcken 
     417        if ($und){$filler.="und ";}; // Unterscheidung Hierarchie (Ebene wechselt) von Liste (gleiche Ebene) 
     418        echo "\n<tr class='".$trclass."'>" 
     419        ."\n\t<td title='Ebene ".$ebene."'>".$filler."an</td>" 
     420        ."\n\t<td class='dien' title='".$bartstory."'>"; // Sp.2 Buchungsart 
     421        if ($showkey) {echo "<span class='key'>".$bartkey."</span> ";} 
     422        echo $bart."</td>" 
     423        ."\n\t<td class='dien'>".$anteil."</td>"; // Sp.3 Anteil 
     424 
     425        // Sp.4 GB-Bezirk 
     426        echo "\n\t<td class='dien' title='Grundbuch-Bezirk'>";  
     427                if ($showkey) {echo "<span class='key'>".$bezkey."</span> ";} 
     428                echo htmlentities($beznam, ENT_QUOTES, "UTF-8") 
     429        ."</td>" 
     430        ."\n\t<td class='dien' title='".$blattart."'>".$blatt."</td>" // Sp.5 
     431        ."\n\t<td class='dien' title='Bestandsverzeichnis-Nummer'>".$bvnr."</td>" // Sp.6 
     432        ."\n\t<td class='dien'></td>";  
     433 
     434        echo "\n\t<td>\n\t\t<p class='nwlink noprint'>"; // Sp.8 Link 
     435 
     436        // Link Bestand Blatt 
     437        if ($showkey) {echo "<span class='key'>".$blattartkey."</span>";} // Blatt-Art 
     438        echo "\n\t\t\t<a href='alkisbestnw.php?gkz=".$gkz."&amp;gmlid=".$gbgml; 
     439                if ($showkey) {echo "&amp;showkey=j";} 
     440                echo "#bvnr".$lfdnran."' title='Zum Grundbuchnachweis des dienenden Blattes'>".$blattart 
     441        ." <img src='ico/GBBlatt_link.png' width='16' height='16' alt=''></a>"; 
     442 
     443        if ($bartkey < 2000){ 
     444                // Link Buchung BVNR nur fÃŒr GrundstÃŒck usw. 
     445                echo "<br>\n\t\t\t<a href='alkisgsnw.php?gkz=".$gkz."&amp;gmlid=".$gml_bsan; 
     446                if ($showkey) {echo "&amp;showkey=j";} 
     447                echo "' title='Grundst&uuml;cksnachweis'>Buchung <img src='ico/Grundstueck_Link.png' width='16' height='16' alt=''></a>";        
     448        } 
     449 
     450        echo "\n\t\t</p>" 
     451        ."\n\t</td>\n</tr>"; 
     452} 
     453 
     454function bnw_bsdaten($gml_h, $ebene) { 
     455/*      Bestandsnachweis - Buchungsstellen-Daten 
     456        "dienende" Buchungsstellen suchen. Miteigentumsanteil, Erbbaurecht usw.  
     457        Return: gml_id der dienenden Buchungsstelle wenn gefunden? Sonst Leerstring */ 
     458        global $dbg, $bartkey, $bart, $bartstory, $anteil; 
     459 
     460//      dann "dienende" Buchungsstellen 
     461//  sh=herrschend          sd=dienend 
     462//  ax_buchungsstelle >zu> ax_buchungsstelle (des gleichen Blattes)  
     463//  ax_buchungsstelle >an> ax_buchungsstelle (anderes Blatt, z.B Erbbaurecht an) 
     464//      - "zu" kommt in der Praxis (NRW) nicht vor, wird hier nicht berÃŒcksichtigt 
     465 
     466        if ($ebene > 5) {echo "\n<p class='err'>Ungewöhnlich tiefe Schachtelung ".$ebene." der Buchungs-Stellen.</p>";} 
     467 
     468        $sql ="SELECT sd.gml_id, sd.buchungsart, sd.zaehler, sd.nenner, sd.laufendenummer AS lfd, sd.beschreibungdesumfangsderbuchung AS udb, " 
     469        ."sd.nummerimaufteilungsplan AS nrap, sd.beschreibungdessondereigentums AS sond, " 
     470        ."wb.beschreibung AS bart, wb.dokumentation, " 
     471        ."b.gml_id as gbgml, b.bezirk, b.buchungsblattnummermitbuchstabenerweiterung AS blatt, b.blattart, " 
     472        ."bb.beschreibung AS blattartv, z.bezeichnung AS beznam " 
     473        ."FROM ax_buchungsstelle sh " 
     474        ."JOIN ax_buchungsstelle sd ON sd.gml_id=ANY(sh.an) " 
     475        ."JOIN ax_buchungsblatt b ON b.gml_id=sd.istbestandteilvon "     
     476        ."LEFT JOIN ax_buchungsart_buchungsstelle wb ON sd.buchungsart = wb.wert " 
     477        ."LEFT JOIN ax_buchungsblattbezirk z ON b.land=z.land AND b.bezirk=z.bezirk ".UnqKatAmt("b","z") 
     478        ."LEFT JOIN ax_blattart_buchungsblatt bb ON b.blattart = bb.wert " 
     479        ."WHERE sh.gml_id= $1 AND sh.endet IS NULL AND sd.endet IS NULL AND b.endet IS NULL AND z.endet IS NULL " 
     480        ."ORDER BY sd.laufendenummer;"; 
     481        $v=array($gml_h); // gml_id "herrschende" B-Stelle 
     482        $resan=pg_prepare("", $sql); 
     483        $resan=pg_execute("", $v); 
     484        if (!$resan) { 
     485                echo "\n<p class='err'>Fehler bei 'dienende Buchungsstelle'.</p>"; 
     486                if ($dbg > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities(str_replace("$1", "'".$gml_bs."'", $sql), ENT_QUOTES, "UTF-8")."</p>";} 
     487        } 
     488        $zeianz=pg_num_rows($resan); // Zeilen-Anzahl = Returnwert 
     489        //if ($dbg > 0) {echo "\n<p class='dbg'>Auf Ebene ".$ebene.": Anzahl diennende Buchungs-Stellen = ".$zeianz.".</p>";} 
     490        $und = false; // mehrfaches "Recht an" auf gleicher Ebene 
     491        while($row= pg_fetch_assoc($resan)) { 
     492                $gml_bsan=$row["gml_id"];       // id der dien. BS 
     493                $blatt=ltrim($row["blatt"], "0");                
     494 
     495                // als Global-Var zur Sub-Function: 
     496                $bartkey=$row["buchungsart"];    
     497                $bart=$row["bart"]; // Buchungsart, entschlÃŒsselt 
     498                $bartstory=htmlentities($row["dokumentation"], ENT_QUOTES, "UTF-8"); 
     499                if ($row["zaehler"] == "") {$anteil = "";}  
     500                else {$anteil = $row["zaehler"]."/".$row["nenner"];} 
     501 
     502                // Zeile ausgeben Buchungsstelle dienend  
     503                bnw_bszeile_d($row["bezirk"], $row["beznam"], $blatt, $row["blattart"], $row["blattartv"], $row["lfd"], $row["gbgml"], $gml_bsan, $ebene, $und); 
     504                $und = true; 
     505                if ($row["nrap"] != "") { // Nr im Auft.Plan 
     506                        echo "\n<tr>\n\t<td colspan=3></td><td class='nrap' colspan=4>Nummer <span class='wichtig'>".$row["nrap"]."</span> im Aufteilungsplan.</td><td></td>\n</tr>"; 
     507                } 
     508                if ($row["sond"] != "") { // Sondereigentumsbeschreibung 
     509                        echo "\n<tr>\n\t<td></td><td class='sond' colspan=6 title='Sondereigentums-Beschreibung'>Verbunden mit dem Sondereigentum an: ".$row["sond"]."</td><td></td>\n</tr>"; 
     510                } 
     511 
     512                // Rekursiver Aufruf der gleichen Function, weitere Ebene dienend? 
     513                $tiefer = bnw_bsdaten($gml_bsan, ($ebene + 1)); 
     514                If ($tiefer == 0) {  // Wenn nicht, dann kann es FlurstÃŒcke dazu geben 
     515                        $fscnt= bnw_fsdaten($gml_bsan, false); // FlurstÃŒcksdaten 
     516                } 
     517        } 
     518        pg_free_result($resan); 
     519        return $zeianz; 
     520} 
     521 
     522function bnw_fsdaten($gml_bs, $mit_buchung_link) { 
     523/*      Bestandsnachweis - FlurstÃŒcksdaten 
     524        Die Tabellenzeilen mit den FlurstÃŒcksdaten zu EINER Buchungsstelle im Bestandsnachweis ausgeben. 
     525        Die Funktion wird entweder aufgerufen fÃŒr die Buchungen direkt auf dem GB (Normalfall) 
     526        oder bei Erbbaurecht fÃŒr die mit "an" verknÃŒpften Buchungsstellen der untersten Ebene (dienende Buchung). 
     527        Der Tabellenkopf wird im aufrufenden Programm ausgegeben.  
     528        Return: Anzahl der ausgegebenen FlurstÃŒcke */ 
     529        global $dbg, $gkz, $showkey, $filtkreis, $filtgem, $trclass, $katAmtMix, $lfdnr, $altlfdnr, $bartkey, $bart, $bartstory, $anteil; 
     530 
    381531        $sql="SELECT g.gemarkungsnummer, g.bezeichnung, f.gml_id, f.flurnummer, f.zaehler, f.nenner, f.amtlicheflaeche " 
    382         ."FROM ax_flurstueck f LEFT JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer " 
     532        ."FROM ax_flurstueck f LEFT JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer ".UnqKatAmt("f","g") 
    383533        ."WHERE f.endet IS NULL AND g.endet IS NULL AND f.istgebucht = $1 "; 
    384534        if ($filtgem === '') { // ungefiltert 
     
    392542        $resf = pg_execute("", $v); 
    393543        if (!$resf) {echo "\n<p class='err'>Fehler bei Flurst&uuml;ck</p>";} 
    394  
    395         if($bvnraus) { // nur bei direkten Buchungen die lfdNr ausgeben 
    396                 $bvnr=str_pad($lfdnr, 4, "0", STR_PAD_LEFT); 
    397         } else { 
    398                 $bvnr=""; 
    399         } 
    400         $altbvnr=""; // ++ besser mit "$j === 0" steuern? 
    401         $j=0; 
     544        $zeianz=pg_num_rows($resf); 
    402545        while($rowf = pg_fetch_assoc($resf)) { 
    403                 $flur= $rowf["flurnummer"]; 
    404546                $fskenn=$rowf["zaehler"]; 
    405547                if ($rowf["nenner"] != "") { // Bruch 
     
    409551 
    410552                echo "\n<tr class='".$trclass."'>"; // eine Zeile je Flurstueck 
    411                         // Sp. 1-3 der Tab. aus Buchungsstelle, nicht aus FS 
    412                         if($bvnr === $altbvnr) { // gleiches Grundstueck, leer lassen 
    413                                 echo "\n\t<td>&nbsp;</td>" 
    414                                 ."\n\t<td>&nbsp;</td>" 
    415                                 ."\n\t<td>&nbsp;</td>"; 
    416                         } else { // Sprungmarke, BVNR 
    417                                 echo "\n\t<td id='bvnr".$bvnr."'>"; // Sprungmarke 
    418                                 //      echo "\n\t\t<a id='bvnr".$bvnr."'></a>"; 
    419                                         echo "<span class='wichtig'>".$bvnr."</span>" 
    420                                 ."\n\t</td>"; 
    421  
    422                                 echo "\n\t<td title ='".$bartstory."'>"; // Buchungsart  
    423                                         if ($showkey) {echo "<span class='key'>".$bartkey."</span>&nbsp;";} // Schluessel 
    424                                         echo $ba; // entschluesselt 
    425                                 echo "</td>" 
    426                                 ."\n\t<td>&nbsp;</td>"; // Anteil 
    427                         } 
    428  
    429                         // Sp. 4-7 aus Flurstueck 
    430                         echo "\n\t<td>"; 
    431                         if ($showkey) {echo "<span class='key'>".$rowf["gemarkungsnummer"]."</span> ";} 
    432                         echo $rowf["bezeichnung"]."</td>" 
    433                         ."\n\t<td>".$flur."</td>" 
    434                         ."\n\t<td class='fsnr'><span class='wichtig'>".$fskenn."</span>" 
    435                         ."</td>" 
    436                         ."\n\t<td class='flag'>".$flae."</td>"; // "width" hier (flaG) erweiterbar, weil in andere Zeile die Buchungsart steht  
    437                         echo "\n\t<td>\n\t\t<p class='nwlink noprint'>"; 
    438                 //      if($bvnr != $altbvnr) { 
    439                         if($j === 0) { 
    440                                 echo "\n\t\t\t<a href='alkisgsnw.php?gkz=".$gkz."&amp;gmlid=".$gml_bs; 
    441                                         if ($showkey) {echo "&amp;showkey=j";} 
    442                                         echo "' title='Grundst&uuml;cksnachweis'>Buchung " 
    443                                         ."<img src='ico/Grundstueck_Link.png' width='16' height='16' alt=''>" 
    444                                 ."</a>"; 
    445  
    446                         } 
    447                                 echo "\n\t\t\t<a href='alkisfsnw.php?gkz=".$gkz."&amp;gmlid=".$rowf["gml_id"]."&amp;eig=n"; 
    448                                         if ($showkey)   {echo "&amp;showkey=j";} 
    449                                         echo "' title='Flurst&uuml;cksnachweis'>Flurst&uuml;ck " 
    450                                         ."<img src='ico/Flurstueck_Link.png' width='16' height='16' alt=''>" 
    451                                 ."</a>" 
    452                         ."\n\t\t</p>\n\t</td>" 
    453                 ."\n</tr>"; 
    454                 $altbvnr=$bvnr; 
    455                 $j++; 
     553                 
     554                // Sp. 1-3 der Tab. Daten aus Buchungsstelle, nicht aus FS 
     555                if($lfdnr === $altlfdnr) { // gleiches GrundstÃŒck, leer lassen 
     556                        echo "\n\t<td>&nbsp;</td>" 
     557                        ."\n\t<td>&nbsp;</td>" 
     558                        ."\n\t<td>&nbsp;</td>"; 
     559                } else { // Sprungmarke, BVNR 
     560                        $bvnr=str_pad($lfdnr, 4, "0", STR_PAD_LEFT); 
     561                        echo "\n\t<td id='bvnr".$bvnr."'>"; // Sprungmarke 
     562                                echo "<span class='wichtig'>".$bvnr."</span>" 
     563                        ."\n\t</td>"; 
     564                        echo "\n\t<td title ='".$bartstory."'>"; // Buchungsart  
     565                                if ($showkey) {echo "<span class='key'>".$bartkey."</span>&nbsp;";} 
     566                                echo $bart; 
     567                        echo "</td>" 
     568                        ."\n\t<td>&nbsp;</td>"; // Anteil 
     569                        $altlfdnr=$lfdnr; 
     570                } 
     571 
     572                // Sp. 4-7 aus FlurstÃŒck 
     573                echo "\n\t<td>"; 
     574                if ($showkey) {echo "<span class='key'>".$rowf["gemarkungsnummer"]."</span> ";} 
     575                echo $rowf["bezeichnung"]."</td>" 
     576                ."\n\t<td>".$rowf["flurnummer"]."</td>\n\t<td class='fsnr'><span class='wichtig'>".$fskenn."</span></td>" 
     577                ."\n\t<td class='fla'>".$flae."</td>"; 
     578                echo "\n\t<td>\n\t\t<p class='nwlink noprint'>"; 
     579 
     580                // Buchung BVNR 
     581                If ($mit_buchung_link == true) { // nur bei GrundstÃŒck 
     582                        echo "\n\t\t\t<a href='alkisgsnw.php?gkz=".$gkz."&amp;gmlid=".$gml_bs; 
     583                        if ($showkey) {echo "&amp;showkey=j";} 
     584                        echo "' title='Grundst&uuml;cksnachweis'>Buchung <img src='ico/Grundstueck_Link.png' width='16' height='16' alt=''></a>&nbsp;";                  
     585                        $mit_buchung_link = false; // nur in erster Zeile 
     586                } 
     587                // Flurstk. 
     588                echo "\n\t\t\t<a href='alkisfsnw.php?gkz=".$gkz."&amp;gmlid=".$rowf["gml_id"]."&amp;eig=n"; 
     589                        if ($showkey)   {echo "&amp;showkey=j";} 
     590                        echo "' title='Flurst&uuml;cksnachweis'>Flurst&uuml;ck " 
     591                        ."<img src='ico/Flurstueck_Link.png' width='16' height='16' alt=''></a>" 
     592                ."\n\t\t</p>\n\t</td>\n</tr>"; 
    456593        } 
    457594        pg_free_result($resf); 
    458         return $j; 
     595        return $zeianz; 
    459596} 
    460597 
     
    469606        // Schleife 1: N a m e n s n u m m e r 
    470607        // Beziehung: ax_namensnummer >istBestandteilVon> ax_buchungsblatt 
    471         global $debug, $gkz, $showkey; 
     608        global $dbg, $gkz, $showkey; 
    472609 
    473610        if ($lnkclass == "") { 
     
    484621        ."LEFT JOIN ax_eigentuemerart_namensnummer we ON n.eigentuemerart = we.wert " 
    485622        ."WHERE n.istbestandteilvon= $1 AND n.endet IS NULL ORDER BY n.laufendenummernachdin1421;"; 
    486         // +++  LEFT JOIN bis ax_Person statt Person als Schleife zu holen,  
    487         //              VerknÃŒpfungsfeld "benennt" ist leer bei "Beschrieb der Rechtsgemeinschaft". 
     623        // VerknÃŒpfungsfeld "benennt" ist leer bei "Beschrieb der Rechtsgemeinschaft". 
    488624 
    489625        $v = array($gmlid); // GB-Blatt 
     
    493629        if (!$resn) { 
    494630                echo "\n<p class='err'>Fehler bei Eigent&uuml;mer</p>"; // kein Fehler bei Blattarten > 1000 
    495                 //if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".str_replace("$1", "'".$gmlid."'", $sqln )."</p>";} 
     631                //if ($dbg > 2) {echo "\n<p class='dbg'>SQL=<br>".str_replace("$1", "'".$gmlid."'", $sqln )."</p>";} 
    496632        } 
    497633 
     
    501637                $namnum=kurz_namnr($rown["lfd"]); 
    502638                $rechtsg=$rown["adr"]; 
     639                $eiartkey=$rown["eigentuemerart"]; // Key 
     640                $eiart=$rown["eiartv"]; // Value 
     641        //      if ($dbg > 1) {echo "\n<p class='dbg'>Eigent&uuml:merart = '".$eiartkey."' = '".$eiart."'</p>";} 
     642 
    503643                echo "\n\t<tr>"; 
    504644                        if($n === 0) { // erste EigentÃŒmer-Zeile zu einer Buchung 
     
    527667 
    528668                // Schleife 2: P e r s o n 
    529                 // +++ bei SQL Namensnummer oben gleich mit JOIN dazu holen, statt dieser Schleife 
    530669                // Beziehung: ax_person  <benennt<  ax_namensnummer 
    531670                $sqlp="SELECT nachnameoderfirma, vorname, geburtsname, to_char(cast(geburtsdatum AS date),'DD.MM.YYYY') AS geburtsdatum, namensbestandteil, akademischergrad " 
     
    537676                if (!$resp) { 
    538677                        echo "\n\t<p class='err'>Fehler bei Person</p>"; 
    539                         if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".str_replace("$1", "'".$gmlpers."'", $sqlp)."</p>";} 
     678                        if ($dbg > 2) {echo "\n<p class='err'>SQL=<br>".str_replace("$1", "'".$gmlpers."'", $sqlp)."</p>";} 
    540679                } 
    541680 
     
    550689                        if ($rowp["geburtsname"] != "") {$diePerson.=", geb. ".$rowp["geburtsname"];} 
    551690                        $diePerson=htmlentities($diePerson, ENT_QUOTES, "UTF-8"); // Umlaute 
    552                         $eiartkey=$rown["eigentuemerart"]; // Key 
    553                         $eiart=$rown["eiartv"]; // Value 
    554691 
    555692                        echo "\n\t\t\t<p class='geig' title='Eigent&uuml;merart: ".$eiart."'>".$diePerson."</p>\n\t\t</td>"; // 3 - Person in Sp.3 hinter NamNum (Sp.2) 
    556693                        echo "\n\t\t<td>\n\t\t\t<p class='nwlink noprint'>"; // 4 
    557                                 if ($showkey AND $eiartkey != '') {echo "<span class='key' title='Eigent&uuml;merart'>".$eiartkey."</span> ";} 
     694                                if ($showkey AND $eiartkey != '') {echo "<span class='key' title='Eigent&uuml;merart'>(".$eiartkey.")</span> ";} 
    558695                                echo "\n\t\t\t\t<a href='".$lnkvor."alkisnamstruk.php?gkz=".$gkz."&amp;gmlid=".$gmlpers; 
    559696                                if ($showkey) {echo "&amp;showkey=j";} 
    560                                 if ($eiartkey === "") {$eiart="Eigent&uuml;mer" ;} // Default. Ersatz-Text, wenn nicht gefÃŒllt 
     697                                if ($eiartkey == "") {$eiart="Eigent&uuml;mer" ;} // Default. Ersatz-Text, wenn nicht gefÃŒllt 
    561698                                echo $lnknach."' title='vollst&auml;ndiger Name und Adresse eines Eigent&uuml;mers'>".$eiart 
    562                                 ." <img src='ico/Eigentuemer.png' width='16' height='16' alt=''></a>\n\t\t\t</p>" 
     699                                ." \n\t\t\t\t\t<img src='ico/Eigentuemer.png' width='16' height='16' alt=''>\n\t\t\t\t</a>\n\t\t\t</p>" 
    563700                        ."\n\t\t</td>" // 4 
    564701                        ."\n\t</tr>"; 
     
    573710                                if (!$resa) { 
    574711                                        echo "\n\t<p class='err'>Fehler bei Adressen</p>"; 
    575                                         if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".str_replace("$1", "'".$gmlpers."'", $sqla)."</p>";} 
     712                                        if ($dbg > 2) {echo "\n<p class='err'>SQL=<br>".str_replace("$1", "'".$gmlpers."'", $sqla)."</p>";} 
    576713                                } 
    577714                                $j=0; 
     
    628765 
    629766                if ($i === 0) { // KEINE Person. benennt ist leer. Das kommt vor hinter der Zeile "Erbengemeinschaft" und ist dann KEIN Fehler 
    630                         if ($rechtsg === 9999) { 
    631                                 if ($debug > 1) {echo "\n\t\t\t<p class='dbg'>Rechtsgemeinschaft = '".$rechtsg."'</p>";} 
    632                         } else { 
     767                        if ($dbg > 1) {echo "\n\t\t\t<p class='dbg'>Rechtsgemeinschaft = '".$rechtsg."'</p>";} 
     768                        if ($rechtsg !== '9999') { 
    633769                                echo "\n<p class='err'>(Die Person mit der ID '".$gmlpers."' fehlt im Datenbestand)</p>"; 
    634770                        } 
     
    646782        // Dient dazu, SchlÃŒssel-ARRAYs auflösen ohne die Zeile im JOIN mehrfach aufzulisten 
    647783        // Anwendung: FS-Nachweis BodenschÀtzung 
    648         global $debug; 
     784        global $dbg; 
    649785 
    650786        if ($bez === 'e') {$tabelle = 'ax_entstehungsartoderklimastufewasserverhaeltnisse_bodensc';}  
     
    657793        if (!$res) { 
    658794                echo "\n<p class='err'>Fehler bei Werteliste.</p>"; 
    659                 if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."</p>";} 
     795                if ($dbg > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."</p>";} 
    660796                return; 
    661797        } 
     
    668804        if ($i === 0) { 
    669805                echo "(kein Treffer)"; 
    670                 if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."</p>";} 
     806                if ($dbg > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."</p>";} 
    671807        } 
    672808        return; 
     
    676812// Tabelle im Kopf von FlurstÃŒck und FS-Historie. 2 Z./Sp. Entstehung/FortfÃŒhrung 
    677813// Parameter: Die DB-Spalten "zeitpunktderentstehung", "zeigtaufexternes_art" und "zeigtaufexternes_name" 
    678         global $debug, $showkey; 
    679  
    680 //      if ($debug > 2) {echo "<p class='dbg'>function fortfuehrungen<br>1: ".$dbzeart."<br>2: ".$dbzename."</p>";} 
     814        global $dbg, $showkey; 
     815 
     816//      if ($dbg > 2) {echo "<p class='dbg'>function fortfuehrungen<br>1: ".$dbzeart."<br>2: ".$dbzename."</p>";} 
    681817  
    682818        echo "\n\t<table class='fsd'>" // FS-Daten 2 Spalten 
  • trunk/info/info/alkisn/alkisfshist.php

    r422 r425  
    55        Flurstuecks-Historie fuer ein Flurstueckskennzeichen aus ALKIS PostNAS 
    66        Version: 
    7         2016-02-24 Version fuer norGIS-ALKIS-Import 
     7        2016-02-24 Version fÃŒr norGIS-ALKIS-Import 
    88        .... 
    99        2020-02-20 Authentifizierung ausgelegert in Function darf_ich() 
    1010        2020-12-03 function selbstverlinkung() statt $_SERVER['PHP_SELF'] 
    1111        2020-12-15 Input-Validation und Strict Comparisation (===) 
     12        2021-12-09 Neuer Parameter $PrntBtn (Drucken-SchaltflÀche) 
    1213*/ 
    1314 
     
    4546 
    4647function gemkg_name($gkey) { 
    47 //      Schluessel wird ÃŒbergeben, Name dazu in der DB nachschlagen 
     48//      SchlÃŒssel wird ÃŒbergeben, Name dazu in der DB nachschlagen 
    4849        global $con; 
    4950        $sql ="SELECT bezeichnung FROM ax_gemarkung g WHERE g.gemarkungsnummer= $1 AND g.endet IS NULL LIMIT 1;"; 
     
    5253        $res=pg_execute("", $v); 
    5354        if (!$res) {echo "\n<p class='err'>Fehler bei Gemarkung.</p>";} 
    54         $zgmk=0; 
    55         while($row = pg_fetch_assoc($res)) { // eigentlich nur EINE 
    56                 $gmkg=$row["bezeichnung"]; 
    57                 $zgmk++; 
    58         } 
    59         if ($zgmk === 0) { 
     55        $gmkg=""; 
     56        $zeianz=pg_num_rows($res); 
     57        if ($zeianz > 1){ 
     58                echo "\n<p class='err'>Die Abfrage liefert mehr als eine (".$zeianz.") Gemarkung!</p>"; 
     59                if ($dbg > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities(str_replace("$1","'".$gkey."'",$sql), ENT_QUOTES, "UTF-8")."</p>";} 
     60        } elseif ($zeianz === 0) { 
    6061                echo "\n<p class='err'>Gemarkung ".$gkey." ist unbekannt.</p>"; 
    6162                return; 
    6263        } 
     64        if ($row = pg_fetch_assoc($res)) { 
     65                $gmkg=$row["bezeichnung"]; 
     66        } 
    6367        return $gmkg; 
    6468} 
    6569 
    6670function such_vor_arr($fsk) { 
    67 // Suchen Vorgaenger zum aktuellen Flurst. Ausgabe von Selbst-Links Zeilenweise in <td>. 
    68 // Akt. FS und hist.FS hat keine Verweise auf Vorgaenger. Darum in den Nachfolger-Verweisen von Hist.-FS suchen. 
    69         global $gkz, $con, $debug, $showkey, $filtkreis, $filtgem; 
     71// Suchen VorgÀnger zum aktuellen Flurst. Ausgabe von Selbst-Links Zeilenweise in <td>. 
     72// Akt. FS und hist.FS hat keine Verweise auf VorgÀnger. Darum in den Nachfolger-Verweisen von Hist.-FS suchen. 
     73        global $gkz, $con, $dbg, $showkey, $filtkreis, $filtgem; 
    7074 
    7175        $sqlv="SELECT 'h' AS ftyp, h.gml_id, h.flurstueckskennzeichen FROM ax_historischesflurstueck h " 
     
    7983        if (!$resv) { 
    8084                echo "\n<p class='err'>Fehler bei Vorg&auml;nger-FS.</p>"; 
    81                 if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".str_replace("$1", "'".$fsk."'", $sqlv)."</p>";} 
     85                if ($dbg > 2) {echo "\n<p class='dbg'>SQL=<br>".str_replace("$1", "'".$fsk."'", $sqlv)."</p>";} 
    8286        } 
    8387        $zv=0; 
     
    96100        return; 
    97101} 
     102 
     103// Start 
    98104 
    99105ini_set("session.cookie_httponly", 1); 
     
    141147 
    142148$erlaubnis = darf_ich(); if ($erlaubnis === 0) { die('<p class="stop1">Abbruch</p></body>'); } 
     149$dbg=$debug; // CONF in Arbeits-Variable 
    143150 
    144151// Mit URL-Parameter "&nodebug=j" kann man die Entwicklungsumgebung (in Conf definiert) ausschalten. 
    145 // Manuell an die URL anfÃŒgen, wirkt nur temporÀr und wird nicht in Links weiter gereicht. 
    146 if ($nodebug === "j") {$debug=0;}  
     152// Wirkt temporÀr und wird nicht in Links weiter gereicht. 
     153if ($nodebug === "j") {$dbg=0;}  
    147154 
    148155$con = pg_connect($dbconn." options='--application_name=ALKIS-Auskunft_alkisfshist.php'"); 
     
    155162        $whereclause="WHERE gml_id= $1 "; 
    156163        $v = array($gmlid); 
    157 } elseif ($fskennz != "") { // Alternativ: Flurst.-Kennz. uebergeben 
     164} elseif ($fskennz != "") { // Alternativ: Flurst.-Kennz. ÃŒbergeben 
    158165                $parmtyp="Flurst&uuml;ckskennzeichen"; 
    159166                $parmval=$fskennz; 
     
    162169} else { // Pfui! 
    163170                $parmtyp=""; 
    164                 die("Fehlender Parameter"); // bereits geprÃŒft 
     171                die("Fehlender Parameter"); 
    165172} 
    166173 
    167174if ($parmtyp != "") { // einer der beiden erlaubten FÀlle 
    168         // UNION-Abfrage auf 3Àhnliche Tabellen, darin aber immer nur 1 Treffer. 
     175        // UNION-Abfrage auf 3 Ã€hnliche Tabellen, darin aber immer nur 1 Treffer. 
    169176        $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, "; 
    170177 
     
    201208                $zeart=$rowu["zart"]; 
    202209                $zename=$rowu["zname"]; 
    203                 if ($gmlid == "") {$gmlid=$rowu["gml_id"];} // fuer selbst-link-Umschalter ueber footer 
     210                if ($gmlid == "") {$gmlid=$rowu["gml_id"];} // fÃŒr selbst-link-Umschalter ÃŒber footer 
    204211 
    205212                switch ($ftyp) { // Diff. Hist./Akt. 
     
    226233                } 
    227234        } else { 
    228                 if ($debug > 1) { 
     235                if ($dbg > 1) { 
    229236                        echo "<br><p class='err'>Fehler! Kein Treffer f&uuml;r ".$parmtyp." = '".$parmval."'</p><br>"; 
    230                         if ($debug > 2) { 
     237                        if ($dbg > 2) { 
    231238                                echo "<p class='dbg'>SQL=<br>".str_replace("$1", "'".$v[0]."'", $sqlu)."</p>"; 
    232239                        } 
     
    297304."\n</table>"; 
    298305 
    299 if ($debug > 1) { 
     306if ($dbg > 1) { 
    300307        $z=1; 
    301308        while($rowu = pg_fetch_assoc($resu)) { 
     
    305312        } 
    306313} 
     314echo "<div class='buttonbereich noprint'>\n<hr>" 
     315        ."\n\t<a title='zur&uuml;ck' href='javascript:history.back()'><img src='ico/zurueck.png' width='16' height='16' alt='zur&uuml;ck'></a>&nbsp;"; 
     316if ($PrntBtn==true){echo "\n\t<a title='Drucken' href='javascript:window.print()'><img src='ico/print.png' width='16' height='16' alt='Drucken'></a>&nbsp;";} 
     317echo "\n</div>"; 
     318 
     319footer($gmlid, selbstverlinkung()."?", ""); 
    307320?> 
    308  
    309 <div class='buttonbereich noprint'> 
    310 <hr> 
    311         <a title="zur&uuml;ck" href='javascript:history.back()'><img src="ico/zurueck.png" width="16" height="16" alt="zur&uuml;ck"></a>&nbsp; 
    312         <a title="Drucken" href='javascript:window.print()'><img src="ico/print.png" width="16" height="16" alt="Drucken"></a>&nbsp; 
    313 </div> 
    314  
    315 <?php footer($gmlid, selbstverlinkung()."?", ""); ?> 
    316321 
    317322</body> 
  • trunk/info/info/alkisn/alkisfsnw.php

    r422 r425  
    66 
    77        Version: 
    8         2016-02-24 Version fuer norGIS-ALKIS-Import 
     8        2016-02-24 Version fÃŒr norGIS-ALKIS-Import 
    99        ..... 
    1010        2020-02-20 Authentifizierung ausgelagert in Function darf_ich() 
     
    1414        2020-12-16 Input-Validation und Strict Comparisation (===) 
    1515        2021-03-09 Link zum GebÀudenachweis auch mit "Bauwerke" betiteln 
     16        2021-12-09 Neue Parameter: $katAmtMix (Kataster-Amt-Mix), $PrntBtn (Drucken-SchaltflÀche) 
    1617 
    1718ToDo: 
     19        - Tabbelle "nutz_21" ist ein Relikt von NorGIS/ALB und könnte in spÀteren Versionen fehlen. 
    1820        - Buchung auf "fiktives Blatt" ist nur mit debug zu sehen: die <tr> in .css grau hinterlegen 
    1921        - "Umschalter" (gleiches Modul) anders darstellen als Links zu ANDEREN Nachweisen 
     
    6971<?php 
    7072$erlaubnis = darf_ich(); if ($erlaubnis === 0) { die('<p class="stop1">Abbruch</p></body>'); } 
     73$dbg=$debug; // CONF in Arbeits-Variable 
    7174 
    7275// Mit URL-Parameter "&nodebug=j" kann man die Entwicklungsumgebung (in Conf definiert) ausschalten. Blendet z.B. "fiktives Blatt" aus. 
    73 // Manuell an die URL anfÃŒgen, wirkt nur temporÀr und wird nicht in Links weiter gereicht. 
    74 if ($nodebug === "j") {$debug=0;}  
     76// Wirkt temporÀr und wird nicht in Links weiter gereicht. 
     77if ($nodebug === "j") {$dbg=0;}  
    7578 
    7679$con = pg_connect($dbconn." options='--application_name=ALKIS-Auskunft_alkisfsnw.php'"); 
     
    99102to_char(cast(f.zeitpunktderentstehung AS date),'DD.MM.YYYY') AS zeitpunktderentstehung, f.istgebucht, g.gemarkungsnummer, g.bezeichnung, r.bezeichnung AS rbez, k.bezeichnung AS kbez, m.bezeichnung AS mbez  
    100103FROM ax_flurstueck f  
    101 LEFT JOIN ax_gemarkung g ON f.gemeindezugehoerigkeit_land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer  
    102 LEFT JOIN ax_regierungsbezirk r ON f.gemeindezugehoerigkeit_regierungsbezirk=r.regierungsbezirk  
    103 LEFT JOIN ax_kreisregion k ON f.gemeindezugehoerigkeit_regierungsbezirk=k.regierungsbezirk AND f.gemeindezugehoerigkeit_kreis=k.kreis  
    104 LEFT JOIN ax_gemeinde m ON m.regierungsbezirk=f.gemeindezugehoerigkeit_regierungsbezirk AND m.kreis=f.gemeindezugehoerigkeit_kreis AND m.gemeinde=f.gemeindezugehoerigkeit_gemeinde 
    105 WHERE f.gml_id= $1 AND f.endet IS NULL AND g.endet IS NULL AND m.endet IS NULL AND k.endet IS NULL AND r.endet IS NULL;"; 
     104LEFT JOIN ax_gemarkung g ON f.gemeindezugehoerigkeit_land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer ".UnqKatAmt("f","g") 
     105."LEFT JOIN ax_regierungsbezirk r ON f.gemeindezugehoerigkeit_regierungsbezirk=r.regierungsbezirk ".UnqKatAmt("f","r") 
     106."LEFT JOIN ax_kreisregion k ON f.gemeindezugehoerigkeit_regierungsbezirk=k.regierungsbezirk AND f.gemeindezugehoerigkeit_kreis=k.kreis ".UnqKatAmt("f","k") 
     107."LEFT JOIN ax_gemeinde m ON m.regierungsbezirk=f.gemeindezugehoerigkeit_regierungsbezirk AND m.kreis=f.gemeindezugehoerigkeit_kreis AND m.gemeinde=f.gemeindezugehoerigkeit_gemeinde ".UnqKatAmt("f","m") 
     108."WHERE f.gml_id= $1 AND f.endet IS NULL AND g.endet IS NULL AND m.endet IS NULL AND k.endet IS NULL AND r.endet IS NULL;"; 
    106109 
    107110$v = array($gmlid); // mit gml_id suchen 
     
    110113if (!$res) { 
    111114        echo "\n<p class='err'>Fehler bei Flurstuecksdaten</p>"; 
    112         if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities(str_replace("$1","'".$gmlid."'",$sql), ENT_QUOTES, "UTF-8")."</p>";} 
     115        if ($dbg > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities(str_replace("$1","'".$gmlid."'",$sql), ENT_QUOTES, "UTF-8")."</p>";} 
     116} 
     117if ($dbg > 0) { 
     118        $zeianz=pg_num_rows($res); 
     119        if ($zeianz > 1){ 
     120                echo "\n<p class='err'>Die Abfrage liefert mehr als ein (".$zeianz.") Flurst&uuml;cks-Objekt!</p>"; 
     121                if ($dbg > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities(str_replace("$1","'".$gmlid."'",$sql), ENT_QUOTES, "UTF-8")."</p>";} 
     122        } 
    113123} 
    114124if ($row = pg_fetch_assoc($res)) { 
     
    137147} else { 
    138148        echo "\n<p class='err'>Fehler! Kein Treffer f&uuml;r Flurst&uuml;ck mit 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>";} 
     149        if ($dbg > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities(str_replace("$1","'".$gmlid."'",$sql), ENT_QUOTES, "UTF-8")."</p>";} 
    140150        echo "\n</body>\n</html>"; 
    141151        return; 
     
    155165if ( ($filtkreis != '' and $filtkreis != $kreis) or ($filtgem != '' and $filtgem != $gemeinde) ) { 
    156166        // Einer der gesetzten Filter passt nicht 
    157         if ($debug > 2) { //++ Schönes Bild? Stop-Zeichen? 
     167        if ($dbg > 2) { //++ Schönes Bild? Stop-Zeichen? 
    158168                echo "\n<p class='err'>Filter Kreis='".$filtkreis."', Gemeinde='".$filtgem."'</p>" 
    159169                ."\n<p class='err'>Flstk. Kreis='".$fskrs."', Gemeinde='".$fsgem."'</p>"; 
     
    180190 
    181191echo "\n<hr>\n<table class='fs'>"; // FS-Teil 6 Spalten 
    182 echo "\n<tr>\n\t\t<td></td>\n\t\t<td></td>\n\t\t<td></td>\n\t\t<td></td>\n\t\t<td></td>" // 1-5 in erster Zeile kein "colspan" verwenden 
    183         ."\n\t\t<td>\n\t\t<p class='nwlink noprint'>weitere Auskunft:</p></td>" // 6 
     192echo "\n<tr>\n\t<td></td>\n\t<td></td>\n\t<td></td>\n\t<td></td>\n\t<td></td>" // 1-5 in erster Zeile kein "colspan" verwenden 
     193        ."\n\t<td><p class='nwlink noprint'>weitere Auskunft:</p></td>" 
    184194."\n</tr>"; 
    185195 
    186196echo "\n<tr>" // Zeile: G e b i e t s z u g e h o e r i g k e i t  Gemeinde / Kreis / Regierungsbezirk 
    187         ."\n\t<td class='ll'><img title='Im Gebiet von' src='ico/Gemeinde.png' width='16' height='16' alt=''> Gebiet:</td>" // 1 
    188         ."\n\t<td>Gemeinde<br>Kreis<br>Regierungsbezirk</td>" // 2 
     197        ."\n\t<td class='ll'><img title='Im Gebiet von' src='ico/Gemeinde.png' width='16' height='16' alt=''> Gebiet:</td>" 
     198        ."\n\t<td>Gemeinde<br>Kreis<br>Regierungsbezirk</td>" 
    189199        ."\n\t<td class='lr' colspan='3'>"; // 3-5 
    190200                if ($showkey) {echo "<span class='key'>(".$gemeinde.")</span> ";} 
     
    195205                echo $rbez 
    196206        ."</td>" 
    197         ."\n\t<td class='nwlink'>" // 5 
    198                 ."\n\t\t<p class='nwlink noprint'>" 
     207        ."\n\t<td class='nwlink'>"; 
     208        if ($fsHistorie){ // conf 
     209                echo "\n\t\t<p class='nwlink noprint'>" 
    199210                ."\n\t\t\t<a href='alkisfshist.php?gkz=".$gkz."&amp;gmlid=".$gmlid; 
    200211                if ($showkey) {echo "&amp;showkey=j";} 
     
    202213                ."<img src='ico/Flurstueck_Historisch.png' width='16' height='16' alt=''>" 
    203214                ."</a>" 
    204                 ."\n\t\t</p>" 
    205         ."\n\t</td>" // 6 
     215                ."\n\t\t</p>\n\t"; 
     216        } 
     217        echo "</td>" 
    206218."\n</tr>"; 
    207219 
     
    222234if (!$res) { 
    223235        echo "\n<p class='err'>Fehler bei Lagebezeichnung mit Hausnummer</p>"; 
    224         if ($debug > 1) { 
     236        if ($dbg > 1) { 
    225237                echo "\n<p class='dbg'>Fehler:".pg_last_error()."</p>"; 
    226                 if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities(str_replace("$1","'".$gmlid."'",$sql), ENT_QUOTES, "UTF-8")."</p>";} 
     238                if ($dbg > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities(str_replace("$1","'".$gmlid."'",$sql), ENT_QUOTES, "UTF-8")."</p>";} 
    227239        } 
    228240} else { 
     
    281293if (!$res) { 
    282294        echo "\n<p class='err'>Fehler bei Lagebezeichnung ohne Hausnummer</p>"; 
    283         //if ($debug > 1) {echo "<p class='dbg'>Fehler:".pg_result_error($res)."</p>";} 
    284         if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities(str_replace("$1", "'".$gmlid."'", $sql), ENT_QUOTES, "UTF-8")."</p>";} 
     295        //if ($dbg > 1) {echo "<p class='dbg'>Fehler:".pg_result_error($res)."</p>";} 
     296        if ($dbg > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities(str_replace("$1", "'".$gmlid."'", $sql), ENT_QUOTES, "UTF-8")."</p>";} 
    285297} 
    286298$j=0; 
     
    353365if (!$res) { 
    354366        echo "\n<p class='err'>Fehler bei Suche tats. Nutzung</p>"; 
    355         if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities(str_replace("$1","'".$fskennzalb."'",$sql), ENT_QUOTES, "UTF-8")."'</p>";} 
     367        if ($dbg > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities(str_replace("$1","'".$fskennzalb."'",$sql), ENT_QUOTES, "UTF-8")."'</p>";} 
    356368} 
    357369$j=0; 
     
    513525 
    514526// 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,  
     527$sql_boden ="SELECT b.artderfestlegung AS wert, a.beschreibung AS art_verf, b.gml_id AS verf_gml, b.bezeichnung AS verf_bez,  
    516528b.name AS verf_name, d.bezeichnung AS stelle_bez, d.stelle AS stelle_key  
    517529FROM ax_flurstueck f  
    518530JOIN 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) 
    519531LEFT JOIN ax_artderfestlegung_bauraumoderbodenordnungsrecht a ON b.artderfestlegung=a.wert  
    520 LEFT JOIN ax_dienststelle d ON b.stelle=d.stelle  
    521 WHERE f.gml_id = $1 AND f.endet IS NULL AND b.endet IS NULL AND d.endet IS NULL"; 
     532LEFT JOIN ax_dienststelle d ON b.stelle=d.stelle ".UnqKatAmt("b","d") 
     533."WHERE f.gml_id = $1 AND f.endet IS NULL AND b.endet IS NULL AND d.endet IS NULL"; 
    522534 
    523535pg_prepare($con, "bodeneuordnung", $sql_boden); 
     
    525537if (!$res_bodeneuordnung) { 
    526538        echo "\n<p class='err'>Fehler bei Bau-, Raum- oder Bodenordnungsrecht</p>"; 
    527         if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".str_replace("$1", "'".$gmlid."'", $sql_boden)."</p>";} 
     539        if ($dbg > 2) {echo "\n<p class='dbg'>SQL=<br>".str_replace("$1", "'".$gmlid."'", $sql_boden)."</p>";} 
    528540} 
    529541$sql_str="SELECT gml_id FROM ax_besondereflurstuecksgrenze WHERE endet IS NULL AND 1000 = ANY(artderflurstuecksgrenze)  
     
    534546if (!$res_strittigeGrenze) { 
    535547        echo "\n<p class='err'>Fehler bei strittige Grenze</p>"; 
    536         if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".str_replace("$1", "'".$gmlid."'", $sql_str)."</p>";} 
     548        if ($dbg > 2) {echo "\n<p class='dbg'>SQL=<br>".str_replace("$1", "'".$gmlid."'", $sql_str)."</p>";} 
    537549} 
    538550if (pg_num_rows($res_bodeneuordnung) > 0 OR pg_num_rows($res_strittigeGrenze) > 0) { 
     
    609621        $anzber=ber_bs_zaehl($gml_buchungsstelle);      // Anzahl berechtigte Buchungen (nÀchste Stufe) zu dieser Buchung ermitteln 
    610622        $verf_next = array($gml_buchungsstelle);        // Start Recursion mit einem Element 
    611         //if ($debug > 1) {echo "<p class='dbg'>Nach Stufe ".$stufe.", Anzahl: ". $anzber ."</p>";} 
     623        //if ($dbg > 1) {echo "<p class='dbg'>Nach Stufe ".$stufe.", Anzahl: ". $anzber ."</p>";} 
    612624 
    613625        while ($anzber > 0 ) { // Stufe - recursiv in die Tiefe, solange es was zu verfolgen gibt 
     
    621633                                $verf_neu=ber_bs_anzg($gml_ber_bs, $eig, false, $gmlid, ""); // Anzeige ber. Buchungst., ggf. mit EigentÃŒmer. 
    622634                                $anz_neu=count($verf_neu); // Das Ergebnis zÀhlen 
    623                         //      if ($debug > 2) {echo "<p class='dbg'>Weiter zu verfolgen: Stufe ".$stufe.", Element ".$i.", Anzahl: ".$anz_neu."</p>";} 
     635                        //      if ($dbg > 2) {echo "<p class='dbg'>Weiter zu verfolgen: Stufe ".$stufe.", Element ".$i.", Anzahl: ".$anz_neu."</p>";} 
    624636                                if ($anz_neu > 0) { // wenn neue geliefert 
    625637                                        $verf_next=array_merge($verf_next, $verf_neu); // die neuen an die Sammlung heften 
     
    628640                } // Ende Buchungs-Array in der Stufe 
    629641                $anzber=count($verf_next); // Sammlung auf Stufe zÀhlen, Steuert die Schleife. 
    630                 //if ($debug > 1) {echo "<p class='dbg'>Nach Stufe ".$stufe.", Anzahl: ". $anzber ."</p>";} 
    631642        } // Ende Stufe 
    632643 
    633644        echo "\n</table>\n\n"; 
    634         //if ($debug > 1) {echo "<p class='dbg'>Buchung gezeigt = ".$gezeigt."</p>";} 
    635645 
    636646        // Fehler aus "ModellschwÀche" erkennen. 
     
    641651                echo "<p class='err'>Das Grundbuch zur Buchung '".$gml_buchungsstelle."' fehlt in der Datenbank.</p>"; 
    642652                 
    643                 if ($debug > 1) { // fehlt die Buchung?? 
     653                if ($dbg > 1) { // fehlt die Buchung?? 
    644654                        echo "<p class='dbg'>Suchen mit SQL: SELECT * FROM ax_buchungsstelle WHERE gml_id='".$gml_buchungsstelle."'; </p>"; 
    645655                } 
     
    651661 
    652662pg_close($con); 
    653 echo <<<END 
    654 <div class='buttonbereich noprint'> 
    655 <hr> 
    656         <a title="zur&uuml;ck" href='javascript:history.back()'><img src="ico/zurueck.png" width="16" height="16" alt="zur&uuml;ck"></a>&nbsp; 
    657         <a title="Drucken" href='javascript:window.print()'><img src="ico/print.png" width="16" height="16" alt="Drucken"></a>&nbsp; 
    658 END; 
    659 echo "\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>"; 
     663echo "<div class='buttonbereich noprint'>\n<hr>" 
     664        ."\n\t<a title='zur&uuml;ck' href='javascript:history.back()'><img src='ico/zurueck.png' width='16' height='16' alt='zur&uuml;ck'></a>&nbsp;"; 
     665if ($PrntBtn==true){echo "\n\t<a title='Drucken' href='javascript:window.print()'><img src='ico/print.png' width='16' height='16' alt='Drucken'></a>&nbsp;";} 
     666echo "\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>"; 
    660667 
    661668footer($gmlid, selbstverlinkung()."?", "&amp;eig=".$eig); 
  • trunk/info/info/alkisn/alkisgebaeudenw.php

    r422 r425  
    44 
    55        Version: 
    6         2016-02-24 Version fuer norGIS-ALKIS-Import 
     6        2016-02-24 Version fÃŒr norGIS-ALKIS-Import 
    77        .... 
    88        2020-02-20 Authentifizierung ausgelegert in Function darf_ich() 
     
    1111        2021-03-09 Verschneidung mit weiteren Bauwerks-Tabellen. 
    1212        2021-03-11 Adresse(n) des gehörtZu-Haus zum Bauwerk nicht mehr hier anzeigen sondern im neuen Bauwerk-Modul. 
     13        2021-12-09 Neue Parameter: $katAmtMix (Kataster-Amt-Mix), $PrntBtn (Drucken-SchaltflÀche) 
    1314*/ 
    1415 
     
    9192 
    9293$erlaubnis = darf_ich(); if ($erlaubnis === 0) { die('<p class="stop1">Abbruch</p></body>'); } 
     94$dbg=$debug; // CONF in Arbeits-Variable 
    9395 
    9496// Mit URL-Parameter "&nodebug=j" kann man die Entwicklungsumgebung (in Conf definiert) ausschalten. 
    95 // Manuell an die URL anfÃŒgen, wirkt nur temporÀr und wird nicht in Links weiter gereicht. 
    96 if ($nodebug === "j") {$debug=0;}  
     97// Wirkt temporÀr und wird nicht in Links weiter gereicht. 
     98if ($nodebug === "j") {$dbg=0;}  
    9799 
    98100$con = pg_connect($dbconn." options='--application_name=ALKIS-Auskunft_alkisgebaeudenw.php'"); 
     
    100102 
    101103// Flurstueck 
    102 $sqlf="SELECT f.flurnummer, f.zaehler, f.nenner, f.amtlicheflaeche, g.gemarkungsnummer, g.bezeichnung  
    103 FROM ax_flurstueck f LEFT JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer  
    104 WHERE f.gml_id= $1 AND f.endet IS NULL AND g.endet IS NULL;"; 
     104$sqlf ="SELECT f.flurnummer, f.zaehler, f.nenner, f.amtlicheflaeche, g.gemarkungsnummer, g.bezeichnung  
     105FROM ax_flurstueck f LEFT JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer ".UnqKatAmt("f","g") 
     106."WHERE f.gml_id= $1 AND f.endet IS NULL AND g.endet IS NULL;"; 
    105107$v=array($gmlid); 
    106108$resf=pg_prepare("", $sqlf); 
     
    108110if (!$resf) { 
    109111        echo "\n<p class='err'>Fehler bei Flurst&uuml;cksdaten.</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>";} 
     112        if ($dbg > 2) {echo "\n<p class='err'>SQL=<br>".str_replace("$1","'".$gmlid."'",$sqlf)."'</p>";} 
     113        if ($dbg > 1) {echo "<p class='dbg'>Fehler:".pg_result_error($resf)."</p>";} 
     114} 
     115 
     116if ($dbg > 0) { 
     117        $zeianz=pg_num_rows($resf); 
     118        if ($zeianz > 1){ 
     119                echo "\n<p class='err'>Die Abfrage liefert mehr als ein Flurst&uuml;cks-Objekt!</p>"; 
     120                if ($dbg > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities(str_replace("$1","'".$gmlid."'",$sqlf), ENT_QUOTES, "UTF-8")."</p>";} 
     121        } 
    112122} 
    113123if ($rowf = pg_fetch_assoc($resf)) { 
     
    124134        echo "\n<p class='err'>Fehler! Kein Treffer fuer gml_id=".$gmlid."</p>"; 
    125135} 
     136 
    126137echo "<p class='balken geb'>ALKIS Flurst&uuml;ck (Geb&auml;ude und Bauwerke) ".$gmkgnr."-".$flurnummer."-".$flstnummer."&nbsp;</p>"; // Balken 
    127138echo "\n<h2>Flurst&uuml;ck (Geb&auml;ude und Bauwerke)</h2>"; 
     
    181192if (!$resg) { 
    182193        echo "\n<p class='err'>Fehler bei Geb&auml;ude-Verschneidung.</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>";} 
     194        if ($dbg > 2) {echo "\n<p class='err'>SQL=<br>".str_replace("$1","'".$gmlid."'",$sqlg)."'</p>";} 
     195        if ($dbg > 1) {echo "<p class='dbg'>Fehler:".pg_result_error($resg)."</p>";} 
    185196} 
    186197$gebnr=0; 
     
    270281                if (!$resl) { 
    271282                        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>";} 
     283                        if ($dbg > 2) {echo "\n<p class='dbg'>SQL=<br>".str_replace("$1","'".$gmlid."'",$sqll)."'</p>";} 
     284                        if ($dbg > 1) {echo "<p class='dbg'>Fehler:".pg_result_error($resl)."</p>";} 
    274285                } 
    275286                while($rowl = pg_fetch_assoc($resl)) { // LOOP: Lagezeilen 
     
    306317if ($gebnr === 0) { 
    307318        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>";} 
     319        //if ($dbg > 2) {echo "\n<p class='err'>SQL=<br>".$sqlg."<br>$1 = gml_id = '".$gmlid."'</p>";} 
    309320} else { 
    310321        echo "\n<tr>" 
     
    425436if (!$resb) { 
    426437        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>";} 
     438        if ($dbg > 2) {echo "\n<p class='err'>SQL=<br>".str_replace("$1","'".$gmlid."'",$sqlb)."</p>";} 
     439        if ($dbg > 1) {echo "<p class='dbg'>Fehler:".pg_result_error($resb)."</p>";} 
    429440} 
    430441$baunr=0; // ZÀhler 
     
    544555if ($baunr === 0) { 
    545556        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>";} 
     557        // if ($dbg > 2) {echo "\n<p class='err'>SQL=<br>".$sqlb."<br>$1 = gml_id = '".$gmlid."'</p>";} 
    547558} else { 
    548559        echo "\n<tr>" 
     
    554565} 
    555566pg_free_result($resb); 
     567 
     568echo "<div class='buttonbereich noprint'>\n<hr>" 
     569        ."\n\t<a title='zur&uuml;ck' href='javascript:history.back()'><img src='ico/zurueck.png' width='16' height='16' alt='zur&uuml;ck'></a>&nbsp;"; 
     570if ($PrntBtn==true){echo "\n\t<a title='Drucken' href='javascript:window.print()'><img src='ico/print.png' width='16' height='16' alt='Drucken'></a>&nbsp;";} 
     571echo "\n</div>"; 
     572 
     573footer($gmlid, selbstverlinkung()."?", ""); 
    556574?> 
    557   
    558 <div class='buttonbereich noprint'> 
    559         <hr> 
    560         <a title="zur&uuml;ck" href='javascript:history.back()'><img src="ico/zurueck.png" width="16" height="16" alt="zur&uuml;ck"></a>&nbsp; 
    561         <a title="Drucken" href='javascript:window.print()'><img src="ico/print.png" width="16" height="16" alt="Drucken"></a> 
    562 </div> 
    563  
    564 <?php footer($gmlid, selbstverlinkung()."?", ""); ?> 
    565  
    566575</body> 
    567576</html> 
  • trunk/info/info/alkisn/alkisgsnw.php

    r422 r425  
    1111        2020-12-03 function selbstverlinkung() statt $_SERVER['PHP_SELF'] 
    1212        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. 
     13        2021-12-09 Neue Parameter: $katAmtMix (Kataster-Amt-Mix), $PrntBtn (Drucken-SchaltflÀche) 
     14 
     15ToDo:  
     16- Den Fall berÃŒcksichtigen, dass die Buchung vorhanden ist, aber das GB nicht (ModellschwÀche). Meldungen ausgeben. 
     17- bei Aufruf herrschende Buchung mit mehreren dienenden Buchungen: Links zu den dienenden Buchungen anzeigen 
    1518*/ 
    1619 
     
    1821// Daten zur Buchungsstelle (GS = GrundstÃŒck) aus der DB lesen. 
    1922// Suche wahlweise ÃŒber die GML-ID oder ÃŒber das GrundstÃŒcks-Kennzeichen (Bezirk-Blatt-LfdNr) aus der URL. 
    20         global $gkz, $showkey, $debug, $defland, $gsbez, $gsblatt, $gslfdnr, $gsbart; 
     23        global $gkz, $showkey, $dbg, $defland, $gsbez, $gsblatt, $gslfdnr, $gsbart; 
    2124 
    2225        $sqlgs="SELECT s.gml_id, b.bezirk, b.buchungsblattnummermitbuchstabenerweiterung AS blatt, s.laufendenummer, s.buchungsart " 
    2326                ."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! ++ 
     27        // Falls das Buchungsblatt fehlt (ModellschwÀche) wÀre ein LEFT JOIN hier nÃŒtzlich. Das Fehlen aber kontrollieren! 
    2528 
    2629        if ($gskennz == '') { // normaler Link ÃŒber gmlid 
     
    6669} 
    6770 
    68 function bs_dienend($gmlid_h) { 
    69 // Eine ggf. vorhandene dienende Buchungsstelle suchen und dessen GML_ID liefern. 
    70         global $debug, $gerooted; 
     71function Back2theRoots($gmlid) { 
     72// Die Buchungsstelle aus dem Aufruf-Parameter wenn eindeutig möglich iterativ zurÃŒck fÃŒhren auf die dienende Buchungsstelle,  
     73// auf der die FlurstÃŒcke gebucht sind (Buchungsart="GrundstÃŒck" oder Blattart="fiktives Blatt"). 
     74// Der GrundstÃŒcksnachweis wird aus anderen Modulen nur fÃŒr die "GrundstÃŒck"-Buchung aufgerufen, so dass diese Suche nicht notwendig ist. 
     75// Bei Aufrufen von außen kann dies aber sinnvoll sein. 
     76 
     77// ToDo: um Mehr als eine Stufe zurÃŒck fÃŒhren (max. 3) 
     78 
     79        global $gkz, $dbg, $showkey, $gerooted; 
     80        $gd=$gmlid; // gml dienend 
     81 
    7182        // BS-herrschend (bekannt)  >an[]>  BS-dienend (gesucht) 
    72         $sqld="SELECT d.gml_id FROM ax_buchungsstelle d JOIN ax_buchungsstelle h ON d.gml_id=any(h.an) " 
    73                 ."WHERE h.gml_id = $1 and d.endet IS NULL AND h.endet IS NULL"; 
    74         $v=array($gmlid_h); 
    75         $resd=pg_prepare("", $sqld); 
    76         $resd=pg_execute("", $v); 
    77         $cntd=0; 
    78         while($rowd=pg_fetch_assoc($resd)) { 
    79                 $cntd++; 
    80                 $gmlid_d=$rowd["gml_id"]; 
    81         } 
    82         if ($cntd === 0) { // KEINE dienende BS 
    83                 $gmlid_d=""; 
    84         } elseif ($cntd > 1) { // Problem: mehrere dienende BS 
    85                 $gmlid_d=""; // wennn mehrere (.an=Array[]), dann nicht eindeutig rÃŒckfÃŒhrbar. 
    86                 $gerooted=false; // Root nicht erreicht 
    87                 if ($debug > 2 ) { // Meldung? Auswahl? 
    88                         echo "\n<p class='err'>Mehrere 'diendende' Buchungen zur Buchung '".$gmlid_h."'</p>"; 
    89                 } 
    90         } 
    91         pg_free_result($resd); 
    92         return $gmlid_d; 
    93 } 
    94  
    95 function Back2theRoots($gmlid_h) { 
    96 // Eine Buchungsstelle (aus dem Aufruf-Parameter) zurÃŒck fÃŒhren auf die Basis-Buchungsstelle 
    97 // Suchen bis Buchungsart="GrundstÃŒck" oder ggf. Blattart="fiktives Blatt" 
    98         global $debug; 
    99         $gh=$gmlid_h; // herrschend 
    100         $gd=$gh; // dienend 
    101         $gr=$gd; // root 
     83        $sql="SELECT d.gml_id, d.laufendenummer FROM ax_buchungsstelle d JOIN ax_buchungsstelle h ON d.gml_id=any(h.an) " 
     84                ."WHERE h.gml_id = $1 and d.endet IS NULL AND h.endet IS NULL ORDER BY d.laufendenummer;"; 
     85 
    10286        while($gd != "") { 
    103                 $gr=$gd; // sichern 
    104                 $gd=bs_dienend($gh); // an? 
    105                 $gh=$gd; // fuer weitere Loop 
    106         } 
     87                $gr=$gd; // gml Return 
     88                $v=array($gd); 
     89                $res=pg_prepare("", $sql); 
     90                $res=pg_execute("", $v); 
     91                $zeianz=pg_num_rows($res); 
     92                if ($zeianz == 0){ // sollte nicht vorkommen, die Buchungsart "GrundstÃŒck" ruft dies NICHT auf 
     93                        if ($dbg > 1 ) {echo "\n<p class='err'>Keine 'diendende' Buchung zur Buchung '".$gd."'</p>";} 
     94                        $gd="";                  
     95                } elseif ($zeianz == 1){ 
     96                        if ($dbg > 1 ) {echo "\n<p class='dbg'>Eine 'diendende' Buchung zur Buchung '".$gd."'</p>";} 
     97                        $row=pg_fetch_assoc($res); 
     98                        $gd=$row["gml_id"]; 
     99                } else { // > 1 // Seltener Sonderfall 
     100                        if ($dbg > 1 ) {echo "\n<p class='dbg'>".$zeianz." 'diendende' Buchungen zur Buchung '".$gd."'</p>";} 
     101                        $gerooted=false; // Root (GrundstÃŒck) wird nicht erreicht 
     102                        $gd=""; // wenn mehrere (.an=Array[]), dann nicht eindeutig rÃŒckfÃŒhrbar 
     103                        echo "\n<table class='fs'>\n<tr>\n\t<td class='heads'>Hinweis</td>" 
     104                        ."\n\t<td class='head nwlink noprint' title='Verlinkung zu anderen Nachweis-Arten und verbundenen Objekten'>weitere Auskunft</td>" 
     105                        ."\n</tr>"; 
     106                        echo "\n<tr>\n\t<td>Die angeforderte Buchung hat Rechte an ".$zeianz." anderen Buchungen." 
     107                        ."<br>F&uuml;r die Anzeige der Flurst&uuml;cke muss eine dieser Grundst&uuml;cks-Buchungen gew&auml;hlt werden.</td>" 
     108                        ."\n\t<td>\n\t\t<p class='nwlink noprint'>"; 
     109                        while($row=pg_fetch_assoc($res)) { 
     110                                $gml_d=$row["gml_id"]; 
     111                                $bvnr=ltrim($row["laufendenummer"], '0'); 
     112                                echo "\n\t\t\t<a href='alkisgsnw.php?gkz=".$gkz."&amp;gmlid=".$gml_d; 
     113                                if ($showkey) {echo "&amp;showkey=j";} 
     114                                echo "' title='Grundst&uuml;cksnachweis'>Buchung ".$bvnr 
     115                                ." <img src='ico/Grundstueck_Link.png' width='16' height='16' alt=''></a><br>"; 
     116                        } 
     117                        echo "\n\t\t</p>\n\t</td>\n</tr>\n</table>"; 
     118                } 
     119        } 
     120        pg_free_result($res); 
    107121        return $gr; 
    108122} 
    109123 
    110 // H i e r   S t a r t 
     124// S t a r t 
    111125ini_set("session.cookie_httponly", 1); 
    112126session_start(); 
     
    156170<?php 
    157171$erlaubnis = darf_ich(); if ($erlaubnis === 0) { die('<p class="stop1">Abbruch</p></body>'); } 
    158  
    159 if ($nodebug === "j") {$debug=0;}  
     172$dbg=$debug; // CONF in Arbeits-Variable 
     173if ($nodebug === "j") {$dbg=0;}  
    160174$con = pg_connect($dbconn." options='--application_name=ALKIS-Auskunft_alkisgsnw.php'"); 
    161175if (!$con) echo "\n<p class='err'>Fehler beim Verbinden der DB</p>"; 
    162176 
    163 $gmlid_p=$gmlid; // Wert aus Parameter merken 
    164 $gerooted=true; // Auskunft beginnt mit dienendem GrundstÃŒck 
    165 $gmlid=get_GS_Daten($gmlid, $gskennz); // nachschauen 
    166 $gml_anfrd=$gmlid; // ursprÃŒngliche Anforderung aus URL merken 
     177$gml_anfrd=$gmlid;      // ursprÃŒngliche Anforderung aus URL merken 
     178$gerooted=true;         // Auskunft beginnt mit (dienendem) GrundstÃŒck 
     179$gmlid=get_GS_Daten($gmlid, $gskennz); // nachschauen, Variablen setzen, Keine Ausgabe 
    167180if ($gmlid == "") { // nix gefunden 
    168181        die("Kein Treffer"); 
    169 } else { // Treffer 
    170         if ($gsbart != "1100") { // Buchungsart "GrundstÃŒck" 
    171                 $gmlid_r=Back2theRoots($gmlid); 
    172                 if ($gmlid_r != $gmlid) { // wurde hoch gerÃŒckt 
    173                         $gmlid=get_GS_Daten($gmlid_r, ""); // damit weiter arbeiten 
    174                 } 
    175         } 
    176182} 
    177183echo "<p class='balken gskennz'>ALKIS Grundst&uuml;ck ".$gsbez."-".rtrim($gsblatt)."-".$gslfdnr."&nbsp;</p>\n\n<h2>Grundst&uuml;ck</h2>"; // Balken 
    178184 
    179 if ($gerooted) { 
    180         // F l u r s t u e c k e 
    181         echo "\n<h3><img src='ico/Flurstueck.png' width='16' height='16' alt=''> Flurst&uuml;cke</h3>" 
    182                 ."\n<table class='fs'>"; 
    183         echo "\n<tr>" // Kopfzeile 
     185// F l u r s t ÃŒ c k e 
     186echo "\n<h3><img src='ico/Flurstueck.png' width='16' height='16' alt=''> Flurst&uuml;cke</h3>"; 
     187 
     188if ($gsbart > 1102){ // Recht an .. 
     189        $gmlid_r=Back2theRoots($gmlid); 
     190        if ($gmlid_r != $gmlid) { // wurde hoch gerÃŒckt 
     191                $gmlid=get_GS_Daten($gmlid_r, ""); // damit weiter arbeiten 
     192        } 
     193} 
     194if ($gerooted) { // // Buchungsart (aufgeteiltes) GrundstÃŒck (nicht Recht an ..) 
     195        echo "\n<table class='fs'>\n<tr>" // Kopfzeile 
    184196                ."\n\t<td class='heads'>Gemarkung</td>" 
    185197                ."\n\t<td class='heads'>Flur</td>" 
    186198                ."\n\t<td class='heads fsnr' title='Flurst&uuml;cksnummer (Z&auml;hler / Nenner)'><span class='wichtig'>Flurst.</span></td>" 
    187                 ."\n\t<td class='head flag'>Fl&auml;che</td>" 
     199                ."\n\t<td class='head fla'>Fl&auml;che</td>" 
    188200                ."\n\t<td class='head nwlink noprint' title='Verlinkung zu anderen Nachweis-Arten und verbundenen Objekten'>weitere Auskunft</td>" 
    189201        ."\n</tr>"; 
     
    191203        //++ 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. 
    192204 
    193         $sqlfs="SELECT g.gemarkungsnummer, g.bezeichnung, f.gml_id, f.flurnummer, f.zaehler, f.nenner, f.amtlicheflaeche  
    194         FROM ax_flurstueck f LEFT JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer  
    195         WHERE f.istgebucht = $1 AND f.endet IS NULL AND g.endet IS NULL "; 
     205        $sqlfs ="SELECT g.gemarkungsnummer, g.bezeichnung, f.gml_id, f.flurnummer, f.zaehler, f.nenner, f.amtlicheflaeche " 
     206        ."FROM ax_flurstueck f LEFT JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer ".UnqKatAmt("f","g") 
     207        ."WHERE f.istgebucht = $1 AND f.endet IS NULL AND g.endet IS NULL "; 
    196208        if ($filtgem === '' ) { // ungefiltert 
    197209                $v=array($gmlid); 
     
    236248        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>";} 
    237249        echo "\n</table>"; 
    238 } else { // konnte nicht bis zur Basis aufsteigen 
    239         echo "<p>Die angeforderte Buchung hat Rechte an mehreren anderen Buchungen." 
    240         ."<br>F&uuml;r die Anzeige der Flurst&uuml;cke muss eine dieser Buchungen (Grundst&uuml;ck) gew&auml;hlt werden.</p>"; 
    241         // Auswahl anbieten? Sonst ÃŒber den Link "Bestand" recherchieren.  
    242250} 
    243251 
     
    268276                $anzber=count($verf_next); 
    269277        } 
    270 echo "\n</table>\n\n"; 
    271 //if ($debug > 1) {echo "<p class='dbg'>Buchung gezeigt = ".$gezeigt."</p>";} 
    272  
     278echo "\n</table>\n"; 
    273279pg_close($con); 
    274 echo <<<END 
    275 <div class='buttonbereich noprint'> 
    276 <hr> 
    277         <a title="zur&uuml;ck" href='javascript:history.back()'><img src="ico/zurueck.png" width="16" height="16" alt="zur&uuml;ck"></a>&nbsp; 
    278         <a title="Drucken" href='javascript:window.print()'><img src="ico/print.png" width="16" height="16" alt="Drucken"></a>&nbsp; 
    279 END; 
     280 
     281echo "<div class='buttonbereich noprint'>\n<hr>" 
     282        ."\n\t<a title='zur&uuml;ck' href='javascript:history.back()'><img src='ico/zurueck.png' width='16' height='16' alt='zur&uuml;ck'></a>&nbsp;"; 
     283if ($PrntBtn==true){echo "\n\t<a title='Drucken' href='javascript:window.print()'><img src='ico/print.png' width='16' height='16' alt='Drucken'></a>&nbsp;";} 
    280284if ($stufe < 3) { 
    281285        echo "\n\t<a title='Export als CSV' href='javascript:ALKISexport(\"".$gmlid."\")'><img src='ico/download_gs.png' width='32' height='16' alt='Export'></a>"; 
  • trunk/info/info/alkisn/alkishaus.php

    r422 r425  
    44 
    55        Version: 
    6         2016-02-24 Version fuer norGIS-ALKIS-Import 
     6        2016-02-24 Version fÃŒr norGIS-ALKIS-Import 
    77        .... 
    88        2020-12-01 Darstellung der Datenerhebung, Klammern um SchlÃŒsselwerte 
     
    1010        2020-12-03 function selbstverlinkung() statt $_SERVER['PHP_SELF'] 
    1111        2020-12-15 Input-Validation und Strict Comparisation (===) 
     12        2021-12-09 Neue Parameter: $katAmtMix (Kataster-Amt-Mix), $PrntBtn (Drucken-SchaltflÀche). Gemeinde in Adresse 
     13 
    1214ToDo: 
    1315        - Template im WMS auf Ebene GebÀude hierhin verknÃŒpfen. 
     
    5355 
    5456$erlaubnis = darf_ich(); if ($erlaubnis === 0) { die('<p class="stop1">Abbruch</p></body>'); } 
     57$dbg=$debug; // CONF in Arbeits-Variable 
    5558 
    5659// Mit URL-Parameter "&nodebug=j" kann man die Entwicklungsumgebung (in Conf definiert) ausschalten. 
    57 // Manuell an die URL anfÃŒgen, wirkt nur temporÀr und wird nicht in Links weiter gereicht. 
    58 if ($nodebug === "j") {$debug=0;}  
     60// Wirkt temporÀr und wird nicht in Links weiter gereicht. 
     61if ($nodebug === "j") {$dbg=0;}  
    5962 
    6063$con = pg_connect($dbconn." options='--application_name=ALKIS-Auskunft_alkishaus.php'"); 
     
    8386if (!$resg) { 
    8487        echo "\n<p class='err'>Fehler bei Geb&auml;ude.<br>".pg_last_error()."</p>"; 
    85         if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".$sqlg."<br>$1 = gml_id = '".$gmlid."'</p>";} 
     88        if ($dbg > 2) {echo "\n<p class='dbg'>SQL=<br>".$sqlg."<br>$1 = gml_id = '".$gmlid."'</p>";} 
     89} 
     90if ($dbg > 0) { 
     91        $zeianz=pg_num_rows($resg); 
     92        if ($zeianz > 1){ 
     93                echo "\n<p class='err'>Die Abfrage liefert mehr als ein (".$zeianz.") Geb&auml;ude-Objekt!</p>"; 
     94                if ($dbg > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities(str_replace("$1","'".$gmlid."'",$sqlg), ENT_QUOTES, "UTF-8")."</p>";} 
     95        } 
    8696} 
    8797 
     
    164174 
    165175// 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 
     176$sqll ="SELECT 'm' AS ltyp, lh.gml_id AS gmllag, sh.lage, sh.bezeichnung, lh.hausnummer, '' AS laufendenummer, ph.bezeichnung AS gemeinde 
     177FROM ax_gebaeude gh 
    167178JOIN ax_lagebezeichnungmithausnummer lh ON lh.gml_id=ANY(gh.zeigtauf) 
    168 JOIN ax_lagebezeichnungkatalogeintrag sh ON lh.kreis=sh.kreis AND lh.gemeinde=sh.gemeinde AND lh.lage=sh.lage 
    169 WHERE gh.gml_id= $1 AND gh.endet IS NULL AND lh.endet IS NULL AND sh.endet IS NULL"; 
     179JOIN ax_lagebezeichnungkatalogeintrag sh ON lh.kreis=sh.kreis AND lh.gemeinde=sh.gemeinde AND lh.lage=sh.lage  
     180LEFT JOIN ax_gemeinde ph ON lh.land=ph.land AND lh.regierungsbezirk=ph.regierungsbezirk AND lh.kreis=ph.kreis AND lh.gemeinde=ph.gemeinde ".UnqKatAmt("lh","ph") 
     181."WHERE gh.gml_id= $1 AND gh.endet IS NULL AND lh.endet IS NULL AND sh.endet IS NULL"; 
     182 
    170183// oder NEBENgebÀude 
    171184$sqll.=" UNION  
    172 SELECT 'p' AS ltyp, ln.gml_id AS gmllag, sn.lage, sn.bezeichnung, ln.pseudonummer AS hausnummer, ln.laufendenummer 
     185SELECT 'p' AS ltyp, ln.gml_id AS gmllag, sn.lage, sn.bezeichnung, ln.pseudonummer AS hausnummer, ln.laufendenummer, pn.bezeichnung AS gemeinde 
    173186FROM ax_gebaeude gn 
    174187JOIN ax_lagebezeichnungmitpseudonummer ln ON ln.gml_id=gn.hat 
    175 JOIN ax_lagebezeichnungkatalogeintrag sn ON ln.kreis=sn.kreis AND ln.gemeinde=sn.gemeinde AND ln.lage=sn.lage 
    176 WHERE gn.gml_id= $1 AND gn.endet IS NULL AND ln.endet IS NULL AND sn.endet IS NULL "; 
     188JOIN ax_lagebezeichnungkatalogeintrag sn ON ln.kreis=sn.kreis AND ln.gemeinde=sn.gemeinde AND ln.lage=sn.lage  
     189LEFT JOIN ax_gemeinde pn ON ln.land=pn.land AND ln.regierungsbezirk=pn.regierungsbezirk AND ln.kreis=pn.kreis AND ln.gemeinde=pn.gemeinde ".UnqKatAmt("ln","pn") 
     190."WHERE gn.gml_id= $1 AND gn.endet IS NULL AND ln.endet IS NULL AND sn.endet IS NULL "; 
    177191 
    178192$sqll.="ORDER BY bezeichnung, hausnummer ;"; 
     
    183197if (!$resl) { 
    184198        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>";} 
     199        if ($dbg > 2) {echo "\n<p class='dbg'>SQL=<br>".$sqll."<br>$1 = gml_id = '".$gmlid."'</p>";} 
    186200} 
    187201$zhsnr=0; 
     
    193207        $hsnr=$rowl["hausnummer"]; 
    194208        $hlfd=$rowl["laufendenummer"]; 
     209        $gemeinde=$rowl["gemeinde"]; 
    195210        $gmllag=$rowl["gmllag"]; 
    196211 
     
    206221                echo "'>".$snam."&nbsp;".$hsnr; 
    207222                if ($ltyp === "p") {echo ", lfd.Nr ".$hlfd;} 
    208         echo "</a><br>"; 
     223        echo "</a>, ".$gemeinde."<br>"; 
    209224} // Ende Loop Lagezeilen m.H. 
    210225if ($zhsnr > 0) {echo "\n\t</td>\n\t<td>&nbsp;</td>\n</tr>";} 
     
    324339                        if (!$resw) { 
    325340                                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>";} 
     341                                if ($dbg > 2) {echo "\n<p class='dbg'>SQL=<br>".$sqlw."<br>$1 = Werteliste = '".$wgf."'</p>";} 
    327342                        } 
    328343                        $zw=0; 
     
    433448if (!$rese) { 
    434449        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>";} 
     450        if ($dbg > 2) {echo "\n<p class='dbg'>SQL=<br>".$sqle."<br>$1 = gml_id = '".$gmlid."'</p>";} 
    436451} 
    437452while($rowe = pg_fetch_assoc($rese)) { // Schleife weil array-Feld, meist aber leer 
     
    469484$sqlf ="SELECT f.gml_id, round(st_area(ST_Intersection(g.wkb_geometry,f.wkb_geometry))::numeric,2) AS schnittflae,  
    470485st_within(g.wkb_geometry,f.wkb_geometry) as drin, o.gemarkungsnummer, o.bezeichnung, f.flurnummer, f.zaehler, f.nenner  
    471 FROM ax_gebaeude g, ax_flurstueck f LEFT JOIN ax_gemarkung o ON f.land=o.land AND f.gemarkungsnummer=o.gemarkungsnummer 
    472 WHERE g.gml_id= $1 AND f.endet IS NULL and g.endet IS NULL  
     486FROM ax_gebaeude g, ax_flurstueck f LEFT JOIN ax_gemarkung o ON f.land=o.land AND f.gemarkungsnummer=o.gemarkungsnummer ".UnqKatAmt("f","o") 
     487."WHERE g.gml_id= $1 AND f.endet IS NULL and g.endet IS NULL  
    473488AND st_intersects(g.wkb_geometry,f.wkb_geometry) = true ORDER BY schnittflae DESC;"; 
    474489 
     
    478493if (!$resf) { 
    479494        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>";} 
     495        if ($dbg > 2) {echo "\n<p class='err'>SQL=<br>".$sqlf."<br>$1 = gml_id = '".$gmlid."'</p>";} 
    481496} 
    482497 
     
    535550echo "\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>"; 
    536551echo "\n</table>"; // Ende FlurstÃŒcke 
     552 
     553echo "<div class='buttonbereich noprint'>\n<hr>" 
     554        ."\n\t<a title='zur&uuml;ck' href='javascript:history.back()'><img src='ico/zurueck.png' width='16' height='16' alt='zur&uuml;ck'></a>&nbsp;"; 
     555if ($PrntBtn==true){echo "\n\t<a title='Drucken' href='javascript:window.print()'><img src='ico/print.png' width='16' height='16' alt='Drucken'></a>&nbsp;";} 
     556echo "\n</div>"; 
     557 
     558footer($gmlid, selbstverlinkung()."?", ""); 
    537559?> 
    538  
    539 <div class='buttonbereich noprint'> 
    540 <hr> 
    541         <a title="zur&uuml;ck" href='javascript:history.back()'><img src="ico/zurueck.png" width="16" height="16" alt="zur&uuml;ck"></a>&nbsp; 
    542         <a title="Drucken" href='javascript:window.print()'><img src="ico/print.png" width="16" height="16" alt="Drucken"></a>&nbsp; 
    543 </div> 
    544  
    545 <?php footer($gmlid, selbstverlinkung()."?", ""); ?> 
    546  
    547560</body> 
    548561</html> 
  • trunk/info/info/alkisn/alkisinlayausk.php

    r422 r425  
    1717        2020-12-15 Input-Validation und Strict Comparisation (===) 
    1818        2021-03-09 Link zum GebÀudenachweis auch mit "Bauwerke" betiteln 
     19        2021-12-09 Neue Parameter: $katAmtMix (Kataster-Amt-Mix) 
    1920*/ 
    2021ini_set("session.cookie_httponly", 1); 
     
    5657<body class ="mbfi"> 
    5758END; 
    58 // <body style='width: 98%;'> 
     59 
    5960$erlaubnis = darf_ich(); if ($erlaubnis === 0) { die('<p class="stop1">Abbruch</p></body>'); } 
     61$dbg=$debug; // CONF in Arbeits-Variable 
    6062 
    6163// Body des Inlay muss in Mapbender-Feature-Info-PopUp passen. Kleiner als 750 aus css. 
     
    6567// *** F L U R S T U E C K *** 
    6668$sql ="SELECT f.flurnummer, f.zaehler, f.nenner, f.amtlicheflaeche, g.gemarkungsnummer, g.bezeichnung, f.gemeindezugehoerigkeit_regierungsbezirk, f.gemeindezugehoerigkeit_kreis, f.gemeindezugehoerigkeit_gemeinde, f.istgebucht 
    67 FROM ax_flurstueck f LEFT JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer  
    68 WHERE f.gml_id= $1 AND f.endet IS NULL AND g.endet IS NULL;"; 
     69FROM ax_flurstueck f LEFT JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer ".UnqKatAmt("f","g") 
     70."WHERE f.gml_id= $1 AND f.endet IS NULL AND g.endet IS NULL;"; 
    6971 
    7072$v = array($gmlid); 
     
    7375if (!$res) { 
    7476        echo "\n<p class='err'>Fehler bei Flurstuecksdaten.</p>"; 
    75         if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".htmlentities(str_replace("$1", "'".$gmlid."'", $sql), ENT_QUOTES, "UTF-8")."</p>";} 
    76 } 
    77  
     77        if ($dbg > 2) {echo "\n<p class='err'>SQL=<br>".htmlentities(str_replace("$1", "'".$gmlid."'", $sql), ENT_QUOTES, "UTF-8")."</p>";} 
     78} 
     79if ($dbg > 0) { 
     80        $zeianz=pg_num_rows($res); 
     81        if ($zeianz > 1){ 
     82                echo "\n<p class='err'>Die Abfrage liefert mehr als ein (".$zeianz.") Flurst&uuml;cks-Objekt!</p>"; 
     83                if ($dbg > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities(str_replace("$1","'".$gmlid."'",$sql), ENT_QUOTES, "UTF-8")."</p>";} 
     84        } 
     85} 
    7886if ($row = pg_fetch_assoc($res)) { 
    7987        $gemkname=htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8"); 
     
    97105if ( ($filtkreis != '' and $filtkreis != $fskrs) or ($filtgem != '' and $filtgem != $fsgem) ) { 
    98106        // Einer der gesetzten Filter passt nicht 
    99         if ($debug > 2) { 
     107        if ($dbg > 2) { 
    100108                echo "\n<p class='err'>Filter Kreis='".$filtkreis."', Gemeinde='".$filtgem."'</p>"; 
    101109                echo "\n<p class='err'>Flstk. Kreis='".$fskrs."', Gemeinde='".$fsgem."'</p>"; 
     
    125133        ."<img src='ico/Flurstueck_Link.png' width='16' height='16' alt=''>" 
    126134."</a><br>"; 
     135 
    127136// FS-Historie 
    128 echo "\n\t\t\t\t<a href='javascript:imFenster(\"alkisfshist.php?gkz=".$gkz."&amp;gmlid=".$gmlid."\")' " 
    129         ."title='Vorg&auml;nger des Flurst&uuml;cks'>Historie&nbsp;" 
    130         ."<img src='ico/Flurstueck_Historisch.png' width='16' height='16' alt=''>" 
    131 ."</a><br>"; 
    132 // Gebaeude-NW zum FS 
     137if ($fsHistorie){ // conf 
     138        echo "\n\t\t\t\t<a href='javascript:imFenster(\"alkisfshist.php?gkz=".$gkz."&amp;gmlid=".$gmlid."\")' " 
     139                ."title='Vorg&auml;nger des Flurst&uuml;cks'>Historie&nbsp;" 
     140                ."<img src='ico/Flurstueck_Historisch.png' width='16' height='16' alt=''>" 
     141        ."</a><br>"; 
     142} 
     143// GebÀude-NW zum FS 
    133144echo "\n\t\t\t\t<a href='javascript:imFenster(\"alkisgebaeudenw.php?gkz=".$gkz."&amp;gmlid=".$gmlid."\")' " 
    134         ."title='Geb&auml;ude oder Bauwerke'>Geb&auml;ude/Bauw.&nbsp;" 
     145        ."title='Geb&auml;ude oder Bauwerke auf oder an diesem Flurst&uuml;ck'>Geb&auml;ude/Bauw.&nbsp;" 
    135146        ."<img src='ico/Haus.png' width='16' height='16' alt=''>" 
    136147."</a>"; 
     
    149160if (!$res) { 
    150161        echo "\n<p class='err'>Fehler bei Lagebezeichnung mit Hausnummer.</p>"; 
    151         if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".htmlentities(str_replace("$1", "'".$gmlid."'", $sql), ENT_QUOTES, "UTF-8")."</p>";} 
     162        if ($dbg > 2) {echo "\n<p class='err'>SQL=<br>".htmlentities(str_replace("$1", "'".$gmlid."'", $sql), ENT_QUOTES, "UTF-8")."</p>";} 
    152163} 
    153164$j=0; 
     
    192203if (!$res) { 
    193204        echo "\n<p class='err'>Fehler bei Lagebezeichnung ohne Hausnummer.</p>"; 
    194         if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".htmlentities(str_replace("$1", "'".$gmlid."'", $sql), ENT_QUOTES, "UTF-8")."</p>";} 
     205        if ($dbg > 2) {echo "\n<p class='err'>SQL=<br>".htmlentities(str_replace("$1", "'".$gmlid."'", $sql), ENT_QUOTES, "UTF-8")."</p>";} 
    195206} 
    196207$kgmlalt=''; 
     
    216227        } 
    217228        echo "\n\t\t<td>\n\t\t\t<p class='nwlink noprint'>"; 
    218         if ($sname != "") { // Typ=Strasse 
     229        if ($sname != "") { // Typ=Straße 
    219230                $kgml=$row["kgml"]; // Wiederholung vermeiden 
    220                 if ($kgml != $kgmlalt) { // NEUE Strasse vor Lage-O 
     231                if ($kgml != $kgmlalt) { // NEUE Straße vor Lage-O 
    221232                        $kgmlalt=$kgml; // Katalog GML-ID 
    222233                        echo "\n\t\t\t<a class='noprint' title='Flurst&uuml;cke mit oder ohne Hausnummer".$slink."' " 
  • trunk/info/info/alkisn/alkisinlaybaurecht.php

    r422 r425  
    55 
    66        Version: 
    7         2016-02-24 Version fuer norGIS-ALKIS-Import 
     7        2016-02-24 Version fÃŒr norGIS-ALKIS-Import 
    88        .... 
    99        2020-02-03 Fenster-Weite 
    1010        2020-02-20 Authentifizierung ausgelagert in Function darf_ich() 
    1111        2020-12-15 Input-Validation und Strict Comparisation (===) 
     12        2021-12-09 2021-12-09 Neue Parameter: $katAmtMix (Kataster-Amt-Mix) 
    1213*/ 
    1314ini_set("session.cookie_httponly", 1); 
     
    5051 
    5152$erlaubnis = darf_ich(); if ($erlaubnis === 0) { die('<p class="stop1">Abbruch</p></body>'); } 
     53$dbg=$debug; // CONF in Arbeits-Variable 
    5254 
    5355// Body des Inlay muss in Mapbender-Feature-Info-PopUp passen. Kleiner als 750 aus css. 
     
    5961FROM ax_bauraumoderbodenordnungsrecht r  
    6062LEFT JOIN ax_artderfestlegung_bauraumoderbodenordnungsrecht a ON r.artderfestlegung = a.wert 
    61 LEFT JOIN ax_dienststelle d ON r.land=d.land AND r.stelle=d.stelle  
    62 WHERE r.gml_id= $1 AND r.endet IS NULL AND d.endet IS NULL;"; 
     63LEFT JOIN ax_dienststelle d ON r.land=d.land AND r.stelle=d.stelle ".UnqKatAmt("r","d") 
     64."WHERE r.gml_id= $1 AND r.endet IS NULL AND d.endet IS NULL;"; 
    6365 
    6466$v = array($gmlid); 
     
    6870if (!$res) { 
    6971        echo "\n<p class='err'>Fehler bei Baurecht.</p>"; 
    70         if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".str_replace("$1", "'".$gmlid."'", $sql)."</p>";} 
     72        if ($dbg > 2) {echo "\n<p class='err'>SQL=<br>".str_replace("$1", "'".$gmlid."'", $sql)."</p>";} 
    7173} 
    7274echo "\n<h2><img src='ico/Gericht.png' width='16' height='16' alt=''> Bau-, Raum- oder Bodenordnungsrecht</h2>"; 
    73  
     75if ($dbg > 0) { 
     76        $zeianz=pg_num_rows($res); 
     77        if ($zeianz > 1){ 
     78                echo "\n<p class='err'>Die Abfrage liefert mehr als ein (".$zeianz.") Bauordnungs-Objekt!</p>"; 
     79                if ($dbg > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities(str_replace("$1","'".$gmlid."'",$sql), ENT_QUOTES, "UTF-8")."</p>";} 
     80        } 
     81} 
    7482if ($row = pg_fetch_assoc($res)) { 
    7583        echo "\n<table>" 
  • trunk/info/info/alkisn/alkislage.php

    r422 r425  
    66 
    77        Version: 
    8         2016-02-24 Version fuer norGIS-ALKIS-Import 
     8        2016-02-24 Version fÃŒr norGIS-ALKIS-Import 
    99        .... 
    1010        2020-02-20 Authentifizierung ausgelagert in Function darf_ich() 
    1111        2020-12-03 function selbstverlinkung() statt $_SERVER['PHP_SELF'] 
    1212        2020-12-15 Input-Validation und Strict Comparisation (===) 
     13        2021-12-09 Neue Parameter: $katAmtMix (Kataster-Amt-Mix), $PrntBtn (Drucken-SchaltflÀche) 
     14               Gemarkung und Flur bei Gruppenwechsel FETT anzeigen 
    1315 
    1416        ToDo: 
     
    6769 
    6870$erlaubnis = darf_ich(); if ($erlaubnis === 0) { die('<p class="stop1">Abbruch</p></body>'); } 
     71$dbg=$debug; // CONF in Arbeits-Variable 
    6972 
    7073// Mit URL-Parameter "&nodebug=j" kann man die Entwicklungsumgebung (in Conf definiert) ausschalten. 
    71 // Manuell an die URL anfÃŒgen, wirkt nur temporÀr und wird nicht in Links weiter gereicht. 
    72 if ($nodebug === "j") {$debug=0;}  
     74// Wirkt temporÀr und wird nicht in Links weiter gereicht. 
     75if ($nodebug === "j") {$dbg=0;}  
    7376 
    7477$con = pg_connect($dbconn." options='--application_name=ALKIS-Auskunft_alkislage.php'"); 
     
    9093// "Left" weil: Bei sub-Typ "Gewanne" von Typ "o" sind keine SchlÃŒsselfelder gefÃŒllt! 
    9194$sql.="FROM ".$tnam." l  
    92 LEFT JOIN ax_gemeinde g ON l.land=g.land AND l.regierungsbezirk=g.regierungsbezirk AND l.kreis=g.kreis AND l.gemeinde=g.gemeinde  
    93 LEFT JOIN ax_kreisregion k ON l.land=k.land AND l.regierungsbezirk=k.regierungsbezirk AND l.kreis=k.kreis  
    94 LEFT JOIN ax_regierungsbezirk r ON l.land=r.land AND l.regierungsbezirk=r.regierungsbezirk  
    95 LEFT JOIN ax_bundesland b ON l.land=b.land  
    96 LEFT JOIN ax_lagebezeichnungkatalogeintrag s  
     95LEFT JOIN ax_gemeinde g ON l.land=g.land AND l.regierungsbezirk=g.regierungsbezirk AND l.kreis=g.kreis AND l.gemeinde=g.gemeinde ".UnqKatAmt("l","g") 
     96."LEFT JOIN ax_kreisregion k ON l.land=k.land AND l.regierungsbezirk=k.regierungsbezirk AND l.kreis=k.kreis ".UnqKatAmt("l","k") 
     97."LEFT JOIN ax_regierungsbezirk r ON l.land=r.land AND l.regierungsbezirk=r.regierungsbezirk ".UnqKatAmt("l","r") 
     98."LEFT JOIN ax_bundesland b ON l.land=b.land ".UnqKatAmt("l","b") 
     99."LEFT JOIN ax_lagebezeichnungkatalogeintrag s  
    97100ON l.land=s.land AND l.regierungsbezirk=s.regierungsbezirk AND l.kreis=s.kreis AND l.gemeinde=s.gemeinde AND l.lage=s.lage  
    98101WHERE l.gml_id= $1 AND l.endet IS NULL AND g.endet IS NULL AND k.endet IS NULL AND r.endet IS NULL AND b.endet IS NULL AND s.endet IS NULL;"; 
     
    103106if (!$res) { 
    104107        echo "\n<p class='err'>Fehler bei Lagebezeichnung.</p>"; 
    105         if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".htmlentities(str_replace("$1", "'".$gmlid."'", $sql), ENT_QUOTES, "UTF-8")."</p>";} 
    106 } 
    107  
     108        if ($dbg > 2) {echo "\n<p class='err'>SQL=<br>".htmlentities(str_replace("$1", "'".$gmlid."'", $sql), ENT_QUOTES, "UTF-8")."</p>";} 
     109} 
     110if ($dbg > 0) { 
     111        $zeianz=pg_num_rows($res); 
     112        if ($zeianz > 1){ 
     113                echo "\n<p class='err'>Die Abfrage liefert mehr als ein (".$zeianz.") Lage-Objekt!</p>"; 
     114                if ($dbg > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities(str_replace("$1","'".$gmlid."'",$sql), ENT_QUOTES, "UTF-8")."</p>";} 
     115        } 
     116} 
    108117if ($row = pg_fetch_assoc($res)) { 
    109118        $strgml=$row["strgml"]; // gml_id des Katalogeintrag Straße 
     
    118127        $lage=$row["lage"]; // Strassenschluessel 
    119128        $snam=$row["snam"]; //Strassennamen 
    120 //      $kennz=$land."-".$regbez."-".$kreis.  ... 
     129//      $kennz=$land."-".$regbez."-".$kreis. .. 
    121130        $kennz=$gem."-".$lage."-"; // ToDo: Kompatibel machen als Eingabe in Navigation/Adresse  
    122          
     131 
    123132        switch ($ltyp) { 
    124133                case "m": // "Mit HsNr" 
     
    155164} else { 
    156165        echo "\n<p class='err'>Fehler! Kein Treffer fuer Lagebezeichnung mit gml_id='".$gmlid."'</p>"; 
    157         if ($debug > 2) { 
     166        if ($dbg > 2) { 
    158167                echo "\n<p class='err'>SQL=<br>".htmlentities(str_replace("$1", "'".$gmlid."'", $sql), ENT_QUOTES, "UTF-8")."</p>"; 
    159168        } 
     
    260269        } 
    261270 
    262         $sql="SELECT g.gemarkungsnummer, g.bezeichnung, f.gml_id, f.flurnummer, f.zaehler, f.nenner, f.amtlicheflaeche  
    263         FROM ax_flurstueck f LEFT JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer  
    264         WHERE $1 = ANY(f.".$bezart.") AND f.endet IS NULL AND g.endet IS NULL  
     271        $sql ="SELECT g.gemarkungsnummer, g.bezeichnung, f.gml_id, f.flurnummer, f.zaehler, f.nenner, f.amtlicheflaeche  
     272        FROM ax_flurstueck f LEFT JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer ".UnqKatAmt("f","g") 
     273        ."WHERE $1 = ANY(f.".$bezart.") AND f.endet IS NULL AND g.endet IS NULL  
    265274        ORDER BY f.gemarkungsnummer, f.flurnummer, f.zaehler, f.nenner;"; 
    266275 
     
    270279        if (!$resf) { 
    271280                echo "\n<p class='err'>Fehler bei Flurst&uuml;ck.</p>"; 
    272                 if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".htmlentities(str_replace("$1", "'".$gmlid."'", $sql), ENT_QUOTES, "UTF-8")."</p>";}    
     281                if ($dbg > 2) {echo "\n<p class='err'>SQL=<br>".htmlentities(str_replace("$1", "'".$gmlid."'", $sql), ENT_QUOTES, "UTF-8")."</p>";}      
    273282        } 
    274283        echo "\n<table class='fs'>" 
     
    282291        $j=0; 
    283292        $zpaar=false; 
     293        $gwgmkg=""; // Gruppenwechsel 
     294        $gwflur=""; 
    284295        while($rowf = pg_fetch_assoc($resf)) { 
     296                $gmkg=$rowf["bezeichnung"]; 
    285297                $flur=str_pad($rowf["flurnummer"], 3, "0", STR_PAD_LEFT); 
    286298                $fskenn=$rowf["zaehler"]; // Bruchnummer 
     
    294306                        ."\n\t<td>"; 
    295307                        if ($showkey) {echo "<span class='key'>".$rowf["gemarkungsnummer"]."</span> ";} 
    296                         echo $rowf["bezeichnung"]."</td>" 
    297                         ."\n\t<td>".$flur."</td>" 
    298                         ."\n\t<td class='fsnr'><span class='wichtig'>".$fskenn."</span></td>" 
     308                        if ($gwgmkg != $gmkg) { 
     309                                echo "<b>".$gmkg."</b></td>"; 
     310                                $gwgmkg=$gmkg; 
     311                                $gwflur=""; 
     312                        } else { 
     313                                echo $gmkg."</td>"; 
     314                        } 
     315                        if ($gwflur != $flur) { 
     316                                echo "\n\t<td><b>".$flur."</b></td>"; 
     317                                $gwflur=$flur; 
     318                        } else { 
     319                                echo "\n\t<td>".$flur."</td>"; 
     320                        } 
     321                        echo "\n\t<td class='fsnr'><span class='wichtig'>".$fskenn."</span></td>" 
    299322                        ."\n\t<td class='fla'>".$flae."</td>" 
    300323                        ."\n\t<td>\n\t\t<p class='nwlink noprint'>" 
     
    333356                        if (!$res) { 
    334357                                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 
     358                                if ($dbg > 2) {echo "\n<p class='err'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."</p>";} // 7 $-Parameter 
    336359                        } 
    337360                        $neb=0; 
     
    369392                        if (!$res) { 
    370393                                echo "\n<p class='err'>Fehler bei Nebengeb&auml;ude.</p>"; 
    371                                 if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."</p>";} // 7 $-Parameter              
     394                                if ($dbg > 2) {echo "\n<p class='err'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."</p>";} // 7 $-Parameter                
    372395                        } 
    373396                        $neb=0; 
     
    405428        if (!$res) { 
    406429                echo "\n<p class='err'>Fehler bei Geb&auml;ude.</p>"; 
    407                 if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".htmlentities(str_replace("$1", "'".$gmlid."'", $sql), ENT_QUOTES, "UTF-8")."</p>";} 
     430                if ($dbg > 2) {echo "\n<p class='err'>SQL=<br>".htmlentities(str_replace("$1", "'".$gmlid."'", $sql), ENT_QUOTES, "UTF-8")."</p>";} 
    408431        } 
    409432        echo "\n<table class='geb'>" 
     
    445468        echo "\n</table>"; 
    446469} 
     470 
     471echo "<div class='buttonbereich noprint'>\n<hr>" 
     472        ."\n\t<a title='zur&uuml;ck' href='javascript:history.back()'><img src='ico/zurueck.png' width='16' height='16' alt='zur&uuml;ck'></a>&nbsp;"; 
     473if ($PrntBtn==true){echo "\n\t<a title='Drucken' href='javascript:window.print()'><img src='ico/print.png' width='16' height='16' alt='Drucken'></a>&nbsp;";} 
     474echo "\n</div>"; 
     475 
     476footer($gmlid, selbstverlinkung()."?", "&amp;ltyp=".$ltyp); 
    447477?> 
    448  
    449 <div class='buttonbereich noprint'> 
    450         <hr> 
    451         <a title="zur&uuml;ck" href='javascript:history.back()'><img src="ico/zurueck.png" width="16" height="16" alt="zur&uuml;ck"></a>&nbsp; 
    452         <a title="Drucken" href='javascript:window.print()'><img src="ico/print.png" width="16" height="16" alt="Drucken"></a>&nbsp; 
    453 </div> 
    454  
    455 <?php footer($gmlid, selbstverlinkung()."?", "&amp;ltyp=".$ltyp); ?> 
    456478 
    457479</body> 
  • trunk/info/info/alkisn/alkisnamstruk.php

    r422 r425  
    66 
    77        Version: 
    8         2016-02-24 Version fuer norGIS-ALKIS-Import 
     8        2016-02-24 Version fÃŒr norGIS-ALKIS-Import 
    99        ... 
    1010        2020-02-20 Authentifizierung ausgelagert in Function darf_ich() 
    1111        2020-12-03 function selbstverlinkung() statt $_SERVER['PHP_SELF'] 
    1212        2020-12-15 Input-Validation und Strict Comparisation (===) 
     13        2021-12-09 Neue Parameter: $katAmtMix (Kataster-Amt-Mix), $PrntBtn (Drucken-SchaltflÀche). Gruppenwechsel Bezirk. 
    1314*/ 
    1415ini_set("session.cookie_httponly", 1); 
     
    5354<?php 
    5455$erlaubnis = darf_ich(); if ($erlaubnis === 0) { die('<p class="stop1">Abbruch</p></body>'); } 
     56$dbg=$debug; // CONF in Arbeits-Variable 
    5557 
    5658// Mit URL-Parameter "&nodebug=j" kann man die Entwicklungsumgebung (in Conf definiert) ausschalten. 
    57 // Manuell an die URL anfÃŒgen, wirkt nur temporÀr und wird nicht in Links weiter gereicht. 
    58 if ($nodebug === "j") {$debug=0;}  
     59// Wirkt temporÀr und wird nicht in Links weiter gereicht. 
     60if ($nodebug === "j") {$dbg=0;}  
    5961 
    6062echo "<p class='balken nakennz'>ALKIS Name id=".$gmlid."&nbsp;</p>\n" // Balken 
     
    7375if (!$res) { 
    7476        echo "\n<p class='err'>Fehler bei Zugriff auf Namensnummer</p>"; 
    75         if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities(str_replace("$1", "'".$gmlid."'", $sql), ENT_QUOTES, "UTF-8")."</p>";} 
     77        if ($dbg > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities(str_replace("$1", "'".$gmlid."'", $sql), ENT_QUOTES, "UTF-8")."</p>";} 
     78} 
     79if ($dbg > 0) { 
     80        $zeianz=pg_num_rows($res); 
     81        if ($zeianz > 1){ 
     82                echo "\n<p class='err'>Die Abfrage liefert mehr als eine Person!</p>"; 
     83                if ($dbg > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities(str_replace("$1","'".$gmlid."'",$sql), ENT_QUOTES, "UTF-8")."</p>";} 
     84        } 
    7685} 
    7786if ($row = pg_fetch_assoc($res)) { 
     
    111120        if (!$resa) { 
    112121                echo "\n<p class='err'>Fehler bei Adressen</p>"; 
    113                 if ($debug > 2) {echo "\n<p class='err'>SQL=<br>". str_replace("$1", "'".$gmlid."'", $sqla)."</p>";} 
     122                if ($dbg > 2) {echo "\n<p class='err'>SQL=<br>". str_replace("$1", "'".$gmlid."'", $sqla)."</p>";} 
    114123        } 
    115124 
     
    130139                        echo "<table>\n"; 
    131140                                if ($multiadress === "j" OR $showkey) { 
    132                                         if ($debug > 0) { // nur Entw.: Sortierung gml_id vs. beginnt? 
     141                                        if ($dbg > 0) { // nur Entw.: Sortierung gml_id vs. beginnt? 
    133142                                                echo "\t<tr><td class='dbg'>gml_id:</td><td class='dbg'>".$rowa["gml_id"]."</td></tr>\n"; 
    134143                                        } 
     
    176185        ."FROM ax_person p JOIN ax_namensnummer n ON p.gml_id=n.benennt " 
    177186        ."JOIN ax_buchungsblatt g ON g.gml_id=n.istbestandteilvon " 
    178         ."LEFT JOIN ax_buchungsblattbezirk b ON g.land=b.land AND g.bezirk=b.bezirk " 
     187        ."LEFT JOIN ax_buchungsblattbezirk b ON g.land=b.land AND g.bezirk=b.bezirk ".UnqKatAmt("g","b") 
    179188        ."LEFT JOIN ax_blattart_buchungsblatt wb ON g.blattart = wb.wert " 
    180189        ."WHERE p.gml_id= $1 AND p.endet IS NULL AND n.endet IS NULL AND b.endet IS NULL " 
     
    187196        if (!$resg) { 
    188197                echo "\n<p class='err'>Fehler bei Grundbuch</p>"; 
    189                 if ($debug > 2) { 
     198                if ($dbg > 2) { 
    190199                        echo "\n<p class='err'>SQL=<br>".htmlentities(str_replace("$1", "'".$gmlid."'", $sqlg ), ENT_QUOTES, "UTF-8")."</p>"; 
    191200                } 
     
    203212        $i=0; 
    204213        $zpaar=false; 
     214        $gwbeznam=''; 
    205215        while($rowg = pg_fetch_assoc($resg)) { 
    206216                $gmln=$rowg["gml_n"]; 
     
    211221                $blattart=$rowg["blattartv"]; // Value 
    212222                if ($zpaar) {$trclass='paa';} else {$trclass='unp';} 
     223                $beznam=$rowg["beznam"]; 
    213224                $zpaar=!$zpaar; 
    214225                echo "\n<tr class='".$trclass."'>" 
    215226                        ."\n\t<td>"; // GB-Bezirk <td class='gbl'> 
    216227                                if ($showkey) {echo "<span class='key'>".$rowg["bezirk"]."</span> ";} 
    217                                 echo $rowg["beznam"] 
    218                         ."</td>"; 
     228                                if ($gwbeznam != $beznam){ 
     229                                        echo "<b>".$beznam."</b>"; 
     230                                        $gwbeznam=$beznam; 
     231                                } else { 
     232                                        echo $beznam; 
     233                                } 
     234                        echo "</td>"; 
    219235 
    220236                        echo "\n\t<td>"; // Blattart 
     
    259275        if ($i === 0) {echo "\n<p class='err'>Kein Grundbuch.</p>";} 
    260276} else { 
    261         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"; 
    262 } 
     277        echo "\n\t<p class='err'>Fehler! Kein Treffer f&uuml;r Person".$gmlid."</p>\n"; 
     278} 
     279pg_free_result($res); 
     280 
     281echo "\n<div class='buttonbereich noprint'>\n<hr>" 
     282        ."\n\t<a title='zur&uuml;ck' href='javascript:history.back()'><img src='ico/zurueck.png' width='16' height='16' alt='zur&uuml;ck'></a>&nbsp;"; 
     283if ($PrntBtn==true){echo "\n\t<a title='Drucken' href='javascript:window.print()'><img src='ico/print.png' width='16' height='16' alt='Drucken'></a>&nbsp;";} 
     284echo "\n\t<a title='Export als CSV' href='javascript:ALKISexport()'><img src='ico/download.png' width='16' height='16' alt='Export'></a>&nbsp;" 
     285."\n</div>"; 
     286 
     287footer($gmlid, selbstverlinkung()."?", ""); 
    263288?> 
    264  
    265 <div class='buttonbereich noprint'> 
    266 <hr> 
    267         <a title="zur&uuml;ck" href='javascript:history.back()'><img src="ico/zurueck.png" width="16" height="16" alt="zur&uuml;ck"></a>&nbsp; 
    268         <a title="Drucken" href='javascript:window.print()'><img src="ico/print.png" width="16" height="16" alt="Drucken"></a>&nbsp; 
    269         <a title="Export als CSV" href='javascript:ALKISexport()'><img src="ico/download.png" width="16" height="16" alt="Export"></a>&nbsp; 
    270 </div> 
    271  
    272 <?php footer($gmlid, selbstverlinkung()."?", ""); ?> 
    273289 
    274290</body> 
  • trunk/info/info/alkisn/alkisstrasse.php

    r422 r425  
    33 
    44        ALKIS-Buchauskunft, Kommunales Rechenzentrum Minden-Ravensberg/Lippe (Lemgo). 
    5         Alle FlurstÃŒcke an einer Strasse anzeigen, egal ob "mit" oder "ohne" Hausnummer 
     5        Alle FlurstÃŒcke an einer Straße anzeigen, egal ob "mit" oder "ohne" Hausnummer 
    66        Parameter: "gml_id" aus der Tabelle "ax_lagebezeichnungkatalogeintrag" 
    77 
    88        Version: 
    9         2016-02-24 Version fuer norGIS-ALKIS-Import 
     9        2016-02-24 Version fÃŒr norGIS-ALKIS-Import 
    1010        ... 
    1111        2020-02-20 Authentifizierung ausgelagert in Function darf_ich() 
    1212        2020-12-15 Input-Validation und Strict Comparisation (===) 
     13        2021-12-09 Neue Parameter: $katAmtMix (Kataster-Amt-Mix), $PrntBtn (Drucken-SchaltflÀche) 
    1314*/ 
    1415ini_set("session.cookie_httponly", 1); 
     
    5253<?php 
    5354$erlaubnis = darf_ich(); if ($erlaubnis === 0) { die('<p class="stop1">Abbruch</p></body>'); } 
     55$dbg=$debug; // CONF in Arbeits-Variable 
    5456 
    5557// Mit URL-Parameter "&nodebug=j" kann man die Entwicklungsumgebung (in Conf definiert) ausschalten. 
    56 // Manuell an die URL anfÃŒgen, wirkt nur temporÀr und wird nicht in Links weiter gereicht. 
    57 if ($nodebug === "j") {$debug=0;}  
     58// Wirkt temporÀr und wird nicht in Links weiter gereicht. 
     59if ($nodebug === "j") {$dbg=0;}  
    5860 
    5961$con = pg_connect($dbconn." options='--application_name=ALKIS-Auskunft_alkisstrasse.php'"); 
     
    6365b.bezeichnung AS bnam, r.bezeichnung AS rnam, k.bezeichnung AS knam, g.bezeichnung AS gnam, o.gml_id AS ogml  
    6466FROM ax_lagebezeichnungkatalogeintrag s  
    65 JOIN ax_bundesland b ON s.land=b.land  
    66 JOIN ax_regierungsbezirk r ON s.land=r.land AND s.regierungsbezirk=r.regierungsbezirk  
    67 JOIN ax_kreisregion k ON s.land=k.land AND s.regierungsbezirk=k.regierungsbezirk AND s.kreis=k.kreis  
    68 JOIN ax_gemeinde g ON s.land=g.land AND s.regierungsbezirk=g.regierungsbezirk AND s.kreis=g.kreis AND s.gemeinde=g.gemeinde  
    69 LEFT JOIN ax_lagebezeichnungohnehausnummer o ON s.land=o.land AND s.regierungsbezirk=o.regierungsbezirk AND s.kreis=o.kreis AND s.gemeinde=o.gemeinde AND s.lage=o.lage  
     67JOIN ax_bundesland b ON s.land=b.land ".UnqKatAmt("s","b") 
     68."JOIN ax_regierungsbezirk r ON s.land=r.land AND s.regierungsbezirk=r.regierungsbezirk ".UnqKatAmt("s","r") 
     69."JOIN ax_kreisregion k ON s.land=k.land AND s.regierungsbezirk=k.regierungsbezirk AND s.kreis=k.kreis ".UnqKatAmt("s","k") 
     70."JOIN ax_gemeinde g ON s.land=g.land AND s.regierungsbezirk=g.regierungsbezirk AND s.kreis=g.kreis AND s.gemeinde=g.gemeinde ".UnqKatAmt("s","g") 
     71."LEFT JOIN ax_lagebezeichnungohnehausnummer o ON s.land=o.land AND s.regierungsbezirk=o.regierungsbezirk AND s.kreis=o.kreis AND s.gemeinde=o.gemeinde AND s.lage=o.lage  
    7072WHERE s.gml_id= $1 AND s.endet IS NULL AND b.endet IS NULL AND r.endet IS NULL AND k.endet IS NULL AND g.endet IS NULL AND o.endet IS NULL ;";  
    7173 
     
    7577if (!$res) { 
    7678        echo "\n<p class='err'>Fehler bei Lagebezeichnungskatalogeintrag.</p>"; 
    77         if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".htmlentities(str_replace("$1", "'".$gmlid."'", $sql), ENT_QUOTES, "UTF-8")."</p>";} 
     79        if ($dbg > 2) {echo "\n<p class='err'>SQL=<br>".htmlentities(str_replace("$1", "'".$gmlid."'", $sql), ENT_QUOTES, "UTF-8")."</p>";} 
     80} 
     81if ($dbg > 0) { 
     82        $zeianz=pg_num_rows($res); 
     83        if ($zeianz > 1){ 
     84                echo "\n<p class='err'>Die Abfrage liefert mehr als ein (".$zeianz.") Stra&szlig;en-Objekt!</p>"; 
     85                if ($dbg > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities(str_replace("$1","'".$gmlid."'",$sql), ENT_QUOTES, "UTF-8")."</p>";} 
     86        } 
    7887} 
    7988if ($row = pg_fetch_assoc($res)) { 
     
    133142echo "\n\t</td>\n</tr>\n</table>"; 
    134143pg_free_result($res); 
    135 // Ende Seitenkopf 
    136  
    137 // F L U R S T U E C K E 
     144 
     145// F L U R S T Ü C K E 
    138146echo "\n\n<h3 id='fs'><img src='ico/Flurstueck.png' width='16' height='16' alt=''> Flurst&uuml;cke</h3>" 
    139147."\n<p>Zusammenfassung von 'Lage mit Hausnummer' und 'Lage ohne Hausnummer' an dieser Straße</p>"; 
     
    142150// ax_Flurstueck >zeigtAuf> ax_LagebezeichnungOhneHausnummer > = s = Strasse 
    143151// Suchkriterium: gml_id aus Katalog 
    144 $sql="SELECT fh.gemarkungsnummer, gh.bezeichnung, fh.gml_id, fh.flurnummer, fh.zaehler, fh.nenner, fh.amtlicheflaeche, lh.gml_id AS lgml, lh.hausnummer, 'm' AS ltyp 
     152$sql ="SELECT fh.gemarkungsnummer, gh.bezeichnung, fh.gml_id, fh.flurnummer, fh.zaehler, fh.nenner, fh.amtlicheflaeche, lh.gml_id AS lgml, lh.hausnummer, 'm' AS ltyp 
    145153 FROM ax_flurstueck fh  
    146154 JOIN ax_lagebezeichnungmithausnummer lh ON lh.gml_id=ANY(fh.weistAuf)  
    147  JOIN ax_gemarkung gh ON fh.land=gh.land AND fh.gemarkungsnummer=gh.gemarkungsnummer  
    148  JOIN ax_lagebezeichnungkatalogeintrag sh ON lh.land=sh.land AND lh.regierungsbezirk=sh.regierungsbezirk AND lh.kreis=sh.kreis AND lh.gemeinde=sh.gemeinde AND lh.lage=sh.lage  
     155 JOIN ax_gemarkung gh ON fh.land=gh.land AND fh.gemarkungsnummer=gh.gemarkungsnummer ".UnqKatAmt("fh","gh") 
     156."JOIN ax_lagebezeichnungkatalogeintrag sh ON lh.land=sh.land AND lh.regierungsbezirk=sh.regierungsbezirk AND lh.kreis=sh.kreis AND lh.gemeinde=sh.gemeinde AND lh.lage=sh.lage  
    149157 WHERE sh.gml_id = $1 AND fh.endet IS NULL AND lh.endet IS NULL AND gh.endet IS NULL AND sh.endet IS NULL 
    150158UNION SELECT fs.gemarkungsnummer, gs.bezeichnung, fs.gml_id, fs.flurnummer, fs.zaehler, fs.nenner, fs.amtlicheflaeche, ls.gml_id AS lgml, '' AS hausnummer, 'o' AS ltyp 
    151159 FROM ax_flurstueck fs  
    152160 JOIN ax_lagebezeichnungohnehausnummer ls ON ls.gml_id=ANY(fs.zeigtauf)  
    153  JOIN ax_gemarkung gs ON fs.land=gs.land AND fs.gemarkungsnummer=gs.gemarkungsnummer  
    154  JOIN ax_lagebezeichnungkatalogeintrag ss ON ls.land=ss.land AND ls.regierungsbezirk=ss.regierungsbezirk AND ls.kreis=ss.kreis AND ls.gemeinde=ss.gemeinde AND ls.lage=ss.lage  
     161 JOIN ax_gemarkung gs ON fs.land=gs.land AND fs.gemarkungsnummer=gs.gemarkungsnummer ".UnqKatAmt("fs","gs") 
     162."JOIN ax_lagebezeichnungkatalogeintrag ss ON ls.land=ss.land AND ls.regierungsbezirk=ss.regierungsbezirk AND ls.kreis=ss.kreis AND ls.gemeinde=ss.gemeinde AND ls.lage=ss.lage  
    155163 WHERE ss.gml_id = $1 AND fs.endet IS NULL AND ls.endet IS NULL AND gs.endet IS NULL AND ss.endet IS NULL 
    156164ORDER BY gemarkungsnummer, flurnummer, zaehler, nenner;"; 
     
    161169if (!$resf) { 
    162170        echo "\n<p class='err'>Fehler bei Flurst&uuml;ck.</p>"; 
    163         if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".htmlentities(str_replace("$1", "'".$gmlid."'", $sql), ENT_QUOTES, "UTF-8")."</p>";}    
     171        if ($dbg > 2) {echo "\n<p class='err'>SQL=<br>".htmlentities(str_replace("$1", "'".$gmlid."'", $sql), ENT_QUOTES, "UTF-8")."</p>";}      
    164172} 
    165173 
     
    176184$gwgmkg=""; // Gruppenwechsel 
    177185$gwflur=""; 
    178 $cnths=0; // Count Haus-Lagebezeichnung 
     186$cnths=0; // Count Haus-Lagebez. 
    179187 
    180188$zpaar=false; // Zeilen-Farbwechsel 
     
    233241} 
    234242pg_free_result($resf); 
     243 
     244echo "\n<div class='buttonbereich noprint'>\n<hr>" 
     245        ."\n\t<a title='zur&uuml;ck' href='javascript:history.back()'><img src='ico/zurueck.png' width='16' height='16' alt='zur&uuml;ck'></a>&nbsp;"; 
     246if ($PrntBtn==true){echo "\n\t<a title='Drucken' href='javascript:window.print()'><img src='ico/print.png' width='16' height='16' alt='Drucken'></a>&nbsp;";} 
     247echo "\n\t<a title='Export als CSV' href=\"javascript:ALKISexport('')\">alle<img src='ico/download.png' width='16' height='16' alt='Export'></a>&nbsp;" 
     248        ."\n\t<a title='CSV - nur Flurst&uuml;cke mit Hausnummer' href=\"javascript:ALKISexport('m')\">mit HsNr<img src='ico/download.png' width='16' height='16' alt='Export'></a>&nbsp;" 
     249        ."\n\t<a title='CSV - nur Flurst&uuml;cke ohne Hausnummer' href=\"javascript:ALKISexport('o')\">ohne<img src='ico/download.png' width='16' height='16' alt='Export'></a>&nbsp;" 
     250."\n</div>"; 
     251 
     252footer($gmlid, selbstverlinkung()."?", "");  
    235253?> 
    236  
    237 <div class='buttonbereich noprint'> 
    238 <hr> 
    239         <a title="zur&uuml;ck" href='javascript:history.back()'><img src="ico/zurueck.png" width="16" height="16" alt="zur&uuml;ck"></a>&nbsp; 
    240         <a title="Drucken" href='javascript:window.print()'><img src="ico/print.png" width="16" height="16" alt="Drucken"></a>&nbsp; 
    241         <a title="Export als CSV" href='javascript:ALKISexport("")'>alle<img src="ico/download.png" width="16" height="16" alt="Export"></a>&nbsp; 
    242         <a title="CSV - nur Flurst&uuml;cke mit Hausnummer" href='javascript:ALKISexport("m")'>mit HsNr<img src="ico/download.png" width="16" height="16" alt="Export"></a>&nbsp; 
    243         <a title="CSV - nur Flurst&uuml;cke ohne Hausnummer" href='javascript:ALKISexport("o")'>ohne<img src="ico/download.png" width="16" height="16" alt="Export"></a>&nbsp; 
    244 </div> 
    245  
    246 <?php footer($gmlid, selbstverlinkung()."?", ""); ?> 
    247254 
    248255</body> 
  • trunk/mapbender/conf/alkisnav_conf.php

    r400 r425  
    66        2016-08-17 GKZ in ALKIS-DB-Name 4stellig 
    77        2016-11-28 Gemeinsam genutzte Datenbanken ermöglichen (mehrere Gemeinden in Kreis-Datenbank) 
     8        2021-11-22 Parameter $katamtmix (Kataster-Amt-Mix) 
    89*/ 
    910 
     
    1112        $dbgkz = $gkz;                          // eine Datenbank je Mandant 
    1213        $dbhost = '10.0.___';   // Datenbank-Server aus Produktion 
     14 
     15        $katamtmix = false;     // Default. Sind Daten aus verschiedenen Katasteramts-Bezirken in der DB? 
    1316 
    1417        switch ($gkz) { // lokale und temporäre Besonderheiten je Mandant 
     
    2730                        $filtgem = '16';        // Gebiets-Filter kommen derzeit noch aus der Mapbender-Konfiguration 
    2831                        break; 
     32 
     33                case "418": 
     34                        $katamtmix = true;      // Katasteramt Mix 
     35                        break; 
     36 
    2937        } 
    3038 
  • trunk/mapbender/http/nav/alkisnav.css

    r356 r425  
    55        2014-02-06 kosmetische Überarbeitung 
    66        2015-12-10 Rahmen breiter, mehr HsNr je Zeile 
     7        2021-12-29 Abstand vor .hn 
    78*/ 
    8 body,p,a,.textfield,.sbutton    {font-family: Verdana, Arial, Helvetica, sans-serif;} 
     9body,p,a,.textfield,.sbutton {font-family: Verdana, Arial, Helvetica, sans-serif;} 
    910body {font-size: 11px; color: #000000; margin: 0px; border: 0px;} 
    1011p {font-size: 10px;} 
    11 p.hilfe         {font-size:  9px; text-align: right; color: gray; padding-right: 3px;} /* Programmier-Hilfsfelder */ 
    12 p.start         {font-size:  9px; color: gray; padding: 2px; margin: 2px; border: 0px;} 
     12p.hilfe {font-size:  9px; text-align: right; color: gray; padding-right: 3px;} /* Programmier-Hilfsfelder */ 
     13p.start {font-size:  9px; color: gray; padding: 2px; margin: 2px; border: 0px;} 
    1314p.nam {font-size: 10px; border: 1px solid navy; padding: 3px; margin: 0px; color: maroon;} 
    1415p.err {font-size: 11px; color: red;} /* Fehler -> Anwender */ 
    1516p.dbg {font-size: 10px; color: gray;} /* Debug -> Entwickler */ 
    16 p.ein, p.anz, p.blt     {font-size: 9px; text-align: right;} /* Einleitung, Anzahl am Ende, BlÀttern weitere ... */ 
    17 p.ein  {color: navy; font-weight: bold;} 
     17p.ein, p.anz, p.blt {font-size: 9px; text-align: right;} /* Einleitung, Anzahl am Ende, BlÀttern weitere ... */ 
     18p.ein {color: navy; font-weight: bold;} 
    1819p.anz, p.blt {color: purple;} 
     20p.hn {color: gray; margin-left: 28px; margin-top: 8px; margin-bottom: 2px;} /* Hist.-Nachf. Überschr. */ 
    1921 
    2022a {text-decoration: none;} 
    2123a:hover, a:active {color: red;} 
    2224a.hislnk {color: gray; font-style: italic; text-align: right; padding-left: 50px;} /* Link zur Historie */ 
    23 a.hsnro {color: gray; font-style: italic;} /* HsNr ohne Haus */ 
     25a.hsnro {color: gray; font-style: italic;} /* HsNr ohne Haus */ 
    2426a.blt {color: maroon; background-color: yellow;} /* Link weitere ... */ 
    2527 
     
    3739div.fs {color: navy; margin-left: 28px; margin-top: 0px;} /* Flurstueck */ 
    3840div.hi {color: gray; margin-left: 28px; margin-top: 0px;} /* Historie */ 
    39 div.hn, p.hn    {color: gray; margin-left: 28px; margin-top: 0px;} /* Historie-Nachfolger */ 
     41div.hn {color: gray; margin-left: 28px; margin-top: 0px;} /* Historie-Nachfolger */ 
    4042 
    4143div.stu {color: maroon; font-size: 13px;} /* Strasse - Ueberschrift */ 
  • trunk/mapbender/http/nav/alkisnav_adr.php

    r413 r425  
    88        2018-02-15 Strikte Input-Validation der Parameter 
    99        2018-11-12 Full-Schema 
     10        2021-11-24 Neue Var. $katamtmix  (Kataster-Amt-Mix). 
     11                   SchlÃŒsseltabellen sind mehrfach belegt. Dadurch doppelte Treffer bei der Suche. 
     12 
    1013ToDo: 
    1114        -       Gruppierung (mit Zeile) der Straßenliste nach Gemeinde 
     
    4750        $gfilter = 0; 
    4851} 
    49 // // http://skrzmaptest01.asp.krzwan.de/mapbender/nav/alkisnav_adr.php?gkz=210&gemeinde=004&epsg=25832&str_schl=0575800401798 
    5052if (isset($str_schl) ) { 
    5153        if (!preg_match('#^[0-9]{4,13}$#', $str_schl)) {die("Eingabefehler Stra&zlig;enschl&uuml;ssel");} 
     
    9092function suchStrName() { 
    9193        // Strassen nach Name(-nsanfang) 
    92         global $street, $scalestr, $str_schl, $gkz, $gemeinde, $epsg, $gfilter, $debug, $auskpath; 
     94        global $street, $scalestr, $str_schl, $gkz, $gemeinde, $epsg, $gfilter, $debug, $auskpath, $katamtmix; 
    9395        //if ($debug > 1) {echo "<p class='dbg'>function suchStrName()<p>";} // Ablauf-Verfolgung 
    9496 
    9597        $linelimit=120;  // -> in Conf? 
    96         $str_schl=""; // Loeschen vorh. Ergebnis 
     98        $str_schl=""; // Löschen vorh. Ergebnis 
    9799        preg_match("/^(\D+)(\d*)(\D*)/",$street,$matches); # 4 matches name/nr/zusatz  
    98100        //echo "match: 1='".$matches[1]."', 2='".$matches[2]."', 3='".$matches[3]."'"; 
     
    108110        $sql ="SELECT g.gemeinde, g.bezeichnung AS gemname, k.gml_id, k.bezeichnung, k.schluesselgesamt, k.lage " 
    109111        ."FROM ax_lagebezeichnungkatalogeintrag k " 
    110         ."JOIN ax_gemeinde g ON k.land=g.land AND k.regierungsbezirk=g.regierungsbezirk AND k.kreis=g.kreis AND k.gemeinde=g.gemeinde " 
    111         ."WHERE k.bezeichnung ILIKE $1 AND k.endet IS NULL AND g.endet IS NULL "; 
     112        ."JOIN ax_gemeinde g ON k.land=g.land AND k.regierungsbezirk=g.regierungsbezirk AND k.kreis=g.kreis AND k.gemeinde=g.gemeinde "; 
     113        if ($katamtmix){$sql.="AND substr(k.gml_id,1,6) = substr(g.gml_id,1,6) ";} 
     114        $sql.="WHERE k.bezeichnung ILIKE $1 AND k.endet IS NULL AND g.endet IS NULL "; 
    112115 
    113116        switch ($gfilter) { 
     
    143146                        $gwgem=$gemname; 
    144147                } 
    145                 $gkey=$row["schluesselgesamt"]; // Land-RegBez-Kreis-Gem-Strasse - fÃŒr weitere Suche 
     148                $gkey=$row["schluesselgesamt"]; // Land-RegBez-Kreis-Gem-Straße - fÃŒr weitere Suche 
    146149                $skey=$row["lage"]; // Nur Str.-schl. daraus 
    147150                $kgml=$row["gml_id"]; // ID von Katalog 
     
    164167} 
    165168 
    166 function suchStrKey() { // Strassen nach num. Schluessel 
    167         global $street, $scalestr, $str_schl, $gkz, $gemeinde, $epsg, $gfilter, $debug, $auskpath; 
     169function suchStrKey() { // Straßen nach num. SchlÃŒssel 
     170        global $street, $scalestr, $str_schl, $gkz, $gemeinde, $epsg, $gfilter, $debug, $auskpath, $katamtmix; 
    168171        //if ($debug > 1) {echo "<p class='dbg'>function suchStrKey()<p>";} // Ablauf-Verfolgung 
    169172        $linelimit=60; 
     
    174177                $match=str_pad($street, 5, "0", STR_PAD_LEFT); // "Wie eine Zahl" verarbeiten  
    175178        } 
     179 
    176180        $sql ="SELECT g.bezeichnung AS gemname, k.gml_id, k.bezeichnung, k.schluesselgesamt, k.lage " 
    177181        ."FROM ax_lagebezeichnungkatalogeintrag as k " 
    178         ."JOIN ax_gemeinde g ON k.land=g.land AND k.regierungsbezirk=g.regierungsbezirk AND k.kreis=g.kreis AND k.gemeinde=g.gemeinde " 
    179         ."WHERE k.lage LIKE $1 AND k.endet IS NULL AND g.endet IS NULL "; 
     182        ."JOIN ax_gemeinde g ON k.land=g.land AND k.regierungsbezirk=g.regierungsbezirk AND k.kreis=g.kreis AND k.gemeinde=g.gemeinde "; 
     183        if ($katamtmix){$sql.="AND substr(k.gml_id,1,6) = substr(g.gml_id,1,6) ";} 
     184        $sql.="WHERE k.lage LIKE $1 AND k.endet IS NULL AND g.endet IS NULL "; 
    180185        switch ($gfilter) { 
    181186                case 1: // Einzelwert 
     
    217222} 
    218223 
    219 function suchHausZurStr($showParent) { // Haeuser zu einer Strasse 
    220         global $str_schl, $gkz, $scalestr, $scalehs, $epsg, $gemeinde, $epsg, $gfilter, $debug, $auskpath; 
     224function suchHausZurStr($showParent) { // HÀuser zu einer Straße 
     225        global $str_schl, $gkz, $scalestr, $scalehs, $epsg, $gemeinde, $epsg, $gfilter, $debug, $auskpath, $katamtmix; 
    221226        //if ($debug > 1) {echo "<p class='dbg'>function suchHausZurStr()<p>";} // Ablauf-Verfolgung 
    222227 
    223228        // Head 
    224         // Strasse zum Strassenschluessel 
     229        // Straße zum StrassenschlÃŒssel 
    225230        $sql ="SELECT g.bezeichnung AS gemname, k.gml_id AS kgml, k.bezeichnung, k.land, k.regierungsbezirk, k.kreis, k.gemeinde, k.lage " 
    226231        ."FROM ax_lagebezeichnungkatalogeintrag as k " 
    227         ."JOIN ax_gemeinde g ON k.land=g.land AND k.regierungsbezirk=g.regierungsbezirk AND k.kreis=g.kreis AND k.gemeinde=g.gemeinde " 
    228         ."WHERE k.schluesselgesamt = $1 AND k.endet IS NULL AND g.endet IS NULL LIMIT 1";  
    229  
    230         $v=array($str_schl);    // Schluessel-Gesamt .. 
     232        ."JOIN ax_gemeinde g ON k.land=g.land AND k.regierungsbezirk=g.regierungsbezirk AND k.kreis=g.kreis AND k.gemeinde=g.gemeinde "; 
     233        if ($katamtmix){$sql.="AND substr(k.gml_id,1,6) = substr(g.gml_id,1,6) ";} 
     234        $sql.="WHERE k.schluesselgesamt = $1 AND k.endet IS NULL AND g.endet IS NULL LIMIT 1";  
     235 
     236        $v=array($str_schl);    // SchlÃŒssel-Gesamt .. 
    231237        $res=pg_prepare("", $sql); 
    232238        $res=pg_execute("", $v); 
     
    238244 
    239245        if($row = pg_fetch_array($res)) { // .. gefunden 
    240                 $kgml=$row["kgml"]; // ID aus Katalog 
     246                $kgml=$row["kgml"];     // ID aus Katalog 
    241247                $sname=$row["bezeichnung"]; 
    242248                $land =$row["land"];    // Einzel-Felder fÃŒr JOIN _lagebezeichnung_ 
     
    247253                $gemname=htmlentities($row["gemname"], ENT_QUOTES, "UTF-8"); 
    248254                if ($showParent) { 
    249                         // EINE Koordinate zur Strasse besorgen 
     255                        // EINE Koordinate zur Straße besorgen 
    250256                        // ax_Flurstueck >zeigtAuf> ax_LagebezeichnungOhneHausnummer 
    251257                        $sqlko ="SELECT "; 
     
    300306 
    301307                // Body 
    302                 // Haeuser zum Strassenschluessel 
     308                // HÀuser zum StraßenschlÃŒssel 
    303309                $sql="SELECT min(replace(h.hausnummer,' ','')) AS hsnr, "; 
    304310                if($epsg == "25832") { // Transform nicht notwendig 
     
    348354                        $cnt++; 
    349355                        $count++; 
    350                         if($count == 7) { // Max. Hausnummern je Zeile (Test: 3stellige HsNr mit Zusatz) 
     356                        if($count == 7) { // Max. HausNr je Zeile (Test: 3stellige HsNr mit Zusatz) 
    351357                                echo "\n</tr>"; 
    352358                                $count = 0; 
     
    363369        return; 
    364370} 
    365 // =========== 
     371 
    366372// Start hier! 
    367 // =========== 
    368373 
    369374// Validation: Eingabefeld aus Formular. 
    370 // Suchbegriff (Straßenname) oder StraßenschlÃŒssel. 
     375// Suchbegriff Straßenname oder StraßenschlÃŒssel. 
    371376// Hier formatierte Meldung und html-Foot. 
    372377if (isset($street) and $street != "" ) { 
     
    398403} 
    399404 
    400 // Nach Durchlaufen des PHP-Scriptes die zuletzt ausgefÃŒhrte Transaktion  
    401 //  im Kopf des Ergebnisrahmens anzeigen. 
     405// Nach Durchlaufen des PHP-Scriptes die zuletzt ausgefÃŒhrte Transaktion im Kopf des Ergebnisrahmens anzeigen. 
    402406// Dazu die im HTML-Header definierte Javascript-Function benutzen. 
    403407// Alternativ wird auch aus dem Javascript "positionieren Karte" dieser Titel gesetzt. 
  • trunk/mapbender/http/nav/alkisnav_eig.php

    r420 r425  
    1111        2018-11-12 Full-Schema 
    1212        2019-02-12 Sortierung FlurstÃŒcksnummer repariert 
     13        2021-12-01 Fehlerkorrektur "benennt". Neue Var. $katamtmix  (Kataster-Amt-Mix). 
     14                   SchlÃŒsseltabellen sind mehrfach belegt. Dadurch doppelte Treffer bei der Suche. 
     15                           Weitere Buchstaben fÃŒr Namen-Suche zugelassen. 
    1316*/ 
    1417 
     
    110113function personendaten() {  
    111114        // Adresse und Geburtsdatum der aktuellen Person ausgeben 
    112         global $gkz, $gemeinde, $epsg, $name, $person, $blattgml, $auskpath; // $debug 
     115        global $gkz, $gemeinde, $epsg, $name, $person, $blattgml, $auskpath; 
    113116        $sql ="SELECT p.nachnameoderfirma, p.vorname, to_char(cast(p.geburtsdatum AS date),'DD.MM.YYYY') AS geburtsdatum, p.namensbestandteil, " 
    114117        ."a.ort_post, a.postleitzahlpostzustellung AS plz, a.strasse, a.hausnummer " 
     
    162165        $linelimit=150; 
    163166        $arr = explode(",", $name); 
    164         $name0 = trim($arr[0]); // Nachname 
     167        $name0 = trim($arr[0]);         // Nachname 
    165168        if (count($arr) > 1) { 
    166169                $name1=trim($arr[1]);   // Vorname 
     
    245248// Alternativ wÃŒrde eine Hilfstabelle benötigt, in der im PostProcessing  
    246249// das GB-zu-Gemeinde-VerhÀltnis vorbereitet wird. 
    247         global $gkz, $gemeinde, $epsg, $name, $person, $blattgml, $debug, $bltbez, $bltblatt, $bltseite, $kennztyp, $zgbbez; 
     250        global $gkz, $gemeinde, $epsg, $name, $person, $blattgml, $debug, $bltbez, $bltblatt, $bltseite, $kennztyp, $zgbbez, $katamtmix; 
    248251        $linelimit=150; 
    249252 
     
    256259        $sql ="SELECT gb.gml_id AS gml_g, gb.buchungsblattnummermitbuchstabenerweiterung as blatt, b.bezirk, b.bezeichnung AS beznam " 
    257260        ."FROM ax_namensnummer n JOIN ax_buchungsblatt gb ON n.istbestandteilvon=gb.gml_id " 
    258         ."JOIN ax_buchungsblattbezirk b ON gb.land=b.land AND gb.bezirk=b.bezirk " 
    259         ."WHERE n.bennennt = $1 AND n.endet IS NULL AND gb.endet IS NULL AND b.endet IS NULL;"; 
     261        ."JOIN ax_buchungsblattbezirk b ON gb.land=b.land AND gb.bezirk=b.bezirk "; 
     262        if ($katamtmix){$sql.="AND substr(gb.gml_id,1,6) = substr(b.gml_id,1,6) ";} 
     263        $sql.="WHERE n.benennt = $1 AND n.endet IS NULL AND gb.endet IS NULL AND b.endet IS NULL "; 
    260264 
    261265        // Parameter $gbkennz, z.B. nach Klick auf Zeile "Bezirk" 
    262266        if ($kennztyp > 1) { // 2=Such Bezirk-Nummer, 3=Such Blatt, 4=Such Buchung BVNR 
    263                 #if ($debug > 0) {echo "<p class='dbg'>Filter Bezirk '".$zgbbez."'<p>";} 
     267                #if ($debug > 1) {echo "<p class='dbg'>Filter Bezirk '".$zgbbez."'<p>";} 
    264268                $sql.="AND b.bezirk='".$zgbbez."' "; 
    265269                $bezirkaktuell = true; 
     
    333337// Im zweiten Schritt wird gesucht nach Rechten einer Buchungstelle des durchsuchten Blattes an anderen 
    334338// Buchungstellen. 
    335         global $gkz, $gemeinde, $name, $person, $blattgml, $epsg, $gfilter, $debug; 
     339        global $gkz, $gemeinde, $name, $person, $blattgml, $epsg, $gfilter, $debug, $katamtmix; 
    336340        if($backlink) { // Erneuter Ansatz bei Person oder GB möglich. 
    337341 
     
    347351                // Grundbuch-Daten ermitteln 
    348352                $sql ="SELECT gb.gml_id AS gml_g, gb.buchungsblattnummermitbuchstabenerweiterung as blatt, b.bezirk, b.bezeichnung AS beznam " 
    349                 ."FROM ax_buchungsblatt gb JOIN ax_buchungsblattbezirk b ON gb.land=b.land AND gb.bezirk=b.bezirk " 
    350                 ."WHERE gb.gml_id= $1 AND gb.endet IS NULL and b.endet IS NULL LIMIT 1 ;"; 
     353                ."FROM ax_buchungsblatt gb JOIN ax_buchungsblattbezirk b ON gb.land=b.land AND gb.bezirk=b.bezirk "; 
     354                if ($katamtmix){$sql.="AND substr(gb.gml_id,1,6) = substr(b.gml_id,1,6) ";} 
     355                $sql.="WHERE gb.gml_id= $1 AND gb.endet IS NULL and b.endet IS NULL LIMIT 1 ;"; 
    351356                $v=array($blattgml); 
    352357                $res=pg_prepare("", $sql); 
     
    376381// weil "ungefiltert" in "2+3" zu lange Listen entstehen wÃŒrden, die durchblÀttert werden mÃŒssen.  
    377382 
    378         global $gkz, $gemeinde, $epsg, $name, $person, $blattgml, $gfilter, $debug, $bltbez, $bltblatt, $bltbvnr, $bltseite, $bltrecht, $kennztyp, $zgbbez; 
     383        global $gkz, $gemeinde, $epsg, $name, $person, $blattgml, $gfilter, $debug, $bltbez, $bltblatt, $bltbvnr, $bltseite, $bltrecht, $kennztyp, $zgbbez, $katamtmix; 
    379384        $linelimit=80; // als Limit "Anzahl FlurstÃŒcke" in den beiden folgenden Abfragen 
    380385        // darf nun etwas knapper sein, weil man jetzt blÀttern kann 
     
    406411        $sql1.="FROM ax_namensnummer nn " 
    407412        ."JOIN ax_buchungsblatt gb ON gb.gml_id=nn.istbestandteilvon " 
    408         ."JOIN ax_buchungsblattbezirk b ON gb.land=b.land AND gb.bezirk=b.bezirk " 
    409         ."JOIN ax_buchungsstelle s1 ON gb.gml_id=s1.istbestandteilvon "; 
     413        ."JOIN ax_buchungsblattbezirk b ON gb.land=b.land AND gb.bezirk=b.bezirk "; 
     414        if ($katamtmix){$sql.="AND substr(gb.gml_id,1,6) = substr(b.gml_id,1,6) ";} 
     415        $sql1.="JOIN ax_buchungsstelle s1 ON gb.gml_id=s1.istbestandteilvon "; 
    410416 
    411417        // Baustein A: Auswahl 1 oder 2 
     
    621627} 
    622628 
    623 // =========== 
    624629// Start hier! 
    625 // =========== 
     630 
    626631// Parameter:   
    627632// 1. name   = Suche nach Namensanfang oder -bestandteil. 
     
    633638// Hier formatierte Meldung und html-Foot. 
    634639if (isset($name) and $name != "" ) {  
    635         if (!preg_match('#^[a-zA-Z0-9ÀöÌÄÖÜß*,. \-&/]{1,50}$#', $name)) { 
     640        if (!preg_match('#^[a-zA-Z0-9ÀöÌÄÖÜßşŜšŠ*,. \-&/]{1,50}$#', $name)) { 
    636641                echo "<p class='err'>Eingabe unzul&auml;ssig!</p>"; 
    637642        //      if ($debug > 1) {echo "<p class='err'>Name='".$name."' LÀnge='".strlen($name)."</p>";} 
  • trunk/mapbender/http/nav/alkisnav_fkt.php

    r420 r425  
    1111        2018-11-09 Full-Schema 
    1212        2019-02-12 Sortierung FlurstÃŒcksnummer repariert 
     13        2021-11-23 Neue Var. $katamtmix  (Kataster-Amt-Mix). 
     14                   SchlÃŒsseltabellen sind mehrfach belegt. Dadurch doppelte Treffer bei der Suche. 
    1315*/ 
    1416 
     
    316318        // Zu einem Grundbuch-Blatt (identifiziert ÃŒber seine gml_id) suchen der  
    317319        // Buchungen (Gruppenwechsel) und FlurstÃŒcke (Links) 
    318         global $gemeinde, $blattgml, $epsg, $gfilter, $debug; 
     320        global $gemeinde, $blattgml, $epsg, $gfilter, $debug, $katamtmix; 
    319321 
    320322        // SQL-Bausteine 
     
    337339 
    338340        // hinten gleich 
    339         $sql2="JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer " 
    340                 ."WHERE s1.istbestandteilvon = $1 AND f.endet IS NULL AND s1.endet IS NULL "; 
     341        $sql2 ="JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer "; 
     342        if ($katamtmix){$sql2.="AND substr(f.gml_id, 1, 6) = substr(g.gml_id, 1, 6) ";} 
     343        $sql2.="WHERE s1.istbestandteilvon = $1 AND f.endet IS NULL AND s1.endet IS NULL "; 
    341344 
    342345        switch ($gfilter) { 
  • trunk/mapbender/http/nav/alkisnav_fls.php

    r420 r425  
    1010        2018-11-12 Full-Schema 
    1111        2019-02-12 Sortierung FlurstÃŒcksnummer wieder hergestellt (kaputt gegangen bei Umstellung Full-Schema) 
     12        2021-11-24 fÃŒhrende '0' Trimmen bei Flur, ZÀhler, Nenner in der Zerlegung 
     13        2021-12-29 Sortierung der Nachfolger eines hist. FS 
     14         
     15ToDo: 
     16        Vermeiden der Tabellen "gema_shl" und "gem_shl". Das sind NorBIT/ALB-Relikte, die irgendwann entfallen werden. 
     17        Besser primÀre ax_*-Tabellen verwenden. 
    1218*/ 
    1319 
     
    129135 
    130136        if (count($arr) > 1) { 
    131                 $zflur=h_hinten($arr[1]); 
     137                $zflur=ltrim(h_hinten($arr[1]), '0'); 
    132138                if (count($arr) > 2) { 
    133139                        $zfsnr=trim($arr[2]); 
     
    172178        } else { 
    173179                $zn=explode("/", $zfsnr, 2); // Bruchnummer? 
    174                 $zzaehler=h_hinten(trim($zn[0])); 
    175                 if (count($zn) > 1) {$znenner=h_hinten(trim($zn[1]));} else {$znenner="";} 
     180                $zzaehler=ltrim(h_hinten(trim($zn[0])), '0'); 
     181                if (count($zn) > 1) { 
     182                        $znenner=ltrim(h_hinten(trim($zn[1])), '0'); 
     183                } else { 
     184                        $znenner=""; 
     185                } 
     186        //      if ($debug > 1) {echo "<p class='dbg'>Gemkg: '".$gemkg."' Flur: '".$zflur."' Zaehler: '".$zzaehler."' Nenner: '".$znenner."'</p>";} 
    176187                if ( ! is_ne_zahl($zzaehler)) { 
    177188                        echo "<p class='err'>FlurstÃŒcksnummer '".$zzaehler."' ist nicht numerisch</p>"; 
     
    283294                echo "\n\t<a title='Nachweis' href='javascript:imFenster(\"".$auskpath.$auskprog.".php?gkz=".$gkz."&amp;gmlid=".$gml."\")'>"; 
    284295                        echo "\n\t\t<img class='nwlink' src='ico/".$ico."' width='16' height='16' alt='FS' title='Nachweis'>"; 
    285                 echo "\n\t</a> ";                
    286                 echo "Flst. <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;fskennz=".$fs.$hisparm."'>".$fskenn."</a>";                                      
     296                echo "\n\t</a>&nbsp;";           
     297                echo "hist. Flst. <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;fskennz=".$fs.$hisparm."'>".$fskenn."</a>";                                        
    287298        echo "\n</div>"; 
    288299        return; 
     
    418429                echo "\n<p class='anz'>Keine Gemarkung.</p>"; 
    419430                if ($debug > 1) { 
    420 /* 
    421                         // Nach Umstellung auf NorGIS-Struktur muss im Mapbender die Gemeinde 3stellig konfiguriert werden 
     431/*                      // Nach Umstellung auf NorGIS-Struktur muss im Mapbender die Gemeinde 3stellig konfiguriert werden 
    422432                        if (strlen($gemeinde) < 3) { 
    423433                                echo "<p class='err'>URL-Parameter &gemeinde=nnn im Mapbender gazetteer_alkis.SRC muss 3stellig sein!<br>Ist aber '".$gemeinde."'.</p>"; 
    424                         } 
    425 */ 
     434                        } */ 
    426435                        if ($debug > 2) {echo "<p class='dbg'>SQL=<br>".$sql."<br>$1 = ".$match."</p>";} 
    427436                } 
     
    473482        if ($AuchGemkZeile) { // Kopf davor ausgeben 
    474483                if (! gg_head($zgemkg6, true)) { 
    475                         if ($debug >= 1) {echo "\n<p class='dbg'>Gem.-Gemkg.-Kopf abgebrochen</p>";}     
     484                        if ($debug > 0) {echo "\n<p class='dbg'>Gem.-Gemkg.-Kopf abgebrochen</p>";}      
    476485                        return false; 
    477486                }  
     
    479488 
    480489        // Body 
     490        // ++ ToDo: (optional) nur Fluren ausgeben, in denen auch FlurstÃŒcke enthalten sind. 
    481491        $sql ="SELECT gemarkungsteilflur AS flur FROM ax_gemarkungsteilflur f WHERE gemarkung= $1 ORDER BY gemarkungsteilflur LIMIT $2 ;"; 
    482492        $v=array($zgemkg4, $linelimit); 
     
    621631        } 
    622632        $sql.="FROM ax_flurstueck f WHERE f.gemarkungsnummer= $1 AND f.flurnummer= $2 AND f.zaehler= $3 "; 
    623  
    624633        If ($znenner != "") { 
    625                 $suchnenn = ltrim($znenner, '0'); 
    626                 If ($suchnenn != "") { 
    627                         $sql.="AND f.nenner='".$suchnenn."' "; 
    628                 } 
     634                $sql.="AND f.nenner='".$znenner."' "; 
    629635        } 
    630636        $sql.="AND endet IS NULL ORDER BY cast(f.zaehler AS integer), cast(f.nenner AS integer);"; 
     
    732738                        $nasql ="SELECT 'a' AS ftyp, gml_id, gemarkungsnummer, flurnummer, zaehler, nenner FROM ax_flurstueck ".$nawhcl 
    733739                        ."UNION SELECT 'h' AS ftyp, gml_id, gemarkungsnummer, flurnummer, zaehler, nenner FROM ax_historischesflurstueck ".$nawhcl 
    734                         ."UNION SELECT 'o' AS ftyp, gml_id, gemarkungsnummer, flurnummer, zaehler, nenner FROM ax_historischesflurstueckohneraumbezug ".$nawhcl; 
     740                        ."UNION SELECT 'o' AS ftyp, gml_id, gemarkungsnummer, flurnummer, zaehler, nenner FROM ax_historischesflurstueckohneraumbezug ".$nawhcl 
     741                        ."ORDER BY gemarkungsnummer, flurnummer, zaehler, nenner"; 
    735742 
    736743                        $v=array(); 
     
    773780} 
    774781 
    775 // =========== 
    776782// Start hier! 
    777 // =========== 
    778 if ($debug >= 1) {echo "\n<p class='dbg'>gemeinde='".$gemeinde."'. gfilter='".$gfilter."'</p>";} 
     783 
     784// if ($debug >= 1) {echo "\n<p class='dbg'>gemeinde='".$gemeinde."'. gfilter='".$gfilter."'</p>";} 
    779785 
    780786// Validation: Eingabefeld aus Formular. 
     
    800806} else { // Die Formular-Eingabe interpretieren (kann auch ein Link sein) 
    801807        $retzer=ZerlegungFsKennz($fskennz); 
    802         if ($debug >= 1) {echo "\n<p class='dbg'>Return Zerlegung: ".$retzer."</p>";}    
     808        if ($debug > 1) {echo "\n<p class='dbg'>Return Zerlegung: ".$retzer."</p>";}     
    803809        switch ($retzer) { // Returnwert der Zerlegung des FS-Kennz. 
    804810        case 0: // leere Eingabe 
  • trunk/mapbender/http/nav/alkisnav_grd.php

    r420 r425  
    1010        2018-11-12 Full-Schema 
    1111        2019-02-12 Sortierung FlurstÃŒcksnummer repariert 
     12        2021-11-24 Neue Var. $katamtmix  (Kataster-Amt-Mix). 
     13                   SchlÃŒsseltabellen sind mehrfach belegt. Dadurch doppelte Treffer bei der Suche. 
    1214*/ 
    1315 
     
    107109        $linelimit=40; 
    108110 
    109         $sql="SELECT stelle, bezeichnung AS ag FROM ax_dienststelle " 
     111        $sql="SELECT DISTINCT stelle, bezeichnung AS ag FROM ax_dienststelle " 
    110112        ."WHERE stelle IN (".$liste_ag.") AND stellenart = 1000 AND endet IS NULL ORDER BY bezeichnung LIMIT $1 ;"; 
    111113        $res = pg_prepare("", $sql); 
     
    138140        // Auch wenn BlÀtter vorhanden sind, kann es eine "Sackgasse" sein. 
    139141        // Manchmal haben die BlÀtter keine FlurstÃŒcke im Filter-Bereich (Gemeinde). 
    140         global $debug; 
     142        global $debug, $katamtmix; 
    141143        $linelimit=100; // Bezirke/AG 
    142144 
     
    146148        // Body 
    147149        // Die Subquery stellt sicher, dass nur Bezirke aufgelistet werden, die auch BlÀtter enthalten 
    148         $sql ="SELECT g.bezirk, g.bezeichnung FROM ax_buchungsblattbezirk g JOIN ax_dienststelle a ON g.gehoertzu_stelle = a.stelle " 
    149         ."WHERE a.stelle = $1 AND a.stellenart = 1000 AND a.endet IS NULL AND g.endet IS NULL " 
     150        $sql ="SELECT DISTINCT g.bezirk, g.bezeichnung FROM ax_buchungsblattbezirk g JOIN ax_dienststelle a ON g.gehoertzu_stelle = a.stelle "; 
     151        if ($katamtmix){$sql.="AND substr(g.gml_id,1,6) = substr(a.gml_id,1,6) ";} 
     152        $sql.="WHERE a.stelle = $1 AND a.stellenart = 1000 AND a.endet IS NULL AND g.endet IS NULL " 
    150153        ."AND NOT (SELECT gml_id FROM ax_buchungsblatt b WHERE b.land=g.land AND b.bezirk=g.bezirk AND b.endet IS NULL LIMIT 1) IS NULL " 
    151154        ."ORDER BY g.bezeichnung LIMIT $2 ;"; 
     
    180183        // Zu einem Grundbuchbezirks-SchlÃŒssel die Zeilen "AG" und "Bezirk" ausgeben 
    181184        // Parameter = SchlÃŒssel des Bezirks 
    182         #global $debug; 
     185        global $katamtmix; 
    183186        $sql ="SELECT a.stelle, a.bezeichnung AS ag, g.bezeichnung FROM ax_buchungsblattbezirk g " 
    184         ."JOIN ax_dienststelle a ON g.gehoertzu_stelle = a.stelle WHERE g.bezirk= $1 AND g.endet IS NULL AND a.endet IS NULL LIMIT 1;"; 
     187        ."JOIN ax_dienststelle a ON g.gehoertzu_stelle = a.stelle "; 
     188        if ($katamtmix){$sql.="AND substr(g.gml_id,1,6) = substr(a.gml_id,1,6) ";} 
     189        $sql.="WHERE g.bezirk= $1 AND g.endet IS NULL AND a.endet IS NULL LIMIT 1;"; 
    185190        $v=array($gbbez); 
    186191        $res=pg_prepare("", $sql); 
     
    209214function SuchGBBezName() { 
    210215        // Grundbuch-Bezirk suchen nach Name(-nsanfang) 
    211         global $gkz, $gemeinde, $debug, $gbkennz; 
     216        global $gkz, $gemeinde, $debug, $gbkennz, $katamtmix; 
    212217        $linelimit=80; 
    213218 
    214         $sql ="SELECT a.stelle, a.bezeichnung AS ag, g.bezirk, g.bezeichnung FROM ax_buchungsblattbezirk g " 
    215         ."JOIN ax_dienststelle a ON g.gehoertzu_stelle = a.stelle " 
    216         ."WHERE g.bezeichnung ILIKE $1 AND g.endet IS NULL AND a.endet IS NULL " 
     219        $sql ="SELECT DISTINCT a.stelle, a.bezeichnung AS ag, g.bezirk, g.bezeichnung FROM ax_buchungsblattbezirk g " 
     220        ."JOIN ax_dienststelle a ON g.gehoertzu_stelle = a.stelle "; 
     221        if ($katamtmix){$sql.="AND substr(g.gml_id,1,6) = substr(a.gml_id,1,6) ";} 
     222        $sql.="WHERE g.bezeichnung ILIKE $1 AND g.endet IS NULL AND a.endet IS NULL " 
    217223        ."ORDER BY a.bezeichnung, g.bezeichnung LIMIT $2 ;"; // "AND a.stellenart=1000 " Amtsgericht 
    218224        if ( $gbkennz == "") { 
     
    307313function gml_blatt() { 
    308314        // Kennzeichen "Bezirk + Blatt" eingegeben. Dazu die gml_id des Blattes ermitteln. 
    309         // 2018-10: Sonderfall Buchstabe: Auch finden wenn der nicht eingegeben wurde. 
    310315        global $debug, $zgbbez, $zblatt, $zblattn, $zblattz; 
    311316        $sql ="SELECT b.gml_id, b.buchungsblattnummermitbuchstabenerweiterung AS blatt FROM ax_buchungsblatt b " 
     
    380385                $gef_blatt=$row["blatt"];       // gefunden ggf. mit Buchstabe (Wildcard) 
    381386                if ($zblatt != $gef_blatt) { 
    382                         echo "\n<p class='dbg'>Blatt mit Buchstabenerweiterung gefunden.</p>"; 
     387                //      echo "\n<p class='dbg'>Blatt mit Buchstabenerweiterung gefunden.</p>"; 
    383388                        $zblatt=$gef_blatt; 
    384389                        $zblattz=substr($zblatt, strlen($zblatt)-1, 1); 
     
    397402        // Die gml_id der Buchungsstelle (BVNR, GrundstÃŒck) ist bekannt = $buchunggml 
    398403        // Die gebuchten FlurstÃŒcke und dienende/herrschenden Buchungen werden ausgegeben. 
    399         global $debug, $gemeinde, $epsg, $buchunggml, $zgbbez, $zblatt, $zblattn, $zblattz, $zbvnr, $gfilter; 
     404        global $debug, $gemeinde, $epsg, $buchunggml, $zgbbez, $zblatt, $zblattn, $zblattz, $zbvnr, $gfilter, $katamtmix; 
    400405        // NoLimit? 
    401406 
     
    409414                        echo "<p class='err'>Kennzeichen Bezirk und Blatt nicht gesetzt</p>"; 
    410415                } // ++ suchen! 
    411         //      zeile_buchung($buchunggml, $zbvnr, $zgbbez."-".$zblattn.$zblattz, false, true); 
    412416                zeile_buchung($buchunggml, $zbvnr, $zgbbez."-".$zblatt, false, true); // $zblatt wird aktualisiert, wenn Buchstabe gefunden wurde 
    413417        } 
     
    445449        // Direkte Buchungen (Flurst.) 
    446450        $sql =$sqlanf."FROM ax_flurstueck f JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer "; 
     451        if ($katamtmix){$sql.="AND substr(g.gml_id,1,6) = substr(f.gml_id,1,6) ";} 
    447452        $sql.="WHERE f.istgebucht = $1 AND f.endet IS NULL ".$sqlfilter."ORDER BY f.gemarkungsnummer, f.flurnummer, cast(f.zaehler AS integer), cast(f.nenner AS integer);"; 
    448453 
     
    482487        ."FROM ax_buchungsstelle sh JOIN ax_buchungsstelle sd ON sd.gml_id=ANY(sh.an) " 
    483488        ."JOIN ax_flurstueck f ON f.istgebucht=sd.gml_id " 
    484         ."JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer " 
    485         ."JOIN ax_buchungsblatt bd ON sd.istbestandteilvon=bd.gml_id " 
    486         ."JOIN ax_buchungsblattbezirk gd ON bd.land=gd.land AND bd.bezirk=gd.bezirk " 
    487         ."WHERE sh.gml_id = $1 AND sh.endet IS NULL AND sd.endet IS NULL AND f.endet IS NULL AND bd.endet IS NULL AND gd.endet IS NULL " 
     489        ."JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer "; 
     490        if ($katamtmix){$sql.="AND substr(f.gml_id,1,6) = substr(g.gml_id,1,6) ";} 
     491        $sql.="JOIN ax_buchungsblatt bd ON sd.istbestandteilvon=bd.gml_id " 
     492        ."JOIN ax_buchungsblattbezirk gd ON bd.land=gd.land AND bd.bezirk=gd.bezirk "; 
     493        if ($katamtmix){$sql.="AND substr(bd.gml_id,1,6) = substr(gd.gml_id,1,6) ";} 
     494        $sql.="WHERE sh.gml_id = $1 AND sh.endet IS NULL AND sd.endet IS NULL AND f.endet IS NULL AND bd.endet IS NULL AND gd.endet IS NULL " 
    488495 
    489496        .$sqlfilter."ORDER BY gd.bezeichnung, bd.buchungsblattnummermitbuchstabenerweiterung, cast(sd.laufendenummer AS integer), f.gemarkungsnummer, f.flurnummer, cast(f.zaehler AS integer), cast(f.nenner AS integer);"; 
     
    494501        if (!$res) { 
    495502                echo "\n<p class='err'>Fehler bei Buchungsstelle (gml, Recht an).</p>"; 
    496                 if ($debug >= 3) { 
    497                         echo "\n<p class='err'>'".$sql."'<br>\nmit $1 ='".$buchunggml."'</p>"; 
    498                 } 
     503                if ($debug >= 3) {echo "\n<p class='err'>'".$sql."'<br>\nmit $1 ='".$buchunggml."'</p>";} 
    499504        } 
    500505        $zfs2=0; 
     
    544549} 
    545550 
    546 // =========== 
    547551// Start hier! 
    548 // =========== 
    549552 
    550553// Validation: Eingabefeld aus Formular. 
Note: See TracChangeset for help on using the changeset viewer.