Ignore:
Timestamp:
04/26/13 13:52:56 (9 years ago)
Author:
frank.jaeger
Message:

Mapbender-Navigation mit ALKIS-Daten komplett überarbeitet.

File:
1 edited

Legend:

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

    r276 r278  
    11<?php 
    2 /* Version vom  
     2/* Version vom 
    33        24.10.2011      Nach Pos-Klick Highlight erneuern statt hideHighlight 
    44        17.11.2011      Nachweis-Links ÃŒber javascript im neuen Hochformat-Fenster 
     
    88                                        Format css Person (Rahmen). 
    99        2013-04-16 "import_request_variables" entfÀllt in PHP 5.4 
    10         ToDo: Auf der Stufe 2 "getGBbyPerson" noch Filtern nach Gemeinde 
     10        2013-04-26      Ersetzen View "gemeinde_gemarkung" durch Tabelle "pp_gemarkung". 
     11                                        Stufe 2: GB *und* FS mit einem Klick anzeigen. 
     12                                        BlÀtterfunktion (Folgeseiten) fÃŒr lange Listen.  
     13                                        Function extern gemeinsam genutzt in _eig und _grd. 
     14                                        Dazu Var-Namen harmonisieren: $gb wird $blattgml. 
     15                                        ZurÃŒck-Link, Titel der Transaktion anzeigen. 
    1116*/ 
    1217$cntget = extract($_GET); 
    13 include("../../conf/alkisnav_conf.php"); 
     18include("../../conf/alkisnav_conf.php"); // Konfigurations-Einstellungen 
     19include("alkisnav_fkt.php"); // Funktionen 
    1420$con_string = "host=".$host." port=".$port." dbname=".$dbname.$dbvers.$gkz." user=".$user." password=".$password; 
    1521$con = pg_connect ($con_string) or die ("<p class='err'>Fehler bei der Verbindung zur Datenbank</p>".$dbname.$dbvers.$gkz); 
    16 ?> 
    17  
     22echo <<<END 
    1823<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
    1924<html> 
     
    3035                        window.open(link,'','left=10,top=10,width=620,height=800,resizable=yes,menubar=no,toolbar=no,location=no,status=no,scrollbars=yes'); 
    3136                } 
     37                function transtitle(trans) { 
     38                        document.getElementById('transaktiontitle').innerHTML = trans; 
     39                } 
    3240        </script> 
    3341</head> 
    3442<body> 
    35  
    36 <?php 
    37  
    38 function getEigByName() { 
    39 // 1 ============================= 
    40 // Eigentuemer nach Name(-nsanfang) 
    41 // =============================== 
    42         global $gkz, $gemeinde, $epsg, $con, $name, $person, $gb, $gfilter, $persfilter, $auskpath; 
    43         $linelimit=120; 
    44         $arr = explode(",", $name); 
    45         $name0 = trim($arr[0]); 
    46         $name1 = trim($arr[1]); 
    47         if(preg_match("/\*/",$name0)){ 
    48                 $match = trim(preg_replace("/\*/i","%", strtoupper($name0))); 
    49         } else { 
    50                 $match = trim($name0)."%"; 
    51         }        
    52         if(preg_match("/\*/",$name1)){ 
    53                 $match1 = trim(preg_replace("/\*/i","%", strtoupper($name1))); 
    54         } else { 
    55                 $match1 = trim($name1)."%"; 
    56         }                
    57          
    58         $sql ="SELECT p.nachnameoderfirma, p.vorname, p.gml_id FROM ax_person p "; 
    59  
    60         if ($persfilter and ($gfilter > 0)) { 
    61                 $sql.="JOIN gemeinde_person g ON p.gml_id = g.person WHERE "; 
    62                 switch ($gfilter) { 
    63                         case 1: // Einzelwert 
    64                                 $sql.="g.gemeinde=".$gemeinde." AND "; break; 
    65                         case 2: // Liste 
    66                                 $sql.="g.gemeinde in (".$gemeinde.") AND "; break; 
    67                 } 
    68         } else { 
    69                 $sql.="WHERE "; 
    70         } 
    71         if($match1 != '%'){ 
    72                 $sql.="nachnameoderfirma ILIKE $1 AND p.vorname ILIKE $2 ";              
    73                 $sql.="ORDER BY p.nachnameoderfirma, p.vorname LIMIT $3 ;"; 
    74                 $v=array($match, $match1, $linelimit); 
    75         }else{ 
    76                 $sql.="nachnameoderfirma ILIKE $1 ";             
    77                 $sql.="ORDER BY p.nachnameoderfirma, p.vorname LIMIT $2 ;"; 
    78                 $v=array($match, $linelimit); 
    79         }  
    80         $res=pg_prepare("", $sql); 
    81         $res=pg_execute("", $v); 
    82         if (!$res) { 
    83                 echo "\n<p class='err'>Fehler bei Eigent&uuml;mer</p>"; 
    84                 return; 
    85         } 
    86         $cnt = 0; 
    87         while($row = pg_fetch_array($res)) { 
    88                 $nnam=htmlentities($row["nachnameoderfirma"], ENT_QUOTES, "UTF-8"); 
    89                 $vnam=htmlentities($row["vorname"], ENT_QUOTES, "UTF-8"); 
    90                 $gml=$row["gml_id"]; 
    91                 // Link zur Auskunft Person  +++ Icon differenzieren? Firma/Person 
    92                 echo "\n\t<a title='Nachweis' href='javascript:imFenster(\"".$auskpath."alkisnamstruk.php?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;gmlid=".$gml."\")'>"; 
    93                         echo "\n\t\t<img class='nwlink' src='ico/Eigentuemer.ico' width='16' height='16' alt='EIG'>"; 
    94                 echo "\n\t</a> ";                
    95                 echo "\n<a title='Person' href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;person=".$gml."&amp;name=".$nnam."'>".$nnam.", ".$vnam."</a>\n<br>"; 
    96                 $cnt++; 
    97         } 
    98         if($cnt == 0){  
    99                 echo "\n<p class='err'>Keine Person.</p>"; 
    100         } elseif($cnt >= $linelimit) { 
    101                 echo "\n<p title='Bitte den Namen eindeutiger qualifizieren'>... und weitere</p>"; 
    102         } elseif($cnt == 1){ // Eindeutig! 
    103                 $person = $gml; 
    104         } 
    105         return; 
    106 } 
    107  
    108 function getGBbyPerson() { 
    109 // 2 ================================= 
    110 // GrundbÃŒcher zur gewÀhlten Person 
    111 // =================================== 
    112         global $gkz, $gemeinde, $epsg, $con, $name, $person, $gb, $auskpath; 
    113         $linelimit=120; 
     43<a title="zur&uuml;ck" href='javascript:history.back()'> 
     44        <img src="ico/zurueck.ico" width="16" height="16" alt="&lt;&lt;" /> 
     45</a> 
     46<dfn class='title' id='transaktiontitle'></dfn> 
     47 
     48END; 
     49 
     50// Einen Link generieren, um nach anderen Personen mit gleichem Familiennamen zu suchen 
     51function familiensuche() { 
     52        global $gkz, $gemeinde, $epsg, $name; // $debug 
    11453        if(isset($name)) { // Familiensuche 
    11554                echo "\n<div class='back' title='Andere Personen mit diesem Nachnamen'>"; 
     
    11857                echo "\n</div>\n<br>";   
    11958        } 
    120         $sql="SELECT p.nachnameoderfirma, p.vorname, p.geburtsdatum, p.namensbestandteil, "; 
     59        return; 
     60} 
     61 
     62// Adresse und Geburtsdatum der aktuellen Person ausgeben 
     63function personendaten() { 
     64        global $gkz, $gemeinde, $epsg, $name, $person, $blattgml, $auskpath; // $debug 
     65        $sql ="SELECT p.nachnameoderfirma, p.vorname, p.geburtsdatum, p.namensbestandteil, "; 
    12166        $sql.="a.ort_post, a.postleitzahlpostzustellung AS plz, a.strasse, a.hausnummer "; 
    12267        $sql.="FROM ax_person p "; 
    123         $sql.="JOIN alkis_beziehungen b ON p.gml_id=b.beziehung_von "; 
    124         $sql.="JOIN ax_anschrift a ON a.gml_id=b.beziehung_zu "; 
    125         $sql.="WHERE p.gml_id= $1 AND b.beziehungsart='hat';";   
     68        $sql.="LEFT JOIN alkis_beziehungen b ON p.gml_id=b.beziehung_von "; 
     69        $sql.="LEFT JOIN ax_anschrift a ON a.gml_id=b.beziehung_zu "; 
     70        #sql.="WHERE p.gml_id= $1 AND b.beziehungsart='hat';";  // passt nicht zum LEFT 
     71        $sql.="WHERE p.gml_id= $1 ;";    
    12672        $v=array($person); 
    12773        $res=pg_prepare("", $sql); 
    12874        $res=pg_execute("", $v); 
    129         if (!$res) {echo "\n<p class='err'>Fehler bei Name</p>\n";} 
    130         // Daten der Person 
     75        if (!$res) { 
     76                echo "\n<p class='err'>Fehler bei Name</p>\n"; 
     77        } 
    13178        echo "\n\t<table>\n\t<tr>\n\t\t<td valign='top'>"; 
    13279                // Sp. 1: Icon, Link zur Auskunft Person 
     
    14895                } 
    14996        echo "\n\t</p></td></tr>\n\t</table>"; 
    150  
     97        return; 
     98} 
     99 
     100function getEigByName() { 
     101// 1 ============================= 
     102// Eigentuemer nach Name(-nsanfang) 
     103// =============================== 
     104        global $gkz, $gemeinde, $epsg, $name, $person, $gfilter, $auskpath; 
     105        $linelimit=150; 
     106 
     107        $arr = explode(",", $name); 
     108        $name0 = trim($arr[0]); 
     109        $name1 = trim($arr[1]); 
     110        if(preg_match("/\*/",$name0)){ 
     111                $match = trim(preg_replace("/\*/i","%", strtoupper($name0))); 
     112        } else { 
     113                $match = trim($name0)."%"; 
     114        }        
     115        if(preg_match("/\*/",$name1)){ 
     116                $match1 = trim(preg_replace("/\*/i","%", strtoupper($name1))); 
     117        } else { 
     118                $match1 = trim($name1)."%"; 
     119        }                
     120        $sql ="SELECT p.nachnameoderfirma, p.vorname, p.gml_id FROM ax_person p "; 
     121        if ($gfilter > 0) { 
     122                $sql.="JOIN gemeinde_person g ON p.gml_id = g.person WHERE "; 
     123                switch ($gfilter) { 
     124                        case 1: // Einzelwert 
     125                                $sql.="g.gemeinde=".$gemeinde." AND "; break; 
     126                        case 2: // Liste 
     127                                $sql.="g.gemeinde in (".$gemeinde.") AND "; break; 
     128                } 
     129        } else { 
     130                $sql.="WHERE "; 
     131        } 
     132        if($match1 != '%'){ 
     133                $sql.="nachnameoderfirma ILIKE $1 AND p.vorname ILIKE $2 ";              
     134                $sql.="ORDER BY p.nachnameoderfirma, p.vorname LIMIT $3 ;"; 
     135                $v=array($match, $match1, $linelimit); 
     136        }else{ 
     137                $sql.="nachnameoderfirma ILIKE $1 ";             
     138                $sql.="ORDER BY p.nachnameoderfirma, p.vorname LIMIT $2 ;"; 
     139                $v=array($match, $linelimit); 
     140        }  
     141        $res=pg_prepare("", $sql); 
     142        $res=pg_execute("", $v); 
     143        if (!$res) { 
     144                echo "\n<p class='err'>Fehler bei Eigent&uuml;mer</p>"; 
     145                return; 
     146        } 
     147        $cnt = 0; 
     148        while($row = pg_fetch_array($res)) { 
     149                $nnam=htmlentities($row["nachnameoderfirma"], ENT_QUOTES, "UTF-8"); 
     150                $vnam=htmlentities($row["vorname"], ENT_QUOTES, "UTF-8"); 
     151                $gml=$row["gml_id"]; 
     152                // Link zur Auskunft Person  +++ Icon differenzieren? Firma/Person 
     153                echo "\n<br>\n\t<a title='Nachweis' href='javascript:imFenster(\"".$auskpath."alkisnamstruk.php?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;gmlid=".$gml."\")'>"; 
     154                        echo "\n\t\t<img class='nwlink' src='ico/Eigentuemer.ico' width='16' height='16' alt='EIG'>"; 
     155                echo "\n\t</a> ";                
     156                echo "\n<a title='Person' href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;person=".$gml."&amp;name=".$nnam."'>".$nnam.", ".$vnam."</a>"; 
     157                $cnt++; 
     158        } 
     159        if($cnt == 0){  
     160                echo "\n<p class='anz'>Kein Eigent&uuml;mer gefunden.</p>"; 
     161        } elseif($cnt >= $linelimit) { // das Limit war zu knapp 
     162                echo "\n<p class='anz' title='Bitte den Namen eindeutiger qualifizieren'>... und weitere</p>"; 
     163        } elseif($cnt == 1){ // Eindeutig! 
     164                $person = $gml; 
     165        } else { 
     166                echo "\n<p class='anz'>".$cnt." Eigent&uuml;mer mit '".$name."'</p>";   // im Limit 
     167        } 
     168        return; 
     169} 
     170 
     171function getGBbyPerson() { 
     172// 2 ================================= 
     173// GrundbÃŒcher zur gewÀhlten Person 
     174// =================================== 
     175// Es wird in dieser Function nicht geprÃŒft, ob die gefundenen GrundbÃŒcher auch FlurstÃŒcke 
     176// haben, die im gefilterten Bereich (Gemeinde) liegen. Es können daher Sackgassen entstehen, 
     177// also GrundbÃŒcher, die in der nÀchsten Stufe bei Filterung nicht zu Treffern fÃŒhren. 
     178// Das Joinen bis zum FS unter BerÃŒcksichtigung von speziellen Buchungen ist zu aufwÀndig. 
     179// Dann kann entweder das FS gleich mit ausgegeben werden -> getGBuFSbyPerson. 
     180// Alternativ wÃŒrde eine Hilfstabelle benötigt, in der im PostProcessing  
     181// das GB-zu-Gemeinde-VerhÀltnis vorbereitet wird. 
     182        global $gkz, $gemeinde, $epsg, $name, $person, $blattgml, $auskpath, $debug, $bltbez, $bltblatt, $bltseite; 
     183        $linelimit=150; 
     184        $linelimit=15;  // +++ TEST +++  
     185        familiensuche(); 
     186        personendaten(); 
     187        #if ($debug > 0) {echo "\n<p>Nur Grundb&uuml;cher</p>"; } 
    151188        // Suche nach GrundbÃŒchern der Person 
    152         $sql ="SELECT g.gml_id AS gml_g, g.buchungsblattnummermitbuchstabenerweiterung as nr, b.bezeichnung AS beznam "; 
     189        $sql ="SELECT gb.gml_id AS gml_g, gb.buchungsblattnummermitbuchstabenerweiterung as blatt, b.bezeichnung AS beznam "; 
    153190        $sql.="FROM alkis_beziehungen bpn "; 
    154191        $sql.="JOIN ax_namensnummer n ON bpn.beziehung_von=n.gml_id "; 
    155192        $sql.="JOIN alkis_beziehungen bng ON n.gml_id=bng.beziehung_von "; 
    156         $sql.="JOIN ax_buchungsblatt g ON bng.beziehung_zu=g.gml_id "; 
    157         $sql.="JOIN ax_buchungsblattbezirk b ON g.land = b.land AND g.bezirk = b.bezirk "; 
     193        $sql.="JOIN ax_buchungsblatt gb ON bng.beziehung_zu=gb.gml_id "; 
     194        $sql.="JOIN ax_buchungsblattbezirk b ON gb.land = b.land AND gb.bezirk = b.bezirk "; 
    158195        $sql.="WHERE bpn.beziehung_zu= $1 AND bpn.beziehungsart='benennt' AND bng.beziehungsart='istBestandteilVon' "; 
    159         $sql.="ORDER BY g.bezirk, g.buchungsblattnummermitbuchstabenerweiterung LIMIT $2 ;"; 
     196        if ($bltbez.$bltblatt != "") { // BlÀttern, Fortsetzen bei ... 
     197                $sql.="AND ((b.bezeichnung > '".$bltbez."') "; 
     198                $sql.="OR (b.bezeichnung = '".$bltbez."' AND gb.buchungsblattnummermitbuchstabenerweiterung > '".$bltblatt."')) "; 
     199        } 
     200        $sql.="ORDER BY b.bezeichnung, gb.buchungsblattnummermitbuchstabenerweiterung LIMIT $2 ;"; 
     201 
     202        if ($bltseite == "") { // Seite 1 
     203                $bltseite = 1; 
     204        } else { // Folgeseite 
     205                echo "\n<p class='ein'>Teil ".$bltseite; 
     206        } 
    160207        $v=array($person, $linelimit); 
    161208        $res=pg_prepare("", $sql); 
     
    169216                $gml=$row["gml_g"]; 
    170217                $beznam=$row["beznam"]; 
    171                 $nr=$row["nr"]; 
     218                $blatt=$row["blatt"]; 
    172219                echo "\n<div class='gb'>"; 
    173220                        echo "\n\t<a title='Nachweis' href='javascript:imFenster(\"".$auskpath."alkisbestnw.php?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;gmlid=".$gml."\")'>"; 
    174221                                echo "\n\t\t<img class='nwlink' src='ico/GBBlatt_link.ico' width='16' height='16' alt='GB'>"; 
    175222                        echo "\n\t</a> ";                
    176                         echo "\n\t".$beznam."<a title='Grundbuch' href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;gb=".$gml."&amp;person=".$person."'> Blatt ".$nr."&nbsp;</a>"; 
     223                        echo "\n\t".$beznam."<a title='Grundbuch' href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;blattgml=".$gml."&amp;person=".$person."'> Blatt ".$blatt."&nbsp;</a>"; 
    177224                echo "\n</div>"; 
    178225                $cnt++; 
    179226        } 
    180         if($cnt == 0){  
    181                 echo "\n<p class='err'>Kein Grundbuch.</p>"; 
     227        if($cnt == 0) {  
     228                echo "\n<p class='anz'>Kein Grundbuch zum Eigent&uuml;mer</p>"; 
    182229        } elseif($cnt >= $linelimit) { 
    183                 echo "\n<p>... und weitere</p>"; 
    184         } elseif($cnt == 1){ // Eindeutig! 
    185                 $gb=$gml; // dann Stufe 3 gleich nachschieben 
     230                echo "\n<p class='blt'>".$cnt." Grundb. zum Eigent."; 
     231                $nxtbltbez=urlencode($beznam); 
     232                $nxtbltblatt=urlencode($blatt); 
     233                $nxtbltseite=$bltseite + 1; 
     234                echo "\n - <a class='blt' href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;person=".$person."&amp;bltbez=".$nxtbltbez."&amp;bltblatt=".$nxtbltblatt."&amp;bltseite=".$nxtbltseite."' "; 
     235                echo "title='Bl&auml;ttern ab ".htmlentities($beznam)." Blatt ".$blatt."'>weitere</a>"; 
     236                echo "</p>"; 
     237        } elseif($cnt == 1) { // Eindeutig! 
     238                $blattgml=$gml; // dann Stufe 3 gleich nachschieben 
     239        } else { 
     240                echo "\n<p class='anz'>".$cnt." Grundb&uuml;cher zum Eigent&uuml;mer</p>"; 
    186241        } 
    187242        return; 
    188243} 
    189          
     244 
    190245function getFSbyGB($backlink) { 
    191246// 3 ================================= 
    192247// FlurstÃŒcke zum gewÀhlten Grundbuch 
    193248// =================================== 
    194         global $gkz, $gemeinde, $con, $name, $person, $gb, $scalefs, $auskpath, $epsg, $gfilter, $persfilter; 
    195         $linelimit=120; 
    196  
    197         if($backlink) {  
     249// Zu einem Grundbuch (gml_id als Parameter) werden alle darauf gebuchten FlurstÃŒcke gesucht. 
     250// Im ersten Schritt sind das direkt gebuchten FlurstÃŒcke. 
     251// Im zweiten Schritt wird gesucht nach Rechten einer Buchungstelle des durchsuchten Blattes an anderen 
     252// Buchungstellen. Es werden dann die FlurstÃŒcke darauf gelistet. 
     253        global $gkz, $gemeinde, $name, $person, $blattgml, $scalefs, $auskpath, $epsg, $gfilter, $debug; 
     254        $linelimit=150; 
     255        if($backlink) { // Erneuter Ansatz bei Person oder GB möglich. 
     256 
     257                // Namen ermitteln 
     258                $sql ="SELECT nachnameoderfirma, vorname FROM ax_person WHERE gml_id = $1 "; 
     259                $v=array($person); 
     260                $res=pg_prepare("", $sql); 
     261                $res=pg_execute("", $v); 
     262                if (!$res) { 
     263                        echo "\n<p class='err'>Fehler bei Eigent&uuml;mer</p>"; 
     264                } 
     265                $row = pg_fetch_array($res); // nur eine Zeile 
     266                $nnam=htmlentities($row["nachnameoderfirma"], ENT_QUOTES, "UTF-8"); 
     267                $vnam=htmlentities($row["vorname"], ENT_QUOTES, "UTF-8"); 
    198268                echo "\n\t<div class='back' title='zur&uuml;ck zur Person'>"; 
    199269                        echo "\n\t\t<img class='nwlink' src='ico/Eigentuemer.ico' width='16' height='16' alt='EIG'> "; 
    200270                        echo "\n\t<a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;person=".$person."'>"; 
    201                         echo "zur&uuml;ck</a><br>";              
     271                        echo $nnam.", ".$vnam."</a><br>";                
    202272                echo "</div>"; 
     273 
     274                // Grundbuch-Daten ermitteln 
     275                $sql ="SELECT gb.gml_id AS gml_g, gb.buchungsblattnummermitbuchstabenerweiterung as blatt, b.bezeichnung AS beznam "; 
     276                $sql.="FROM ax_buchungsblatt gb JOIN ax_buchungsblattbezirk b ON gb.land = b.land AND gb.bezirk = b.bezirk "; 
     277                $sql.="WHERE gb.gml_id= $1 ;"; 
     278                $v=array($blattgml); 
     279                $res=pg_prepare("", $sql); 
     280                $res=pg_execute("", $v); 
     281                if (!$res) { 
     282                        echo "\n<p class='err'>Fehler bei Grundbuch</p>"; 
     283                } 
     284                $row = pg_fetch_array($res); // nur eine Zeile 
     285                $gml=$row["gml_g"]; 
     286                $beznam=$row["beznam"]; 
     287                $blatt=$row["blatt"]; 
    203288                echo "<div class='gb'>"; 
    204                         echo "\n\t<a title='Nachweis' href='javascript:imFenster(\"".$auskpath."alkisbestnw.php?gkz=".$gkz."&amp;gmlid=".$gb."\")'>"; 
     289                        echo "\n\t<a title='Nachweis' href='javascript:imFenster(\"".$auskpath."alkisbestnw.php?gkz=".$gkz."&amp;gmlid=".$blattgml."\")'>"; 
    205290                                echo "\n\t\t<img class='nwlink' src='ico/GBBlatt_link.ico' width='16' height='16' alt='GB'>"; 
    206                         echo "\n\t</a> Grundbuch"; 
     291                        echo "\n\t</a>&nbsp;".$beznam." Blatt ".$blatt; 
    207292                echo "</div>";   
    208293        } 
    209294 
     295        GB_Buchung_FS($linelimit); // Externe Function: Blatt > GrundstÃŒck > Flurst. 
     296         
     297        return; 
     298} 
     299 
     300function getGBuFSbyPerson() { 
     301// 2 + 3 ========================================= 
     302// GrundbÃŒcher UND FlurstÃŒcke zur gewÀhlten Person 
     303// =============================================== 
     304// Dies ist die Kombination von Stufe 2 (GrundbÃŒcher zur Person) und 3 (FlurstÃŒcke zum Grundbuch)  
     305// in einem einzelnen Schritt. Wenn auf Gemeinde gefiltert wird, dann können in Stufe 2 (noch ohne Filter) 
     306// auch GrundbÃŒcher gefunden werden, die dann auf Stufe 3 (mit Filter) keine FS liefern ("Sackgasse"!). 
     307// Wenn aber per JOIN "GB -> FS -> Gemarkung -> Gemeinde" geprÃŒft wird, dann können  
     308// die Daten ja auch gleich ausgegeben werden. 
     309// FÃŒr FÀlle in denen nicht nach Gemeinde gefiltert wird (z.B. ganzer Kreis) kann weiter  
     310// Stufe 2 und 3 nacheinander verwendet werden. Dies ist wahrscheinlich ÃŒbersichtlicher,  
     311// weil "ungefiltert" in "2+3" zu lange Listen entstehen wÃŒrden, die durchblÀttert werden mÃŒssen.  
     312        global $gkz, $gemeinde, $epsg, $name, $person, $blattgml, $auskpath, $scalefs, $gfilter, $debug, $bltbez, $bltblatt, $bltbvnr, $bltseite, $bltrecht; 
     313        $linelimit=80; // als Limit "Anzahl FlurstÃŒcke" in den beiden folgenden Abfragen 
     314        // darf nun etwas knapper sein, weil man jetzt blÀttern kann 
     315        familiensuche(); 
     316        personendaten(); 
     317 
     318        // Wenn das Limit ÃŒberschritten wurde: zusÀtzliche Parameter "blt"=BlÀttern 
     319        // $bltbez   = Bezirk-Name   
     320        // $bltblatt = BlattMitBuchstabe 
     321        // $bltbvnr  = lfd.Nr der Buchungsstelle 
     322        // $bltseite = fortlaufende Seiten-Nr 
     323        // $bltrecht = "nur"/"ohne" liefert nur den abgebrochene Teil der Auflistung  
     324 
    210325        // SQL-Bausteine vorbereiten 
    211         $sql1 ="SELECT s1.laufendenummer AS lfd, f.gml_id, f.flurnummer, f.zaehler, f.nenner, f.gemeinde, "; 
     326        //  Direkte Buchungen suchen mit:  $sql1 +         $sqla1 + $sql2 
     327        //  SonderfÀlle suchen mit:        $sql1 + $sqlz + $sqla2 + $sql2 
     328 
     329        // Baustein: SQL-Anfang fuer beide Varianten 
     330        $sql1 ="SELECT gb.gml_id AS gml_g, gb.buchungsblattnummermitbuchstabenerweiterung as blatt, b.bezeichnung AS beznam, "; 
     331        $sql1.="s1.laufendenummer AS lfd, f.gml_id, f.flurnummer, f.zaehler, f.nenner, f.gemeinde, ot.gemarkung, ot.gemarkungsname, "; 
    212332        if($epsg == "25832") { // Transform nicht notwendig 
    213333                $sql1.="st_x(st_centroid(f.wkb_geometry)) AS x, "; 
    214                 $sql1.="st_y(st_centroid(f.wkb_geometry)) AS y, "; 
     334                $sql1.="st_y(st_centroid(f.wkb_geometry)) AS y "; 
    215335        } else {   
    216336                $sql1.="st_x(st_transform(st_centroid(f.wkb_geometry), ".$epsg.")) AS x, "; 
    217                 $sql1.="st_y(st_transform(st_centroid(f.wkb_geometry), ".$epsg.")) AS y, ";                      
    218         } 
    219         $sql1.="g.gemarkungsnummer, g.bezeichnung "; 
    220    $sql1.="FROM alkis_beziehungen vbg "; 
    221         $sql1.="JOIN ax_buchungsstelle s1 ON vbg.beziehung_von = s1.gml_id ";  
    222  
    223         // Zwischen-JOIN (zusÀtzlich nur bei zweiter Abfrage) 
    224         $sqlz ="JOIN alkis_beziehungen vss ON vss.beziehung_von = s1.gml_id "; 
    225         $sqlz.="JOIN ax_buchungsstelle s2 ON vss.beziehung_zu = s2.gml_id "; 
    226  
    227         $sqla1 ="JOIN alkis_beziehungen vfb ON s1.gml_id = vfb.beziehung_zu "; 
    228         $sqla2 ="JOIN alkis_beziehungen vfb ON s2.gml_id = vfb.beziehung_zu "; 
    229  
    230         $sql2.="JOIN ax_flurstueck f  ON vfb.beziehung_von = f.gml_id "; 
    231    $sql2.="JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer "; 
    232  
    233         if ($persfilter and ($gfilter > 0)) { 
    234                 $sql2.="JOIN gemeinde_gemarkung v ON g.land=v.land AND g.gemarkungsnummer=v.gemarkung "; 
    235         } 
    236  
    237         $sql2.="WHERE vbg.beziehung_zu= $1 AND vbg.beziehungsart='istBestandteilVon' AND vfb.beziehungsart='istGebucht' "; 
    238  
    239         if ($persfilter and ($gfilter > 0)) { 
    240                 switch ($gfilter) { 
    241                         case 1: // Einzelwert 
    242                                 $sql2.="AND v.gemeinde=".$gemeinde." "; break; 
    243                         case 2: // Liste 
    244                                 $sql2.="AND v.gemeinde in (".$gemeinde.") "; break; 
    245                 } 
    246         } 
    247         $sql2.="ORDER BY s1.laufendenummer, f.gemarkungsnummer, f.flurnummer, f.zaehler, f.nenner LIMIT $2 ;"; 
    248  
    249         // Blatt <vbg/istBestandteilVon<  Buchungsstelle <vfb/istGebucht< Flurstck. 
    250         $sql=$sql1.$sqla1.$sql2; // Direkte Buchungen 
    251  
    252         $v=array($gb, $linelimit); 
    253         $res=pg_prepare("", $sql); 
    254         $res=pg_execute("", $v); 
    255         if (!$res) { 
    256                 echo "\n<p class='err'>Fehler bei Buchung und Flurst&uuml;ck.</p>"; 
    257                 if ($debug >= 3) {echo "\n<p class='err'>".$sql."</p>";} 
    258                 return; 
    259         } 
    260         $zfs1=0; 
    261         while($row = pg_fetch_array($res)) {     
    262                 $fs_gml=$row["gml_id"]; 
    263                 $bvnr=$row["lfd"]; 
    264                 if ($bvnr > 0) {$bvnr=str_pad($bvnr, 4, "0", STR_PAD_LEFT);} else {$bvnr="";} 
    265                 $gmkg=$row["bezeichnung"]; 
    266                 $flur=$row["flurnummer"]; 
    267                 $fskenn=$row["zaehler"]; 
    268                 if ($row["nenner"] != "") {$fskenn.="/".$row["nenner"];} // Bruchnummer 
    269                 $x=$row["x"]; 
    270                 $y=$row["y"]; 
    271                 echo "\n<div class='fs'>"; 
    272                         echo "\n\t<a title='Nachweis' href='javascript:imFenster(\"".$auskpath."alkisfsnw.php?gkz=".$gkz."&amp;gmlid=".$fs_gml."\")'>"; 
    273                                 echo "\n\t\t<img class='nwlink' src='ico/Flurstueck_Link.ico' width='16' height='16' alt='FS'>"; 
    274                         echo "\n\t</a> ";        
    275                         echo "\n\tFlst. <a title='Flurst&uuml;ck positionieren 1:".$scalefs."' href='"; 
    276                                         echo "javascript:parent.parent.parent.mb_repaintScale(\"mapframe1\",".$x.",".$y.",".$scalefs."); "; 
    277                                         echo "parent.parent.showHighlight(".$x.",".$y.");' "; 
    278                                 echo "onmouseover='parent.parent.showHighlight(".$x.",".$y.")' "; 
    279                                 echo "onmouseout='parent.parent.hideHighlight()'>"; 
    280                         echo $bvnr." ".$gmkg." ".$flur."-".$fskenn."</a>"; 
    281                 echo "\n</div>"; 
    282                 $zfs1++; 
    283         } 
    284  
    285         // Zweite Abfrage (Variante) aus den Bausteinen zusammen bauen 
    286         // buchungsStelle2 < an < buchungsStelle1 
    287         $sql=$sql1.$sqlz.$sqla2.$sql2; // Rechte an 
    288  
    289         $v=array($gb, $linelimit); 
    290         $res=pg_prepare("", $sql); 
    291         $res=pg_execute("", $v); 
    292         if (!$res) { 
    293                 echo "\n<p class='err'>Fehler bei Recht an Buchung.</p>"; 
    294                 if ($debug >= 3) {echo "\n<p class='err'>".$sql."</p>";} 
    295                 return; 
    296         } 
    297         $zfs2=0; 
    298         while($row = pg_fetch_array($res)) {     
    299                 $fs_gml=$row["gml_id"]; 
    300                 $bvnr=$row["lfd"]; 
    301                 if ($bvnr > 0) {$bvnr=str_pad($bvnr, 4, "0", STR_PAD_LEFT);} else {$bvnr="";} 
    302                 $gmkg=$row["bezeichnung"]; 
    303                 $flur=$row["flurnummer"]; 
    304                 $fskenn=$row["zaehler"]; 
    305                 if ($row["nenner"] != "") {$fskenn.="/".$row["nenner"];} // Bruchnummer 
    306                 $x=$row["x"]; 
    307                 $y=$row["y"]; 
    308                 echo "\n<div class='fs'>"; 
    309                         echo "\n\t<a title='Nachweis' href='javascript:imFenster(\"".$auskpath."alkisfsnw.php?gkz=".$gkz."&amp;gmlid=".$fs_gml."\")'>"; 
    310                                 echo "\n\t\t<img class='nwlink' src='ico/Flurstueck_Link.ico' width='16' height='16' alt='FS'>"; 
    311                         echo "\n\t</a> ";        
    312                         echo "\n\tRecht an <a title='Flurst&uuml;ck positionieren 1:".$scalefs."' href='"; 
    313                                         echo "javascript:parent.parent.parent.mb_repaintScale(\"mapframe1\",".$x.",".$y.",".$scalefs."); "; 
    314                                         echo "parent.parent.showHighlight(".$x.",".$y.");' "; 
    315                                 echo "onmouseover='parent.parent.showHighlight(".$x.",".$y.")' "; 
    316                                 echo "onmouseout='parent.parent.hideHighlight()'>"; 
    317                         echo $bvnr." ".$gmkg." ".$flur."-".$fskenn."</a>"; 
    318                 echo "\n</div>"; 
    319                 $zfs2++; 
    320         } 
    321  
    322         if($zfs1 + $zfs2 == 0) {  
    323                 echo "\n<p class='err'>Kein Flurst&uuml;ck im berechtigten Bereich.</p>"; 
    324         //      echo "\n<p class='hilfe'>Hinweis: Sonderf&auml;lle wie 'Erbbaurecht' sind noch nicht umgesetzt.</p>"; 
    325         } elseif($zfs >= $linelimit) { 
    326                 echo "\n<p>... und weitere</p>";  
    327         } 
     337                $sql1.="st_y(st_transform(st_centroid(f.wkb_geometry), ".$epsg.")) AS y ";                       
     338        } 
     339        $sql1.="FROM alkis_beziehungen bpn "; 
     340        $sql1.="JOIN ax_namensnummer nn ON bpn.beziehung_von=nn.gml_id "; 
     341        $sql1.="JOIN alkis_beziehungen bng ON nn.gml_id=bng.beziehung_von "; 
     342        $sql1.="JOIN ax_buchungsblatt gb ON bng.beziehung_zu=gb.gml_id "; 
     343   $sql1.="JOIN alkis_beziehungen vbg ON gb.gml_id=vbg.beziehung_zu "; 
     344        $sql1.="JOIN ax_buchungsstelle s1 ON vbg.beziehung_von=s1.gml_id "; 
     345        $sql1.="JOIN ax_buchungsblattbezirk b ON gb.land=b.land AND gb.bezirk=b.bezirk "; // quer-ab 
     346 
     347        // Baustein: Zwischen-JOIN (nur bei zweiter Abfrage) 
     348        $sqlz ="JOIN alkis_beziehungen vss ON vss.beziehung_von=s1.gml_id "; 
     349        $sqlz.="JOIN ax_buchungsstelle s2 ON vss.beziehung_zu=s2.gml_id "; 
     350 
     351        // Baustein: Auswahl 1 oder 2 
     352        $sqla1 ="JOIN alkis_beziehungen vfb ON s1.gml_id=vfb.beziehung_zu "; 
     353        $sqla2 ="JOIN alkis_beziehungen vfb ON s2.gml_id=vfb.beziehung_zu "; 
     354 
     355        // Baustein: SQL-Ende fuer beide Varianten 
     356        $sql2.="JOIN ax_flurstueck f ON vfb.beziehung_von=f.gml_id "; 
     357   $sql2.="JOIN pp_gemarkung ot ON f.land=ot.land AND f.gemarkungsnummer=ot.gemarkung "; // Ortsteil 
     358        $sql2.="WHERE bpn.beziehung_zu= $1 AND bpn.beziehungsart='benennt' AND bng.beziehungsart='istBestandteilVon' "; 
     359        $sql2.="AND vbg.beziehungsart='istBestandteilVon' AND vfb.beziehungsart='istGebucht' "; 
     360        switch ($gfilter) { // Gemeinde-Filter 
     361                case 1: // Einzelwert 
     362                        $sql2.="AND ot.gemeinde=".$gemeinde." "; break; 
     363                case 2: // Liste 
     364                        $sql2.="AND ot.gemeinde in (".$gemeinde.") "; break; 
     365        } 
     366        $sql3 ="ORDER BY gb.bezirk, gb.buchungsblattnummermitbuchstabenerweiterung, cast(s1.laufendenummer AS integer), f.gemarkungsnummer, f.flurnummer, f.zaehler, f.nenner LIMIT $2 ;"; 
     367        // Sortier-Problem: laufendenummer in varchar linksbÃŒndig 
     368 
     369        // Die Bausteine in 2 Varianten kombinieren 
     370 
     371        // BlÀttern mit folgenden Parametern: $bltbez, $bltblatt, $bltbvnr, $bltseite, $bltrecht 
     372        if ($bltbez.$bltblatt.$bltbvnr != "") { // BlÀttern, Fortsetzen bei ... 
     373                $bltwhere ="AND ((b.bezeichnung > '".$bltbez."') "; 
     374                $bltwhere.="OR (b.bezeichnung = '".$bltbez."' AND gb.buchungsblattnummermitbuchstabenerweiterung > '".$bltblatt."') "; 
     375                $bltwhere.="OR (b.bezeichnung = '".$bltbez."' AND gb.buchungsblattnummermitbuchstabenerweiterung = '".$bltblatt."' AND cast(s1.laufendenummer AS integer) >= ".$bltbvnr." )) "; 
     376        } // FlurstÃŒcke in der BVNR werden ggf. wiederholt 
     377 
     378        if ($bltseite == "") { // auf Seite 1 beide Teile ausgegeben 
     379                $bltseite = 1; 
     380        } else { // Folgegeseite: nur Teil 1 *oder* 2 
     381                echo "\n<p class='ein'>Teil ".$bltseite." - "; 
     382                switch ($bltrecht) { 
     383                        case "nur": 
     384                                echo "nur Rechte an .. Buchungen</p>"; break; 
     385                        case "ohne": 
     386                                echo "nur direkte Buchungen</p>"; break; 
     387                        default: 
     388                                echo "</p>"; break; 
     389                } 
     390        } 
     391 
     392        // FÀlle ohne "Rechte an" 
     393        if ($bltrecht != "nur") { // "nur"/"ohne" liefert nur den abgebrochene Teil der Auflistung 
     394                // Blatt <vbg/istBestandteilVon<  Buchungsstelle <vfb/istGebucht< Flurstck. 
     395                $sql=$sql1.$sqla1.$sql2.$bltwhere.$sql3; // Direkte Buchungen 
     396         
     397                $v=array($person, $linelimit); 
     398                $res=pg_prepare("", $sql); 
     399                $res=pg_execute("", $v); 
     400                if (!$res) { 
     401                        echo "\n<p class='err'>Fehler bei Buchung und Flurst&uuml;ck.</p>"; 
     402                        if ($debug >= 3) {echo "\n<p class='err'>".$sql."</p>";} 
     403                        return; 
     404                } 
     405                $zfs1=0; 
     406                $gwgb=""; 
     407                while($row = pg_fetch_array($res)) {     
     408                        $gb_gml=$row["gml_g"]; 
     409         
     410                        // Gruppenwechsel auf Ebene Grundbuch 
     411                        if ($gwgb != $gb_gml) { 
     412                                $beznam=$row["beznam"]; 
     413                                $blatt=$row["blatt"]; 
     414                                echo "\n<div class='gb'>"; // Ausgabe GB - B L A T T  
     415                                        echo "\n\t<a title='Nachweis' href='javascript:imFenster(\"".$auskpath."alkisbestnw.php?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;gmlid=".$gb_gml."\")'>"; 
     416                                                echo "\n\t\t<img class='nwlink' src='ico/GBBlatt_link.ico' width='16' height='16' alt='GB'>"; 
     417                                        echo "\n\t</a> ";                
     418                                        echo "\n\t".$beznam."<a title='Grundbuch' href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;blattgml=".$gb_gml."&amp;person=".$person."'> Blatt ".$blatt."&nbsp;</a>"; 
     419                                echo "\n</div>"; 
     420                                $gwgb = $gb_gml;        // Steuerg GW GB 
     421                                $gwbv = "";             // Steuerg GW BVNR 
     422                        } 
     423         
     424                        // Gruppenwechsel auf Ebene Buchungs-Stelle (BVNR) 
     425                        $bvnr=$row["lfd"]; 
     426                        if ($gwbv != $bvnr) { 
     427                                if ($bvnr == 0) { 
     428                                        $bvnra = "-"; 
     429                                } else { 
     430                                        $bvnra = str_pad($bvnr, 4, "0", STR_PAD_LEFT); // auf 4 Stellen 
     431                                } 
     432                                $gwbv = $bvnr; // Steuerg GW BVNR 
     433                                echo "\n<div class='gs' title='Grundst&uuml;ck'>"; 
     434                                echo "<img class='nwlink' src='ico/Grundstueck.ico' width='16' height='16' alt='GS'> "; 
     435                                echo "Buchung ".$bvnra."</div>"; 
     436                        } 
     437         
     438                        $fs_gml=$row["gml_id"]; 
     439                        $gmkg=$row["gemarkungsname"]; 
     440                        $flur=$row["flurnummer"]; 
     441                        $fskenn=$row["zaehler"]; 
     442                        if ($row["nenner"] != "") {$fskenn.="/".$row["nenner"];} // BruchNr 
     443                        $x=$row["x"]; 
     444                        $y=$row["y"]; 
     445                        echo "\n<div class='fs'>"; // F L U R S T Ü C K 
     446                                echo "\n\t<a title='Nachweis' href='javascript:imFenster(\"".$auskpath."alkisfsnw.php?gkz=".$gkz."&amp;gmlid=".$fs_gml."\")'>"; 
     447                                        echo "\n\t\t<img class='nwlink' src='ico/Flurstueck_Link.ico' width='16' height='16' alt='FS'>"; 
     448                                echo "\n\t</a> ";        
     449                                echo "\n\t".$gmkg." <a title='Flurst&uuml;ck positionieren 1:".$scalefs."' href='"; 
     450                                                echo "javascript:"; 
     451                                                echo "transtitle(\"auf Flurst&uuml;ck positioniert\"); "; 
     452                                                echo "parent.parent.parent.mb_repaintScale(\"mapframe1\",".$x.",".$y.",".$scalefs."); "; 
     453                                                echo "parent.parent.showHighlight(".$x.",".$y.");' "; 
     454                                        echo "onmouseover='parent.parent.showHighlight(".$x.",".$y.")' "; 
     455                                        echo "onmouseout='parent.parent.hideHighlight()'>"; 
     456                                echo " Flur ".$flur." ".$fskenn."</a>"; 
     457                        echo "\n</div>"; 
     458                        $zfs1++; 
     459                } 
     460                if($zfs1 == 0) { 
     461                        if ($bltrecht == "ohne") { 
     462                                echo "\n<p class='anz'>Keine direkte Buchung gefunden.</p>"; 
     463                                #if ($debug >= 3) {echo "\n<p class='dbg'>".$sql."</p>";} 
     464                        } 
     465                } elseif($zfs1 >= $linelimit) { // das Limit war zu knapp, das  B l À t t e r n  anbieten 
     466                        echo "\n<p class='blt'>".$zfs1." Flurst&uuml;cke"; 
     467                        $nxtbltbez=urlencode($beznam); 
     468                        $nxtbltblatt=urlencode($blatt); 
     469                        $nxtbltseite=$bltseite + 1; 
     470                        echo "\n - <a class='blt' href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;person=".$person."&amp;bltbez=".$nxtbltbez."&amp;bltblatt=".$nxtbltblatt."&amp;bltbvnr=".$bvnr."&amp;bltseite=".$nxtbltseite."&amp;bltrecht=ohne' "; 
     471                        echo "title='Bl&auml;ttern ab ".htmlentities($beznam)." Blatt ".$blatt." BVNR ".$bvnr."'>weitere</a>"; 
     472                        echo "</p>"; 
     473                } elseif($zfs1 > 1) { // Meldung (Plural) ab 2  
     474                        echo "\n<p class='anz'>".$zfs1." Flurst&uuml;cke zum Eigent&uuml;mer</p>"; // im Limit 
     475                } 
     476        }        
     477 
     478        if ($bltrecht == "" and $zfs1 > 0) { // beides 
     479                echo "<hr>"; // dann Trenner 
     480        } 
     481 
     482        // FÀlle mit "Rechte an" 
     483        if ($bltrecht != "ohne") { // "nur"/"ohne" liefert nur den abgebrochene Teil der Auflistung  
     484                // Zweite Abfrage (Variante) aus den Bausteinen zusammen bauen 
     485                // buchungsStelle2 < an < buchungsStelle1 
     486                $sql=$sql1.$sqlz.$sqla2.$sql2.$bltwhere.$sql3; // Rechte an 
     487                $v=array($person, $linelimit); 
     488                $res=pg_prepare("", $sql); 
     489                $res=pg_execute("", $v); 
     490                if (!$res) { 
     491                        echo "\n<p class='err'>Fehler bei Recht an Buchung.</p>"; 
     492                        if ($debug >= 3) {echo "\n<p class='dbg'>".$sql."</p>";} 
     493                        return; 
     494                } 
     495                $zfs2=0; 
     496                $gwgb=""; 
     497                while($row = pg_fetch_array($res)) {     
     498                        // Gruppenwechsel auf Ebene Grundbuch 
     499                        $gb_gml=$row["gml_g"]; 
     500                        if ($gwgb != $gb_gml) {  
     501                                $beznam=$row["beznam"]; 
     502                                $blatt=$row["blatt"]; 
     503                                echo "\n<div class='gb'>"; // Ausgabe GB 
     504                                        echo "\n\t<a title='Nachweis' href='javascript:imFenster(\"".$auskpath."alkisbestnw.php?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;gmlid=".$gb_gml."\")'>"; 
     505                                                echo "\n\t\t<img class='nwlink' src='ico/GBBlatt_link.ico' width='16' height='16' alt='GB'>"; 
     506                                        echo "\n\t</a> ";                
     507                                        echo "\n\t".$beznam."<a title='Grundbuch' href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;blattgml=".$gb_gml."&amp;person=".$person."'> Blatt ".$blatt."&nbsp;</a>"; 
     508                                echo "\n</div>"; 
     509                                $gwgb = $gb_gml;        // Steuerg GW GB 
     510                                $gwbv = "";             // Steuerg GW BVNR 
     511                        } 
     512 
     513                        // Gruppenwechsel auf Ebene Buchungs-Stelle (BVNR) 
     514                        $bvnr=$row["lfd"]; 
     515                        if ($gwbv != $bvnr) { 
     516                                if ($bvnr == 0) { 
     517                                        $bvnra = "-"; 
     518                                } else { 
     519                                        $bvnra = str_pad($bvnr, 4, "0", STR_PAD_LEFT); // auf 4 Stellen 
     520                                } 
     521                                $gwbv = $bvnr; // Steuerg GW BVNR 
     522                                echo "\n<div class='gs' title='Grundst&uuml;ck'>"; 
     523                                echo "<img class='nwlink' src='ico/Grundstueck.ico' width='16' height='16' alt='GS'> "; 
     524                                echo "Buchung ".$bvnra."</div>"; 
     525                        } 
     526 
     527                        $fs_gml=$row["gml_id"]; 
     528                        $gmkg=$row["gemarkungsname"]; 
     529                        $flur=$row["flurnummer"]; 
     530                        $fskenn=$row["zaehler"]; 
     531                        if ($row["nenner"] != "") {$fskenn.="/".$row["nenner"];} // Bruchnummer 
     532                        $x=$row["x"]; 
     533                        $y=$row["y"]; 
     534                        echo "\n<div class='fs'>"; 
     535                                echo "\n\t<a title='Nachweis' href='javascript:imFenster(\"".$auskpath."alkisfsnw.php?gkz=".$gkz."&amp;gmlid=".$fs_gml."\")'>"; 
     536                                        echo "\n\t\t<img class='nwlink' src='ico/Flurstueck_Link.ico' width='16' height='16' alt='FS'>"; 
     537                                echo "\n\t</a> ";        
     538                                echo "\n\tRecht an ".$gmkg." <a title='Flurst&uuml;ck positionieren 1:".$scalefs."' href='"; 
     539                                                echo "javascript:parent.parent.parent.mb_repaintScale(\"mapframe1\",".$x.",".$y.",".$scalefs."); "; 
     540                                                echo "parent.parent.showHighlight(".$x.",".$y.");' "; 
     541                                        echo "onmouseover='parent.parent.showHighlight(".$x.",".$y.")' "; 
     542                                        echo "onmouseout='parent.parent.hideHighlight()'>"; 
     543                                echo " Flur ".$flur." ".$fskenn."</a>"; 
     544                        echo "\n</div>"; 
     545                        $zfs2++; 
     546                } 
     547                if($zfs2 == 0) { 
     548                        if ($zfs1 == 0 or $bltrecht == "nur") { // keine Meldung wenn schon in Teil 1 eine Ausgabe 
     549                                echo "\n<p class='anz'>Keine Rechte an Buchungen.</p>"; 
     550                                #if ($debug >= 3) {echo "\n<p class='dbg'>".$sql."</p>";} 
     551                        } 
     552                } elseif($zfs2 >= $linelimit) { // das Limit war zu knapp, das  B l À t t e r n  anbieten 
     553                        echo "\n<p class='blt'>".$zfs2." Rechte an Flurst."; 
     554                        $nxtbltbez=urlencode($beznam); 
     555                        $nxtbltblatt=urlencode($blatt); 
     556                        $nxtbltseite=$bltseite + 1; 
     557                        echo "\n - <a class='blt' href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;person=".$person."&amp;bltbez=".$nxtbltbez."&amp;bltblatt=".$nxtbltblatt."&amp;bltbvnr=".$bvnr."&amp;bltseite=".$nxtbltseite."&amp;bltrecht=nur' "; 
     558                        echo "title='Bl&auml;ttern ab ".htmlentities($beznam)." Blatt ".$blatt." BVNR ".$bvnr."'>weitere</a>"; 
     559                        echo "</p>"; 
     560                } elseif($zfs2 > 1) { // ab 2 
     561                        echo "\n<p class='anz'>".$zfs2." Rechte an Flurst.</p>"; // im Limit             
     562                } 
     563        } // ENDE FÀlle mit "Rechte an" 
    328564        return; 
    329565} 
     
    332568// Start hier! 
    333569// =========== 
     570 
    334571// Parameter:   
    335572// 1. name   = Suche nach Namensanfang oder -bestandteil. 
    336573// 2. person = gml_id der Person      -> Suche nach GrundbÃŒchern 
    337574// 3. gb     = gml_id des Grundbuches -> Suche nach FlurstÃŒcken 
     575 
    338576if(isset($epsg)) { 
    339         if ($debug >= 2) {echo "<p>aktueller EPSG='".$epsg."'</p>";} // aus MB 
     577        #if ($debug >= 2) {echo "\n<p class='dbg'>aktueller EPSG='".$epsg."'</p>";} // aus MB 
    340578        $epsg = str_replace("EPSG:", "" , $_REQUEST["epsg"]);    
    341579} else { 
    342         if ($debug >= 1) {echo "<p class='err'>kein EPSG gesetzt</p>";}  
     580        #if ($debug >= 1) {echo "<p class='dbg'>kein EPSG gesetzt</p>";}         
    343581        $epsg=$gui_epsg; // aus Conf 
    344582} 
    345 if ($debug >= 2) {echo "<p>Filter Gemeinde = ".$gemeinde."</p>";} 
     583#if ($debug >= 2) {echo "\n<p class='dbg'>Filter Gemeinde = '".$gemeinde."'</p>";} 
    346584if ($gemeinde == "") { 
    347         $gfilter = 0; // ungefiltert 
     585        $gfilter = 0; // Gemeinde ungefiltert 
    348586} elseif(strpos($gemeinde, ",") === false) { 
    349         $gfilter = 1; // Einzelwert 
     587        $gfilter = 1; // Gemeinde Einzelwert 
    350588} else { 
    351         $gfilter = 2; // Liste 
    352 } 
    353  
    354 // Welche Parameter? 
    355 // 3. Stufe: FlurstÃŒcke zum Grundbuch 
    356 if(isset($gb)) { // gml_id 
     589        $gfilter = 2; // Gemeinde Filter-Liste 
     590} 
     591 
     592// Quo Vadis? 
     593if(isset($blattgml)) {          // 3. Stufe: FlurstÃŒcke zum Grundbuch 
     594 
    357595        // Das Programm hat sich selbst verlinkt aus einer Liste der GB zu einem EigentÃŒmer. 
    358596        // Wenn Parameter mitgegeben wurden, können diese fÃŒr einen "Link zurÃŒck" verwendet werden. 
    359         getFSbyGB(true); 
    360 } elseif(isset($person)) { // gml_id - 2. Stufe: GrundbÃŒcher zur Person 
     597        $trans="Flurst&uuml;cke zum Grundbuch"; 
     598        getFSbyGB(true);                                // mit BackLink 
     599 
     600} elseif(isset($person)) {      // 2. Stufe: GrundbÃŒcher zur Person 
    361601        // Das Programm hat sich selbst verlinkt aus einer Liste der Personen zu einer Suchmaske. 
    362         getGBbyPerson();  
    363         if(isset($gb) ) { getFSbyGB(false);} // Es wurde nur EIN Grundbuch zu der Person gefunden. 
    364 } elseif(isset($name)) { // Suchbegriff aus Form - 1. Stufe: Suche nach Name 
    365         getEigByName();  
    366         if(isset($person)) { getGBbyPerson();} 
     602        if ($debug >= 2) {echo "\n<p class='dbg'>Gemeinde-Filter-Steuerung = '".$gfilter."'</p>";} 
     603 
     604        // Die Filtereinstellung beeinflusst die Such-Strategie: 
     605        if ($gfilter == 0) {                    // Keine Filterung auf "Gemeinde": große Datenmenge 
     606 
     607                $trans="Grundb&uuml;cher zum Eigent&uuml;mer"; 
     608                getGBbyPerson(); 
     609                // Also schrittweise erst mal Stufe 2 = GrundbÃŒcher zur Person suchen. 
     610                // Diese Function hat auch noch keine Gemeinde-Filter-Funktion auf GB-Ebene. 
     611                                                                         
     612                if(isset($blattgml) ) { // Es wurde nur EIN Grundbuch zu der Person gefunden. 
     613                        $trans="1 Blatt zum Eigent&uuml;mer"; 
     614                        getFSbyGB(false);       // Dann dazu auch gleich die Stufe 3 hinterher, aber ohne Backlink. 
     615                }  
     616 
     617        } else {                                                // mit Filter auf Gemeinde: weniger Daten? 
     618 
     619                $trans="Grundb. und Flurst. zum Eigent&uuml;mer"; 
     620                getGBuFSbyPerson();             // Schritte 2+3 gleichzeitig, dabei Gemeinde-Filter auf Stufe 3 
     621        } 
     622 
     623} elseif(isset($name)) {        // Suchbegriff aus Form - 1. Stufe: Suche nach Name 
     624 
     625        $trans="Namensuche \"".$name."\""; 
     626        getEigByName();                         // Suchen nach Namensanfang 
     627 
     628        if(isset($person)) {            // genau EIN Treffer 
     629                $trans="1 Grundbuch zum Namen"; 
     630                getGBbyPerson();                // Dann gleich das Grundbuch hinterher 
     631        } 
     632 
    367633} elseif ($debug >= 2) { 
    368         echo "\n<p>Parameter?</p>"; // Programmfehler 
    369 } 
     634        echo "\n<p class='dbg'>Parameter?</p>"; // Programmfehler, soll nicht vorkommen 
     635} 
     636// Titel im Kopf anzeigen 
     637echo "\n<script type='text/javascript'>\n\ttranstitle('".$trans."')\n</script>"; 
     638 
    370639?> 
    371640 
Note: See TracChangeset for help on using the changeset viewer.