Ignore:
Timestamp:
02/24/22 16:24:19 (2 years ago)
Author:
frank.jaeger
Message:

Überarbeitung der Auskunft: Durch Functions den Code verdichtet. Drei neue Arten von Bauwerken.

File:
1 edited

Legend:

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

    r425 r427  
    11<?php 
    2 /*      Modul: alkisfkt.php 
    3  
    4         ALKIS-Buchauskunft, Kommunales Rechenzentrum Minden-Ravensberg/Lippe (Lemgo). 
    5         F u n c t i o n s 
     2/*      alkisfkt.php 
     3 
     4        ALKIS-Auskunft 
     5        Author: Frank JÀger, Kommunales Rechenzentrum Minden-Ravensberg/Lippe (Lemgo) 
     6 
     7        F u n c t i o n s , die von mehreren Modulen verwendet werden. 
    68 
    79        Version: 
     
    1517                           Footer: Umschalter fÃŒr SchlÃŒssel und Debug unabhÀngig benutzbar. Authentifizierung aus QWC2 nicht hier behandeln. 
    1618        2021-12-30 Bestandsnachweis recursiv ÃŒber alle Buchungs-Ebenen 
    17  
    18 ++ ToDo: 
    19         - Parameter $lnkclass in eigentuemer() und $jfenster in buchung_anzg() vereinheitlichen 
     19        2022-01-13 Functions in Fach-Modul verschoben, wenn nur von einem verwendet. Neue Functions LnkStf(), DsKy() 
    2020*/ 
    2121 
     
    6767 
    6868function footer($gmlid, $link, $append) { 
    69         // Einen Seitenfuß ausgeben. 
    70         // Die Parameter &gkz= und &gmlid= kommen in allen Modulen einheitlich vor 
    71         // Den URL-Parameter "&showkey=j/n" umschalten lassen. 
    72         // $append wird angehÀngt wenn gefÃŒllt. Anwendung: &eig=j bei FSNW, &ltyp=m/p/o bei Lage 
     69// Einen Seitenfuß ausgeben. 
     70// Die Parameter &gkz= und &gmlid= kommen in allen Modulen einheitlich vor 
     71// Den URL-Parameter "&showkey=j/n" umschalten lassen. 
     72// $append wird angehÀngt wenn gefÃŒllt. Anwendung: &eig=j bei FSNW, &ltyp=m/p/o bei Lage 
    7373        global $gkz, $showkey, $hilfeurl, $debug, $dbg, $customer; 
    7474 
     
    7878        ."\n\t\t<table class='outer'>\n\t\t<tr>"; 
    7979 
    80         // Spalte 1: Info Benutzerkennung 
     80        // Sp.1: Info Benutzerkennung 
    8181        if (isset($customer) and $customer != '') { // ÃŒber global von fkt. darf_ich() 
    8282                echo "\n\t\t\t<td title='Info'><i>Benutzer:&nbsp;".$customer."</i></td>"; 
     
    8585        } 
    8686 
    87         // Spalte 2: Umschalter 
     87        // Sp.2: Umschalter 
     88// +++ ToDo: Texte eindeutiger machen, z.B. Anzeige der SchlÃŒssel ist an >> aus // Anzeige der SchlÃŒssel ist aus >> an 
     89// oder als Formular / Option-Element 
    8890        echo "\n\t\t\t<td title='Konfiguration'>"; 
    8991                $mylink ="\n\t\t\t\t<a class='keyswitch' href='".$link."gkz=".$gkz."&amp;gmlid=".$gmlid.$append; 
     
    111113        echo "\n\t\t\t</td>"; 
    112114 
    113         // Spalte 3: Dokumentation 
     115        // Sp.3: Dokumentation 
    114116        echo "\n\t\t\t<td title='Hilfe'>" 
    115117                ."\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>" 
     
    128130function UnqKatAmt($t1, $t2){ 
    129131// 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. 
     132// zusÀtzlich dafÃŒr gesort werden, dass nur die SchlÃŒssel des gleichen Katasteramtes verwendet werden. Sonst bekommt man redundante Treffer. 
    131133// Benötigt den Alias der zu verbindenden Tabellen. 
    132134// Liefert einen String zum EinfÃŒgen hinter "JOIN .. ON". 
     
    139141} 
    140142 
     143function LnkStf(){ 
     144// Link-Staffeltab - Die Parameter showkey und nodebug im href eines <a>-Tag an ein anderes Modul weiter geben. 
     145// Gibt einen String zurÃŒck, der im href eingefÃŒgt wird. 
     146        global $debug, $dbg, $showkey; 
     147 
     148        if ($showkey) { // SchlÃŒssel anzeigen 
     149                $ret="&amp;showkey=j"; 
     150        } else { 
     151                $ret=""; 
     152        } 
     153 
     154        // Nur relevant in einer Entwicklungsumgebung: 
     155        // Falls debug-Ausgaben erlaubt sind (conf) kann man das temporÀr einschrÀnken, umgekehrt nicht. 
     156        // $dbg = aktueller Arbeitswert, $debug = aus Conf. 
     157        if ($dbg === 0 AND $debug > 0){ 
     158                $ret.="&amp;nodebug=j"; 
     159        } 
     160        return $ret; 
     161} 
     162 
     163function DsKy($derKey, $Tipp){ 
     164// Display Key - Optional einen ALKIS-internen SchlÃŒsselwert vor dem entschlÃŒsselten Wert ausgeben. 
     165// Die Option wird gesteuert durch einen Schalter im Seitenfuß. 
     166// Liefert einen HTML-Text zur Verwendung in einem Echo-Befehl. Zur Verkettung mit Literalen. 
     167        global $showkey; 
     168        $Tipp = str_replace("*", "Schl&uuml;ssel", $Tipp); // hÀufig verwendet 
     169        if ($showkey and $derKey != "") { 
     170                $html="<span class='key' title='".$Tipp."'>(".$derKey.")&nbsp;</span>"; 
     171        } else { 
     172                $html=""; 
     173        } 
     174        return $html; 
     175} 
     176 
    141177function ber_bs_zaehl($gmls) { 
    142         // Berechtigte Buchungs-Stellen zaehlen. 
     178// Berechtigte Buchungs-Stellen zÀhlen. 
    143179 
    144180        // Buchungstelle dienend <(Recht)an< Buchungstelle herrschend 
     
    148184        $resan = pg_prepare("", $sql); 
    149185        $resan = pg_execute("", $v); 
    150         if (!$resan) {echo "\n<p class='err'>Fehler bei 'berechtigte Buchungsstellen zaehlen'.</p>";} 
     186        if (!$resan) {echo "\n<p class='err'>Fehler bei 'berechtigte Buchungsstellen z&auml;hlen'.</p>";} 
    151187        $rowan = pg_fetch_assoc($resan); 
    152188        $anz=$rowan["anz"]; 
     
    156192 
    157193function buchung_anzg($gmlbs, $eig, $jsfenster, $gml_fs, $trtyp) { 
    158         // In einem FS-Nachw. EINE Buchungsstelle anzeigen. 
    159         // Parameter: 
    160         //  $gmlbs: GML-ID der anzuzeigenden Buchungs-Stelle 
    161         //  $eig: EigentÃŒmer ausgeben j/n 
    162         //  $jsfenster: Javascript-Funktion zum Verlassen des Feature-Info-Fensters verwenden (bool) 
    163         //  $gml_fs: GML-ID des FlurstÃŒcke (nur bei erstem Aufruf in einem FS-Nachweis notwendig) 
    164         //      $trtyp: Tabellen-Zeilen-Typ. Werte: 1="mit GS-Link", 2="ohne GS-Link", 3="ohne GS-Link +Zeile einfÀrben" 
     194// In einem FS-Nachw. EINE Buchungsstelle anzeigen. 
     195// Parameter: 
     196//  $gmlbs: GML-ID der anzuzeigenden Buchungs-Stelle 
     197//  $eig: EigentÃŒmer ausgeben j/n 
     198//  $jsfenster: Javascript-Funktion zum Verlassen des Feature-Info-Fensters verwenden (bool) 
     199//  $gml_fs: GML-ID des FlurstÃŒcke (nur bei erstem Aufruf in einem FS-Nachweis notwendig) 
     200//      $trtyp: Tabellen-Zeilen-Typ. Werte: 1="mit GS-Link", 2="ohne GS-Link", 3="ohne GS-Link +Zeile einfÀrben" 
    165201        global $gkz, $dbg, $showkey, $bartgrp, $barttypgrp, $stufe, $katAmtMix; 
    166202 
     
    190226        } 
    191227        if ($rowbs = pg_fetch_assoc($resbs)) { // EIN Treffer 
    192                 $blattkeyber=$rowbs["blattart"]; // Schluessel von Blatt-Art des GB 
     228                $blattkeyber=$rowbs["blattart"]; // SchlÃŒssel von Blatt-Art des GB 
    193229                if ($blattkeyber != '5000' or $dbg > 1) { // "Fiktives Blatt" nur bei Entwicklung anzeigen 
    194230                        $gezeigt = 1; // Funktionswert nach Treffer 
     
    203239                        $blatt=ltrim($rowbs["blatt"], "0"); 
    204240                        $lfd=ltrim($rowbs["lfd"], "0"); 
    205                         if ($bartkey != $bartgrp) { // Wechsel der Buchungsart 
     241                        if ($bartkey != $bartgrp) { // Wechsel Buchungsart 
    206242                                $barttitle=$rowbs["barttitle"]; // Buchungsart ErklÀrung 
    207243                                switch (true) { // Die Buchungsart einem Typ (Gruppierung) zuweisen 
     
    221257                                                echo "\n\t<tr>\n\t\t<td colspan='3'>\n\t\t\t<h3 id='gb'>".$h3txt."</h3>\n\t\t</td>"; // 1-3 
    222258                                                echo "\n\t\t<td>\n\t\t\t<p class='nwlink noprint'>" // 4 
    223                                                         ."\n\t\t\t\t<a href='".selbstverlinkung()."?gkz=".$gkz."&amp;gmlid=".$gml_fs; 
    224                                                         if ($showkey) {echo "&amp;showkey=j";} 
    225                                                         if ($eig=="j") { // Umschalter: FS-Nachweis ruft sich selbst mit geaendertem Parameter auf. Positionierung auf Marke "#gb" 
     259                                                        ."\n\t\t\t\t<a href='".selbstverlinkung()."?gkz=".$gkz."&amp;gmlid=".$gml_fs.LnkStf(); 
     260                                                        if ($eig=="j") { // Umschalter: FS-Nachweis ruft sich selbst mit geÀndertem Param. auf. Pos. auf Marke "#gb" 
    226261                                                                echo "&amp;eig=n#gb' title='Umschalter: Flurst&uuml;cksnachweis'>ohne Eigent&uuml;mer</a>"; 
    227262                                                        } else { 
     
    236271                                        $barttypgrp = $barttyp; 
    237272                                } 
    238  
    239                                 // ++ mehr Abstand oben zur Zeile in .css? 
    240273                                echo "\n\t<tr>" // Buchungsart als Zwischenzeile 
    241                                         ."\n\t\t<td class='ll'><img src='ico/Grundbuch.png' width='16' height='16' alt=''> Buchungsart:</td>" // 1 
    242                                         ."\n\t\t<td colspan='2' title='".$barttitle."'>"; // 2-3 
    243                                                 if ($showkey) {echo "<span class='key' title='Buchungsart'>(".$bartkey.")</span> ";} 
    244                                                 echo "<span class='wichtig'>".$bart."</span>" 
    245                                         ."</td>" 
    246                                         ."\n\t\t<td></td>" // 4 
     274                                        ."\n\t\t<td class='ll'><img src='ico/Grundbuch.png' width='16' height='16' alt=''> Buchungsart:</td>" 
     275                                        ."\n\t\t<td colspan='2' title='".$barttitle."'>".DsKy($bartkey, 'Buchungsart')."<span class='wichtig'>".$bart."</span>" 
     276                                        ."</td>\n\t\t<td></td>" // 4 
    247277                                ."\n\t</tr>"; 
    248278                                $bartgrp=$bartkey; // Gruppe merken 
     
    261291                                        } 
    262292                                        echo "\n\t\t\t<tr>" 
    263                                                 ."\n\t\t\t\t<td class='head'>Bezirk</td>" 
    264                                                 ."\n\t\t\t\t<td class='head'>"; 
    265                                                 if ($showkey) {echo "<span class='key' title='Blattart'>(".$blattkeyber.")</span> ";} 
    266                                                 echo $blattartber."</td>" 
    267                                                 ."\n\t\t\t\t<td class='head'>Lfd-Nr</td>" 
     293                                        ."\n\t\t\t\t<td class='head'>Bezirk</td>" 
     294                                        ."\n\t\t\t\t<td class='head'>".DsKy($blattkeyber, 'Blattart-*').$blattartber."</td>" 
     295                                        ."\n\t\t\t\t<td class='head'>Lfd-Nr</td>" 
    268296                                        ."\n\t\t\t</tr>"; 
    269297 
     
    273301                                                echo "\n\t\t\t<tr>"; 
    274302                                        } 
    275                                         echo "\n\t\t\t\t<td title='Grundbuchbezirk'>"; 
    276                                                 if ($showkey) {echo "<span class='key' title='GB-Bezirk-Schl&uuml;ssel'>".$rowbs["bezirk"]."</span><br>";} 
    277                                                 echo $beznam."</td>" 
    278                                                 ."\n\t\t\t\t<td title='Grundbuch-Blatt'><span class='wichtig'>".$blatt."</span></td>" 
    279                                                 ."\n\t\t\t\t<td title='Bestandsverzeichnis-Nummer (BVNR, Grundst&uuml;ck)'>".$lfd."</td>" 
     303                                        echo "\n\t\t\t\t<td title='Grundbuchbezirk'>".DsKy($rowbs["bezirk"], 'GB-Bezirk-*').$beznam."</td>" 
     304                                        ."\n\t\t\t\t<td title='Grundbuch-Blatt'><span class='wichtig'>".$blatt."</span></td>" 
     305                                        ."\n\t\t\t\t<td title='Bestandsverzeichnis-Nummer (BVNR, Grundst&uuml;ck)'>".$lfd."</td>" 
    280306                                        ."\n\t\t\t</tr>" 
    281307                                        ."\n\t\t\t</table>"; 
     
    293319 
    294320                                echo "\n\t\t<td>"; // 4 
    295                                         echo "\n\t\t\t<p class='nwlink noprint'>"; 
     321                                        echo "\n\t\t\t<p class='nwlink noprint'>".DsKy($blattkeyber, 'Blattart-*'); 
    296322                                        //      Bestand 
    297                                                 if ($showkey) {echo "<span class='key' title='Blattart'>(".$blattkeyber.")</span> ";} 
    298                                                 $url="alkisbestnw.php?gkz=".$gkz."&amp;gmlid=".$gbgml; 
    299                                                 if ($showkey) {$url.="&amp;showkey=j";} 
     323                                                $url="alkisbestnw.php?gkz=".$gkz."&amp;gmlid=".$gbgml.LnkStf(); 
    300324                                                if ($jsfenster) {$url="javascript:imFenster(\"".$url."\")";} // Sonderfall "Inlay" aus Feature-Info 
    301325                                                echo "\n\t\t\t\t<a href='".$url."' title='Grundbuchnachweis'>".$blattartber 
    302                                                         ." <img src='ico/GBBlatt_link.png' width='16' height='16' alt=''>" 
    303                                                 ."</a>"; 
     326                                                ." <img src='ico/GBBlatt_link.png' width='16' height='16' alt=''></a>"; 
    304327                                        //      Buchung 
    305328                                                if ($trtyp === 1) { 
    306                                                         echo "<br>"; 
    307                                                         if ($showkey) {echo "<span class='key' title='Buchungsart'>(".$bartkey.")</span> ";} 
    308                                                         $url="alkisgsnw.php?gkz=".$gkz."&amp;gmlid=".$hgml; 
    309                                                         if ($showkey) {$url.="&amp;showkey=j";} 
     329                                                        echo "<br>".DsKy($bartkey, 'Buchungsart'); 
     330                                                        $url="alkisgsnw.php?gkz=".$gkz."&amp;gmlid=".$hgml.LnkStf(); 
    310331                                                        if ($jsfenster) {$url="javascript:imFenster(\"".$url."\")";} 
    311332                                                        echo "\n\t\t\t\t<a href='".$url."' title='GrundstÃŒcksnachweis: ".$bart."'>Buchung" 
    312                                                                 ." <img src='ico/Grundstueck_Link.png' width='16' height='16' alt=''>" 
    313                                                         ."</a>"; 
     333                                                        ." <img src='ico/Grundstueck_Link.png' width='16' height='16' alt=''></a>"; 
    314334                                                } 
    315335                                        echo "\n\t\t\t</p>" 
    316                                 ."\n\t\t</td>" // 4 
     336                                ."\n\t\t</td>" 
    317337                        ."\n\t</tr>"; 
    318338                        if ($eig === "j") { 
    319                                 if ($jsfenster) {$lnkclass = "imFenster";} else {$lnkclass = "";}  
    320                                 $n = eigentuemer($gbgml, true, $lnkclass); // mit Adresse 
     339                                $n = eigentuemer($gbgml, true, $jsfenster); // mit Adresse 
    321340                        } 
    322341                } 
    323342        } 
    324343        pg_free_result($resbs); 
    325          
    326         //if ($dbg > 1) {echo "\n<p class='dbg'>Ende function buchung_anzg(), Return = ". $gezeigt ."</p>";} 
    327          
    328344        return $gezeigt; // 1 wenn eine Buchung ausgegeben wurde 
    329345} 
    330346 
    331347function ber_bs_anzg($gmls, $eig, $jsfenster, $gml_fs, $gsanfrd) { 
    332         // In einem FS-Nachw. die berechtigten (herrschenden) Buchungsstellen anzeigen z.B. "Wohnungs-/Teileigentum". 
    333         // Parameter:  
    334         //  $gmls: GML-ID der dienenden Buchungs-Stelle. Im ersten Durchlauf also, die BS auf der das FS gebucht ist. 
    335         //  $eig: EigentÃŒmer ausgeben j/n 
    336         //  $jsfenster: Javascript-Funktion zum Verlassen des Feature-Info-Fensters verwenden (bool) 
    337         //  $gml_fs: GML-ID des FlurstÃŒcke (nur bei erstem Aufruf in einem FS-Nachweis notwendig) 
    338         //      $gsanfrd: In einem GS-Nachw. die GML-ID der in de URL angeforderten Buchungsstelle (-> Hervorhebung) 
     348// In einem FS-Nachw. die berechtigten (herrschenden) Buchungsstellen anzeigen z.B. "Wohnungs-/Teileigentum". 
     349// Parameter:  
     350//  $gmls: GML-ID der dienenden Buchungs-Stelle. Im ersten Durchlauf also, die BS auf der das FS gebucht ist. 
     351//  $eig: EigentÃŒmer ausgeben j/n 
     352//  $jsfenster: Javascript-Funktion zum Verlassen des Feature-Info-Fensters verwenden (bool) 
     353//  $gml_fs: GML-ID des FlurstÃŒcke (nur bei erstem Aufruf in einem FS-Nachweis notwendig) 
     354//      $gsanfrd: In einem GS-Nachw. die GML-ID der in de URL angeforderten Buchungsstelle (-> Hervorhebung) 
    339355        global $dbg, $gezeigt; 
    340356 
     
    379395 
    380396function kurz_namnr($lang) { 
    381         // Namensnummer kÃŒrzen. Nicht benötigte Stufen der Dezimalklassifikation abschneiden 
     397// Namensnummer kÃŒrzen. Nicht benötigte Stufen der Dezimalklassifikation abschneiden 
    382398        $kurz=str_replace(".00","",$lang); // leere Stufen (nur am Ende) 
    383399        $kurz=str_replace("0000","",$kurz); // ganz leer (am Anfang) 
    384         $kurz=ltrim($kurz, "0"); // fuehr. Nullen 
    385         $kurz=str_replace(".0",".",$kurz); // fuehr. Null jeder Stufe 
     400        $kurz=ltrim($kurz, "0"); // fÃŒhrd. Nullen 
     401        $kurz=str_replace(".0",".",$kurz); // fÃŒhrd. Null jeder Stufe 
    386402        $kurz=rtrim($kurz); // Leerzeichen hinten 
    387         // echo "/n<p class='dbg'> lang='".$lang."'</p>/n<p class='dbg'> kurz='".$kurz."'</p>"; 
    388403        return $kurz; 
    389404} 
    390405 
    391 function 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  
    410 function 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  
    454 function 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  
    522 function 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  
    531         $sql="SELECT g.gemarkungsnummer, g.bezeichnung, f.gml_id, f.flurnummer, f.zaehler, f.nenner, f.amtlicheflaeche " 
    532         ."FROM ax_flurstueck f LEFT JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer ".UnqKatAmt("f","g") 
    533         ."WHERE f.endet IS NULL AND g.endet IS NULL AND f.istgebucht = $1 "; 
    534         if ($filtgem === '') { // ungefiltert 
    535                 $v=array($gml_bs); 
    536         } else { 
    537                 $sql.="AND f.gemeindezugehoerigkeit_kreis = $2 AND f.gemeindezugehoerigkeit_gemeinde = $3 "; // ZustÀndiges Gebiet 
    538                 $v=array($gml_bs, $filtkreis, $filtgem); 
    539         } 
    540         $sql.="ORDER BY f.gemarkungsnummer, f.flurnummer, f.zaehler, f.nenner;"; 
    541         $resf = pg_prepare("", $sql); 
    542         $resf = pg_execute("", $v); 
    543         if (!$resf) {echo "\n<p class='err'>Fehler bei Flurst&uuml;ck</p>";} 
    544         $zeianz=pg_num_rows($resf); 
    545         while($rowf = pg_fetch_assoc($resf)) { 
    546                 $fskenn=$rowf["zaehler"]; 
    547                 if ($rowf["nenner"] != "") { // Bruch 
    548                         $fskenn.="/".$rowf["nenner"]; 
    549                 } 
    550                 $flae=number_format($rowf["amtlicheflaeche"],0,",",".") . " m&#178;"; 
    551  
    552                 echo "\n<tr class='".$trclass."'>"; // eine Zeile je Flurstueck 
    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>"; 
    593         } 
    594         pg_free_result($resf); 
    595         return $zeianz; 
    596 } 
    597  
    598 function eigentuemer($gmlid, $mitadresse, $lnkclass) { 
    599         // Tabelle mit Eigentuemerdaten zu einem Grundbuchblatt ausgeben 
    600         //  Sp.1="EigentÃŒmer" Sp.2=NamNr, Sp.3=Name/Adresse, Sp.4=Link 
    601         // Parameter: 
    602         //      $gmlid = ID GB-Blattes 
    603         //      $mitadresse = Option (true/false) ob die Adresszeile ausgegeben werden soll 
    604         // Return = Anzahl Namensnummern 
    605  
    606         // Schleife 1: N a m e n s n u m m e r 
    607         // Beziehung: ax_namensnummer >istBestandteilVon> ax_buchungsblatt 
     406function eigentuemer($gmlid, $mitadresse, $jsfenster) { 
     407/*      Tabelle mit EigentÃŒmerdaten zu einem Grundbuchblatt ausgeben 
     408        Sp.1="EigentÃŒmer" Sp.2=NamNr, Sp.3=Name/Adresse, Sp.4=Link 
     409  Parameter: 
     410        $gmlid: ID GB-Blatt 
     411        $mitadresse: Option (t/f) ob die Adresszeile ausgegeben werden soll 
     412        $jsfenster: Beim Link mit Javascript ein neues Fenster öffnen 
     413  Return = Anzahl Namensnummern */ 
    608414        global $dbg, $gkz, $showkey; 
    609  
    610         if ($lnkclass == "") { 
     415        if ($jsfenster) { // beim Link aus iFrame ausbrechen 
     416                $lnkvor  = "javascript:imFenster(\""; 
     417                $lnknach = "\")";                
     418        } else {         
    611419                $lnkvor = ""; 
    612420                $lnknach = ""; 
    613         } else { // Link ÃŒber Java-Class "imFenster" aus alkisinlayausk.php 
    614                 $lnkvor  = "javascript:".$lnkclass."(\""; 
    615                 $lnknach = "\")"; 
    616         } 
    617  
    618         $sqln="SELECT n.gml_id, n.laufendenummernachdin1421 AS lfd, n.zaehler, n.nenner, n.artderrechtsgemeinschaft AS adr, n.beschriebderrechtsgemeinschaft as beschr, n.eigentuemerart, n.anlass, n.benennt, wn.beschreibung AS adrv, we.beschreibung AS eiartv " 
     421        } 
     422 
     423        // N a m e n s n u m m e r 
     424        // ax_namensnummer >istBestandteilVon> ax_buchungsblatt 
     425        $sqln="SELECT n.gml_id, n.laufendenummernachdin1421 AS lfd, n.zaehler, n.nenner, n.artderrechtsgemeinschaft AS adr, n.beschriebderrechtsgemeinschaft as beschr, n.eigentuemerart, n.anlass, n.benennt, " 
     426        ."wn.beschreibung AS adrv, we.beschreibung AS eiartv, " 
     427        ."p.gml_id AS gmlpers, p.nachnameoderfirma, p.vorname, p.geburtsname, to_char(cast(p.geburtsdatum AS date),'DD.MM.YYYY') AS geburtsdatum, p.namensbestandteil, p.akademischergrad " 
    619428        ."FROM ax_namensnummer n " 
    620429        ."LEFT JOIN ax_artderrechtsgemeinschaft_namensnummer wn ON n.artderrechtsgemeinschaft = wn.wert " 
    621         ."LEFT JOIN ax_eigentuemerart_namensnummer we ON n.eigentuemerart = we.wert " 
    622         ."WHERE n.istbestandteilvon= $1 AND n.endet IS NULL ORDER BY n.laufendenummernachdin1421;"; 
    623         // VerknÃŒpfungsfeld "benennt" ist leer bei "Beschrieb der Rechtsgemeinschaft". 
     430        ."LEFT JOIN ax_eigentuemerart_namensnummer we ON n.eigentuemerart = we.wert "    
     431        ."LEFT JOIN ax_person p ON p.gml_id = n.benennt " 
     432        ."WHERE n.istbestandteilvon = $1 AND n.endet IS NULL AND p.endet IS NULL " 
     433        ."ORDER BY n.laufendenummernachdin1421;"; 
     434        // "benennt" ist leer bei "Beschrieb der Rechtsgemeinschaft". 
    624435 
    625436        $v = array($gmlid); // GB-Blatt 
    626437        $resn = pg_prepare("", $sqln); 
    627438        $resn = pg_execute("", $v); 
    628  
    629439        if (!$resn) { 
    630                 echo "\n<p class='err'>Fehler bei Eigent&uuml;mer</p>"; // kein Fehler bei Blattarten > 1000 
    631                 //if ($dbg > 2) {echo "\n<p class='dbg'>SQL=<br>".str_replace("$1", "'".$gmlid."'", $sqln )."</p>";} 
     440                echo "\n<p class='err'>Fehler bei Eigent&uuml;mer</p>"; 
     441                if ($dbg > 2) {echo "\n<p class='dbg'>SQL=<br>".str_replace("$1", "'".$gmlid."'", $sqln )."</p>";} 
    632442        } 
    633443 
     
    637447                $namnum=kurz_namnr($rown["lfd"]); 
    638448                $rechtsg=$rown["adr"]; 
     449                $beschr=htmlentities($rown["beschr"], ENT_QUOTES, "UTF-8"); 
     450                $adrv=htmlentities($rown["adrv"], ENT_QUOTES, "UTF-8"); 
    639451                $eiartkey=$rown["eigentuemerart"]; // Key 
    640452                $eiart=$rown["eiartv"]; // Value 
    641         //      if ($dbg > 1) {echo "\n<p class='dbg'>Eigent&uuml:merart = '".$eiartkey."' = '".$eiart."'</p>";} 
     453                $anlass=$rown["anlass"]; // ??? 
     454                $gmlpers=$rown["gmlpers"]; // leer bei RechtsverhÀltnis 
     455                $akadem=$rown["akademischergrad"]; 
     456                $nachnam=$rown["nachnameoderfirma"]; 
     457                $vorname=$rown["vorname"]; 
     458                $nbest=$rown["namensbestandteil"]; 
     459                $gebdat=$rown["geburtsdatum"]; 
     460                $gebnam=$rown["geburtsname"]; 
     461                $zaehler=str_replace(".", ",", $rown["zaehler"]); // Dezimal-KOMMA wenn dem Notar der Bruch nicht reicht 
     462                $nenner=str_replace(".", ",", $rown["nenner"]); 
    642463 
    643464                echo "\n\t<tr>"; 
    644                         if($n === 0) { // erste EigentÃŒmer-Zeile zu einer Buchung 
    645                                 echo "\n\t\t<td class='ll'><img src='ico/Eigentuemer_2.png' width='16' height='16' alt=''> Eigent&uuml;mer:</td>"; // 1 
    646                         } else { // Folgezeile 
    647                                 echo "\n\t\t<td class='ll'>&nbsp;</td>"; // 1 
    648                         } 
    649  
    650                         if ($rechtsg != "" ) { // Erbengemeinschaft usw. 
    651                                 echo "\n\t\t<td colspan='2'>"; // 2-3 
    652                                 if ($rechtsg == 9999) { // sonstiges 
    653                                         echo "\n\t\t\t<p class='zus' title='Beschrieb der Rechtsgemeinschaft'>".htmlentities($rown["beschr"], ENT_QUOTES, "UTF-8")."</p>"; 
    654                                 } else { 
    655                                         echo "\n\t\t\t<p class='zus' title='Art der Rechtsgemeinschaft'>".htmlentities($rown["adrv"], ENT_QUOTES, "UTF-8")."</p>"; 
     465                if($n === 0) { // 1. Zeile zum GB 
     466                        echo "\n\t\t<td class='ll'><img src='ico/Eigentuemer_2.png' width='16' height='16' alt=''> Eigent&uuml;mer:</td>"; // 1 
     467                } else { // Folgezeile 
     468                        echo "\n\t\t<td class='ll'>&nbsp;</td>"; 
     469                } 
     470                if ($rechtsg != "" ) { // Erbengemeinschaft usw. 
     471                        echo "\n\t\t<td colspan='2'>"; 
     472                        if ($rechtsg == 9999) { // sonstiges 
     473                                echo "\n\t\t\t<p class='zus' title='Beschrieb der Rechtsgemeinschaft'>".$beschr."</p>"; 
     474                        } else { 
     475                                echo "\n\t\t\t<p class='zus' title='Art der Rechtsgemeinschaft'>".$adrv."</p>"; 
     476                        } 
     477                } else { // Namensnummer 
     478                        echo "\n\t\t<td class='nanu' title='Namens-Nummer'>\n\t\t\t<p>".$namnum."&nbsp;</p>\n\t\t</td>" 
     479                        . "\n\t\t<td>"; 
     480                } 
     481                if ($anlass > 0 ) {echo "<p>Anlass=".$anlass."</p>";} 
     482                // Andere Namensnummern? Relation: ax_namensnummer >bestehtAusRechtsverhaeltnissenZu> ax_namensnummer  
     483                // Die Relation 'Namensnummer' besteht aus RechtsverhÀltnissen zu 'Namensnummer' sagt aus, dass mehrere Namensnummern zu einer Rechtsgemeinschaft gehören können.  
     484                // Die Rechtsgemeinschaft selbst steht unter einer eigenen AX_Namensnummer, die zu allen Namensnummern der Rechtsgemeinschaft eine Relation besitzt. 
     485 
     486                $diePerson=""; 
     487                if ($akadem != "") {$diePerson=$akadem." ";} 
     488                $diePerson.=$nachnam; 
     489                if ($vorname != "") {$diePerson.=", ".$vorname;} 
     490                if ($nbest != "") {$diePerson.=". ".$nbest;} 
     491                if ($gebdat != "") {$diePerson.=", geb. ".$gebdat;} 
     492                if ($gebnam != "") {$diePerson.=", geb. ".$gebnam;} 
     493                $diePerson=htmlentities($diePerson, ENT_QUOTES, "UTF-8"); 
     494 
     495                if ($eiartkey == "") {$eiart="Eigent&uuml;mer" ;} // Default 
     496                echo "\n\t\t\t<p class='geig' title='Eigent&uuml;merart: ".$eiart."'>".$diePerson."</p>\n\t\t</td>" 
     497                ."\n\t\t<td>\n\t\t\t<p class='nwlink noprint'>".DsKy($eiartkey, 'Eigent&uuml;merart-*') 
     498                ."\n\t\t\t\t<a href='".$lnkvor."alkisnamstruk.php?gkz=".$gkz."&amp;gmlid=".$gmlpers.LnkStf() 
     499                .$lnknach."' title='vollst&auml;ndiger Name und Adresse eines Eigent&uuml;mers'>".$eiart 
     500                ." \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>" 
     501                ."\n\t\t</td>\n\t</tr>"; 
     502 
     503                if ($mitadresse) { // optional 
     504                        // A d r e s s e  zur Person 
     505                        $sqla ="SELECT a.gml_id, a.ort_post, a.postleitzahlpostzustellung AS plz, a.strasse, a.hausnummer, a.bestimmungsland " 
     506                        ."FROM ax_anschrift a JOIN ax_person p ON a.gml_id=ANY(p.hat) " 
     507                        ."WHERE p.gml_id= $1 AND a.endet IS NULL AND p.endet IS NULL " 
     508                        ."ORDER BY a.beginnt DESC LIMIT 2;"; 
     509                        $v = array($gmlpers); 
     510                        $resa = pg_prepare("", $sqla); 
     511                        $resa = pg_execute("", $v); 
     512                        if (!$resa) { 
     513                                echo "\n\t<p class='err'>Fehler bei Adressen</p>"; 
     514                                if ($dbg > 2) {echo "\n<p class='err'>SQL=<br>".str_replace("$1", "'".$gmlpers."'", $sqla)."</p>";} 
     515                        } 
     516                        $j=0; 
     517                        while($rowa = pg_fetch_assoc($resa)) { 
     518                                $j++; 
     519                                if ($j === 1) { // erste ("jÃŒngste") Adresse anzeigen 
     520                                        $gmla=$rowa["gml_id"]; 
     521                                        $plz=$rowa["plz"]; // integer 
     522                                        if($plz === 0) { 
     523                                                $plz=""; 
     524                                        } else { 
     525                                                $plz=str_pad($plz, 5, "0", STR_PAD_LEFT); 
     526                                        } 
     527                                        $ort=htmlentities($rowa["ort_post"], ENT_QUOTES, "UTF-8"); 
     528                                        $str=htmlentities($rowa["strasse"], ENT_QUOTES, "UTF-8"); 
     529                                        $hsnr=$rowa["hausnummer"]; 
     530                                        $land=htmlentities($rowa["bestimmungsland"], ENT_QUOTES, "UTF-8"); 
     531 
     532                                        echo "\n\t<tr>\n\t\t<td class='ll'>&nbsp;</td>\n\t\t<td>&nbsp;</td>" 
     533                                        ."\n\t\t<td><p class='gadr'>"; 
     534                                        if ($str.$hsnr != "") {echo $str." ".$hsnr."<br>";} 
     535                                        if ($plz.$ort != "") {echo $plz." ".$ort;} 
     536                                        if ($land != "" and $land != "DEUTSCHLAND") {echo ", ".$land;} 
     537                                        echo "</p></td>" 
     538                                        ."\n\t\t<td>&nbsp;</td>\n\t</tr>"; 
     539                                } else { // manchmal mehrere Angaben 
     540                                        echo "\n\t<tr>\n\t\t<td class='ll'>&nbsp;</td>\n\t\t<td>&nbsp;</td>" 
     541                                        ."\n\t\t<td><p class='dbg' title='Siehe Auskunft zur Person'>weitere Adresse</p></td>" 
     542                                        ."\n\t\t<td>&nbsp;</td>\n\t</tr>"; 
    656543                                } 
    657                         } else { // Namensnummer 
    658                                 echo "\n\t\t<td class='nanu' title='Namens-Nummer'>\n\t\t\t<p>".$namnum."&nbsp;</p>\n\t\t</td>" // 2 
    659                                 . "\n\t\t<td>"; // 3 
    660  
    661                         } 
    662                         //if ($rown["anlass"] > 0 ) {echo "<p>Anlass=".$rown["anlass"]."</p>";} 
    663  
    664                         // Andere Namensnummern?  Relation:  ax_namensnummer >bestehtAusRechtsverhaeltnissenZu>  ax_namensnummer  
    665                         // Die Relation 'Namensnummer' besteht aus RechtsverhÀltnissen zu 'Namensnummer' sagt aus, dass mehrere Namensnummern zu einer Rechtsgemeinschaft gehören können.  
    666                         // Die Rechtsgemeinschaft selbst steht unter einer eigenen AX_Namensnummer, die zu allen Namensnummern der Rechtsgemeinschaft eine Relation besitzt. 
    667  
    668                 // Schleife 2: P e r s o n 
    669                 // Beziehung: ax_person  <benennt<  ax_namensnummer 
    670                 $sqlp="SELECT nachnameoderfirma, vorname, geburtsname, to_char(cast(geburtsdatum AS date),'DD.MM.YYYY') AS geburtsdatum, namensbestandteil, akademischergrad " 
    671                 ."FROM ax_person WHERE gml_id= $1 AND endet IS NULL;"; 
    672                 $gmlpers=$rown["benennt"]; // leer bei RechtsverhÀltnis 
    673                 $v = array($gmlpers); // gml_id von ax_person 
    674                 $resp = pg_prepare("", $sqlp); 
    675                 $resp = pg_execute("", $v); 
    676                 if (!$resp) { 
    677                         echo "\n\t<p class='err'>Fehler bei Person</p>"; 
    678                         if ($dbg > 2) {echo "\n<p class='err'>SQL=<br>".str_replace("$1", "'".$gmlpers."'", $sqlp)."</p>";} 
    679                 } 
    680  
    681                 $i=0; // cnt Person 
    682                 while($rowp = pg_fetch_assoc($resp)) { // Schleife weglassen: "benennt" ist KEIN Array! 
    683                         $diePerson=""; //++ Anrede? 
    684                         if ($rowp["akademischergrad"] != "") {$diePerson=$rowp["akademischergrad"]." ";} 
    685                         $diePerson.=$rowp["nachnameoderfirma"]; 
    686                         if ($rowp["vorname"] != "") {$diePerson.=", ".$rowp["vorname"];} 
    687                         if ($rowp["namensbestandteil"] != "") {$diePerson.=". ".$rowp["namensbestandteil"];} 
    688                         if ($rowp["geburtsdatum"] != "") {$diePerson.=", geb. ".$rowp["geburtsdatum"];} 
    689                         if ($rowp["geburtsname"] != "") {$diePerson.=", geb. ".$rowp["geburtsname"];} 
    690                         $diePerson=htmlentities($diePerson, ENT_QUOTES, "UTF-8"); // Umlaute 
    691  
    692                         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) 
    693                         echo "\n\t\t<td>\n\t\t\t<p class='nwlink noprint'>"; // 4 
    694                                 if ($showkey AND $eiartkey != '') {echo "<span class='key' title='Eigent&uuml;merart'>(".$eiartkey.")</span> ";} 
    695                                 echo "\n\t\t\t\t<a href='".$lnkvor."alkisnamstruk.php?gkz=".$gkz."&amp;gmlid=".$gmlpers; 
    696                                 if ($showkey) {echo "&amp;showkey=j";} 
    697                                 if ($eiartkey == "") {$eiart="Eigent&uuml;mer" ;} // Default. Ersatz-Text, wenn nicht gefÃŒllt 
    698                                 echo $lnknach."' title='vollst&auml;ndiger Name und Adresse eines Eigent&uuml;mers'>".$eiart 
    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>" 
    700                         ."\n\t\t</td>" // 4 
    701                         ."\n\t</tr>"; 
    702  
    703                         if ($mitadresse) { 
    704                                 // Schleife 3: optional  A d r e s s e  zur Person 
    705                                 $sqla ="SELECT a.gml_id, a.ort_post, a.postleitzahlpostzustellung AS plz, a.strasse, a.hausnummer, a.bestimmungsland " 
    706                                 ."FROM ax_anschrift a JOIN ax_person p ON a.gml_id=ANY(p.hat) WHERE p.gml_id= $1 AND a.endet IS NULL AND p.endet IS NULL ORDER BY a.beginnt DESC LIMIT 2;"; 
    707                                 $v = array($gmlpers); 
    708                                 $resa = pg_prepare("", $sqla); 
    709                                 $resa = pg_execute("", $v); 
    710                                 if (!$resa) { 
    711                                         echo "\n\t<p class='err'>Fehler bei Adressen</p>"; 
    712                                         if ($dbg > 2) {echo "\n<p class='err'>SQL=<br>".str_replace("$1", "'".$gmlpers."'", $sqla)."</p>";} 
    713                                 } 
    714                                 $j=0; 
    715                                 while($rowa = pg_fetch_assoc($resa)) { 
    716                                         $j++; 
    717                                         if ($j === 1) { // erste ("jÃŒngste") Adresse anzeigen 
    718                                                 $gmla=$rowa["gml_id"]; 
    719                                                 $plz=$rowa["plz"]; // integer 
    720                                                 if($plz === 0) { 
    721                                                         $plz=""; 
    722                                                 } else { 
    723                                                         $plz=str_pad($plz, 5, "0", STR_PAD_LEFT); 
    724                                                 } 
    725                                                 $ort=htmlentities($rowa["ort_post"], ENT_QUOTES, "UTF-8"); 
    726                                                 $str=htmlentities($rowa["strasse"], ENT_QUOTES, "UTF-8"); 
    727                                                 $hsnr=$rowa["hausnummer"]; 
    728                                                 $land=htmlentities($rowa["bestimmungsland"], ENT_QUOTES, "UTF-8"); 
    729  
    730                                                 echo "\n\t<tr>" 
    731                                                         ."\n\t\t<td class='ll'>&nbsp;</td>" // 1 
    732                                                         ."\n\t\t<td>&nbsp;</td>" // 2 
    733                                                         ."\n\t\t<td><p class='gadr'>"; // 3 
    734                                                         if ($str.$hsnr != "") {echo $str." ".$hsnr."<br>";} 
    735                                                         if ($plz.$ort != "") {echo $plz." ".$ort;} 
    736                                                         if ($land != "" and $land != "DEUTSCHLAND") {echo ", ".$land;} 
    737                                                 echo "</p></td>" // 3 
    738                                                         ."\n\t\t<td>&nbsp;</td>\n\t</tr>"; // 4 
    739                                         } else { // manchmal doppelte Angaben 
    740                                                 echo "\n\t<tr>" 
    741                                                         ."\n\t\t<td class='ll'>&nbsp;</td>" // 1 
    742                                                         ."\n\t\t<td>&nbsp;</td>" // 2 
    743                                                         ."\n\t\t<td><p class='dbg' title='Siehe Auskunft zur Person'>weitere Adresse</p></td>" // 3 
    744                                                         ."\n\t\t<td>&nbsp;</td>\n\t</tr>"; // 4 
    745                                         } 
    746                                 } // Ende Loop Adresse zur Person 
    747                                 pg_free_result($resa); 
    748                         } 
    749                         // 'keine Adresse' kann vorkommen, z.B. "Deutsche Telekom AG" 
    750                         $i++; // cnt Person 
    751  
    752                         $zaehler=$rown["zaehler"]; 
    753                         if ($zaehler != "") { // Anteil als eigene Tab-Zeile 
    754                                 $zaehler=str_replace(".", ",", $zaehler); // Dezimal-KOMMA wenn dem Notar der Bruch nicht reicht 
    755                                 $nenner=str_replace(".", ",", $rown["nenner"]); 
    756                                 $comnt="Anteil der Berechtigten in Bruchteilen (Par. 47 GBO) an einem gemeinschaftlichen Eigentum (Grundst&uuml;ck oder Recht)."; 
    757                                 echo "\n\t<tr>" 
    758                                 ."\n\t\t<td class='ll'>&nbsp;</td>" // 1 
    759                                 ."\n\t\t<td>&nbsp;</td>" // 2 
    760                                 ."\n\t\t<td><p class='avh' title='".$comnt."'>".$zaehler."/".$nenner." Anteil</p></td>" // 3 
    761                                 ."\n\t\t<td>&nbsp;</td>\n\t</tr>"; // 4 
    762                         } 
    763                 } // End Loop Person 
    764                 pg_free_result($resp); 
    765  
    766                 if ($i === 0) { // KEINE Person. benennt ist leer. Das kommt vor hinter der Zeile "Erbengemeinschaft" und ist dann KEIN Fehler 
     544                        } 
     545                        pg_free_result($resa); 
     546                }       // 'keine Adresse' kann vorkommen, z.B. "Deutsche Telekom AG" 
     547 
     548                if ($zaehler != "") { // Anteil als eigene Tab-Zeile 
     549                        $comnt="Anteil der Berechtigten in Bruchteilen (Par. 47 GBO) an einem gemeinschaftlichen Eigentum (Grundst&uuml;ck oder Recht)."; 
     550                        echo "\n\t<tr>\n\t\t<td class='ll'>&nbsp;</td>\n\t\t<td>&nbsp;</td>" 
     551                        ."\n\t\t<td><p class='avh' title='".$comnt."'>".$zaehler."/".$nenner." Anteil</p></td>" 
     552                        ."\n\t\t<td>&nbsp;</td>\n\t</tr>"; 
     553                } 
     554                if ($gmlpers == "") { // KEINE Person. benennt ist leer. Das kommt vor hinter der Zeile "Erbengemeinschaft" und ist dann KEIN Fehler 
    767555                        if ($dbg > 1) {echo "\n\t\t\t<p class='dbg'>Rechtsgemeinschaft = '".$rechtsg."'</p>";} 
    768556                        if ($rechtsg !== '9999') { 
     
    771559                        echo "</td>\n\t\t<td>&nbsp;</td>\n\t</tr>"; 
    772560                } 
    773                 $n++; // cnt NamNum 
    774         } // End Loop NamNum 
    775  
     561                $n++; 
     562        } 
    776563        pg_free_result($resn); 
    777564        return $n;  
    778565} 
    779566 
    780 function werteliste ($bez ,$sqlin) { 
    781         // Eine oder mehrere EntschlÃŒsselungen in eine Zeile ausgeben. 
    782         // Dient dazu, SchlÃŒssel-ARRAYs auflösen ohne die Zeile im JOIN mehrfach aufzulisten 
    783         // Anwendung: FS-Nachweis BodenschÀtzung 
    784         global $dbg; 
    785  
    786         if ($bez === 'e') {$tabelle = 'ax_entstehungsartoderklimastufewasserverhaeltnisse_bodensc';}  
    787         elseif ($bez === 's') {$tabelle = 'ax_sonstigeangaben_bodenschaetzung';} 
    788  
    789         $sql="SELECT wert, beschreibung FROM ".$tabelle." WHERE wert IN (".$sqlin.") ORDER BY wert LIMIT $1 ;"; 
    790         $v = array('9'); 
    791         $res = pg_prepare("", $sql); 
    792         $res = pg_execute("", $v); 
    793         if (!$res) { 
    794                 echo "\n<p class='err'>Fehler bei Werteliste.</p>"; 
    795                 if ($dbg > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."</p>";} 
    796                 return; 
    797         } 
    798         $i=0; 
    799         while($row = pg_fetch_assoc($res)) { 
    800                 echo " ".$row["beschreibung"]; 
    801                 $i++;    
    802         } 
    803         pg_free_result($res); 
    804         if ($i === 0) { 
    805                 echo "(kein Treffer)"; 
    806                 if ($dbg > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."</p>";} 
    807         } 
    808         return; 
    809 } 
    810  
    811567function fortfuehrungen($entsteh, $dbzeart, $dbzename) { 
    812568// Tabelle im Kopf von FlurstÃŒck und FS-Historie. 2 Z./Sp. Entstehung/FortfÃŒhrung 
    813 // Parameter: Die DB-Spalten "zeitpunktderentstehung", "zeigtaufexternes_art" und "zeigtaufexternes_name" 
     569// Parameter: Die DB-Spalten "zeitpunktderentstehung"[], "zeigtaufexternes_art"[] und "zeigtaufexternes_name"[] 
    814570        global $dbg, $showkey; 
    815571 
    816 //      if ($dbg > 2) {echo "<p class='dbg'>function fortfuehrungen<br>1: ".$dbzeart."<br>2: ".$dbzename."</p>";} 
    817   
    818572        echo "\n\t<table class='fsd'>" // FS-Daten 2 Spalten 
    819                 ."\n\t\t<tr>\n\t\t\t<td>Entstehung</td>" 
    820                 ."\n\t\t\t<td title='Zeitpunkt der Enstehung'>".$entsteh."</td>\n\t\t</tr>"; 
    821         echo "\n\t<tr>" 
    822                 ."\n\t\t\t<td>"; 
     573        ."\n\t\t<tr>\n\t\t\t<td>Entstehung</td>" 
     574        ."\n\t\t\t<td title='Zeitpunkt der Enstehung'>".$entsteh."</td>\n\t\t</tr>"; 
     575        echo "\n\t<tr>\n\t\t\t<td>"; 
    823576        $arrart=explode(",", trim($dbzeart, "{}")); 
    824         foreach($arrart AS $artval) { // Zeile fÃŒr jedes Element 
     577        foreach($arrart AS $artval) { // Eine Zeile fÃŒr jedes Element von "zeigtaufexternes_art" 
    825578                $artval=trim($artval, '"'); 
    826 // ibR: {"Entstehung des FlurstÃŒcks/5200","Letzte FortfÃŒhrung des FlurstÃŒcks/5300",urn:adv:fachdatenverbindung:AA_Antrag} 
    827 // AED: {http://geoportal.kreis-herford.de/alkis/alkis.html#5200,http://geoportal.kreis-herford.de/alkis/alkis.html#5300,urn:adv:fachdatenverbindung:AA_Antrag} 
    828  
    829579                $artpos=strpos($artval, '#'); 
    830580                if ($artpos > 0) { // AED 
    831581                        $artkey=substr($artval, $artpos + 1); 
    832582                        switch ($artkey) { // keine SchlÃŒsseltabelle? 
    833                                 case '5100': $arttxt="Grundst&uuml;ckshinweis (aus ALB-Historie)"; break; 
    834                                 case '5200': $arttxt="Entstehung des Flurst&uuml;cks"; break; 
    835                                 case '5300': $arttxt="Letzte Fortf&uuml;hrung des Flurst&uuml;cks"; break; 
    836                                 default: $arttxt=$artval; 
    837                         } 
    838                         if ($showkey) {echo "<span class='key'><a target='_blank' href='".$artval."'>".$artkey."</a></span> ";} 
     583                                case '5100': 
     584                                        $arttxt="Grundst&uuml;ckshinweis (aus ALB-Historie)"; 
     585                                        $artinfo=""; 
     586                                        break; 
     587                                case '5200': 
     588                                        $arttxt="Entstehung des Flurst&uuml;cks"; 
     589                                        $artinfo="'Entstehung des FlurstÃŒcks' enthÀlt das Jahr der Entstehung, die lfd. Nr. der FortfÃŒhrung und den SchlÃŒssel der FortfÃŒhrungsart zur manuellen Recherche in den Grundbuchakten."; 
     590                                        break; 
     591                                case '5300': 
     592                                        $arttxt="Letzte Fortf&uuml;hrung des Flurst&uuml;cks"; 
     593                                        $artinfo="'Letzte FortfÃŒhrung' enthÀlt das Jahr der letzten FortfÃŒhrung, die lfd. Nr. der FortfÃŒhrung und den SchlÃŒssel der FortfÃŒhrungsart zur manuellen Recherche in den Grundbuchakten."; 
     594                                        break; 
     595                                default: 
     596                                        $arttxt=$artval; 
     597                                        $artinfo=""; 
     598                        } 
     599                        if ($showkey) {echo "<span class='key'><a target='_blank' title='".htmlentities($artinfo, ENT_QUOTES, "UTF-8")."' href='".$artval."'>(".$artkey.")</a></span> ";} 
    839600                        echo $arttxt."<br>"; 
    840601                } else { 
     
    843604                                $artkey=substr($artval, $artpos + 1); 
    844605                                $arttxt=substr($artval, 0, $artpos); 
    845                                 if ($showkey) {echo "<span class='key'>".$artkey."</span> ";} 
    846                                 echo $arttxt."<br>"; 
    847                         } 
    848                 } 
    849         } 
    850         echo "</td>" 
    851         ."\n\t\t\t<td title='Jahrgang / Fortf&uuml;hrungsnummer - Fortf&uuml;hrungsart'>"; 
    852         $arrname=explode(",", trim($dbzename, "{}")); 
    853         foreach($arrname AS $val) { 
    854                 echo trim($val, '"')."<br>"; 
    855         } 
    856         echo "</td>" 
    857         ."\n\t\t</tr>" 
    858         ."\n\t</table>"; 
    859 } 
    860  
    861 function fskenn_dbformat ($fskennz) { 
    862         // Erzeugt, wenn notwendig, aus dem Bindetrich-getrennten FlurstÃŒckskennzeichen "llgggg-fff-nnnn/zz.nn" oder "gggg-ff-nnn/zz"  
    863         // das ALKIS-DB-interne Format des FlurstÃŒckskennzeichens. 
     606                                echo DsKy($artkey, 'Fortf&uuml;hrungsart').$arttxt."<br>"; 
     607                        } 
     608                } 
     609        } 
     610        echo "</td>\n\t\t\t<td title='Jahrgang / Fortf&uuml;hrungsnummer - Fortf&uuml;hrungsart'>"; 
     611        $arrname=explode(",", trim($dbzename, "{}")); // Eine Zeile fÃŒr jedes Element von "zeigtaufexternes_name" 
     612        foreach($arrname AS $val) {echo trim($val, '"')."<br>";} 
     613        echo "</td>\n\t\t</tr>\n\t</table>"; 
     614} 
     615 
     616function fskenn_dbformat($fskennz) { 
     617// Erzeugt aus dem Bindetrich-getrennten FlurstÃŒckskennzeichen "llgggg-fff-nnnn/zz.nn" oder "gggg-ff-nnn/zz"  
     618// das ALKIS-DB-interne Format des FlurstÃŒckskennzeichens. 
    864619        global $defland; 
    865620        $arr=explode("-", $fskennz, 4); // zerlegen 
     
    875630                } 
    876631                $zflur=str_pad($arr[1], 3 , "0", STR_PAD_LEFT); // Flur-Nr 
    877                 $zfsnr=trim($arr[2]); // FlurstÃŒcke-Nr 
     632                $zfsnr=trim($arr[2]); // FlurstÃŒcks-Nr 
    878633                $zn=explode("/", $zfsnr, 2); // Bruch? 
    879634                $zzaehler=str_pad(trim($zn[0]), 5 , "0", STR_PAD_LEFT); 
     
    894649        return $fskzdb; 
    895650} 
    896  
    897651?> 
Note: See TracChangeset for help on using the changeset viewer.