source: trunk/mapbender/http/nav/alkisnav_eig.php @ 284

Revision 284, 24.8 KB checked in by frank.jaeger, 11 years ago (diff)

Mapbender-Navigation verbessert.

RevLine 
[134]1<?php
[278]2/* Version vom
[276]3        2013-04-16 "import_request_variables" entfÀllt in PHP 5.4
[278]4        2013-04-26      Ersetzen View "gemeinde_gemarkung" durch Tabelle "pp_gemarkung".
5                                        Stufe 2: GB *und* FS mit einem Klick anzeigen.
6                                        BlÀtterfunktion (Folgeseiten) fÃŒr lange Listen.
7                                        Function extern gemeinsam genutzt in _eig und _grd.
8                                        Dazu Var-Namen harmonisieren: $gb wird $blattgml.
9                                        ZurÃŒck-Link, Titel der Transaktion anzeigen.
[282]10        2013-04-29      Darstellung mit IE
11        2013-05-07  Strukturierung des Programms, redundanten Code in Functions zusammen fassen
[284]12        2013-05-14  Hervorhebung aktuelles Objekt, Parameter "gbkennz" auswerten,
13                                        Title auch auf Icon, IE zeigt sonst alt= als Title dar.
[134]14*/
[276]15$cntget = extract($_GET);
[278]16include("../../conf/alkisnav_conf.php"); // Konfigurations-Einstellungen
17include("alkisnav_fkt.php"); // Funktionen
[134]18$con_string = "host=".$host." port=".$port." dbname=".$dbname.$dbvers.$gkz." user=".$user." password=".$password;
19$con = pg_connect ($con_string) or die ("<p class='err'>Fehler bei der Verbindung zur Datenbank</p>".$dbname.$dbvers.$gkz);
[278]20echo <<<END
[134]21<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
22<html>
23<head>
24        <meta http-equiv="cache-control" content="no-cache">
25        <meta http-equiv="pragma" content="no-cache">
26        <meta http-equiv="expires" content="0">
27        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
28        <title>ALKIS-Suche Eigent&uuml;mer</title>
[129]29        <link rel="stylesheet" type="text/css" href="alkisnav.css">
30        <script type="text/javascript">
31                function imFenster(dieURL) {
32                        var link = encodeURI(dieURL);
33                        window.open(link,'','left=10,top=10,width=620,height=800,resizable=yes,menubar=no,toolbar=no,location=no,status=no,scrollbars=yes');
34                }
[278]35                function transtitle(trans) {
36                        document.getElementById('transaktiontitle').innerHTML = trans;
37                }
[134]38        </script>
39</head>
[66]40<body>
[280]41<a href='javascript:history.back()'>
[282]42        <img src="ico/zurueck.ico" width="16" height="16" alt="&lt;&lt;" title="zur&uuml;ck">
[278]43</a>
44<dfn class='title' id='transaktiontitle'></dfn>
[66]45
[278]46END;
[134]47
[278]48// Einen Link generieren, um nach anderen Personen mit gleichem Familiennamen zu suchen
49function familiensuche() {
[282]50        global $gkz, $gemeinde, $epsg, $name;
[278]51        if(isset($name)) { // Familiensuche
52                echo "\n<div class='back' title='Andere Personen mit diesem Nachnamen'>";
[284]53                        echo "\n\t\t<img class='nwlink' src='ico/Eigentuemer_2.ico' width='16' height='16' alt='FAM' title='Andere Personen mit diesem Nachnamen'> ";
[278]54                        echo "\n<a class='back' href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;name=".$name."'>\"".$name."\"</a>";
55                echo "\n</div>\n<br>"; 
56        }
57        return;
58}
59
[282]60function personendaten() { // Adresse und Geburtsdatum der aktuellen Person ausgeben
[278]61        global $gkz, $gemeinde, $epsg, $name, $person, $blattgml, $auskpath; // $debug
62        $sql ="SELECT p.nachnameoderfirma, p.vorname, p.geburtsdatum, p.namensbestandteil, ";
63        $sql.="a.ort_post, a.postleitzahlpostzustellung AS plz, a.strasse, a.hausnummer ";
[282]64        $sql.="FROM ax_person p LEFT JOIN alkis_beziehungen b ON p.gml_id=b.beziehung_von ";
65        $sql.="LEFT JOIN ax_anschrift a ON a.gml_id=b.beziehung_zu WHERE p.gml_id= $1 ;";       
[278]66        $v=array($person);
67        $res=pg_prepare("", $sql);
68        $res=pg_execute("", $v);
[282]69        if (!$res) {echo "\n<p class='err'>Fehler bei Name</p>\n";}
[283]70        $row = pg_fetch_array($res);
71        $zeil1=$row["nachnameoderfirma"].", ".$row["vorname"];
72        $gebdat=$row["geburtsdatum"];
73        if ($gebdat != "") {$zeil1.= ", geb. ".$gebdat;}
74        $best=$row["namensbestandteil"];
75        if ($best != "") {$zeil1.= ", ".$best;}
76        $zeil1=htmlentities($zeil1, ENT_QUOTES, "UTF-8");
77
78        $zeil2=trim($row["plz"]." ".$row["ort_post"]);
79        if ($zeil2 != "") {
80                $zeil2="\n\t<br>".htmlentities($zeil2, ENT_QUOTES, "UTF-8");
81        }
82
83        $zeil3= trim($row["strasse"]." ".$row["hausnummer"]);
84        if ($zeil3 != "") {
85                $zeil3= "\n\t<br>".htmlentities($zeil3, ENT_QUOTES, "UTF-8");
86        }
87
88// Tabelle: Sp.1=Icon, Link zur Auskunft Person, Sp.2=Rahmen
89echo "
90<div class='pe aktuell'>
91<table>
92<tr>
93        <td valign='top'>
94                <a title='Nachweis' href='javascript:imFenster(\"".$auskpath."alkisnamstruk.php?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;gmlid=".$person."\")'>
[284]95                        <img class='nwlink' src='ico/Eigentuemer.ico' width='16' height='16' alt='EIG' title='Nachweis'>
[283]96                </a>
97        </td>
98        <td>
99                <p class='nam'>".$zeil1.$zeil2.$zeil3."</p>
100        </td>
101</tr>
102</table>
103</div>";
104return;
[278]105}
106
[66]107function getEigByName() {
[282]108        // 1 // Eigentuemer nach Name(-nsanfang)
109        global $gkz, $gemeinde, $epsg, $name, $person, $gfilter;
[278]110        $linelimit=150;
[135]111        $arr = explode(",", $name);
[134]112        $name0 = trim($arr[0]);
113        $name1 = trim($arr[1]);
114        if(preg_match("/\*/",$name0)){
115                $match = trim(preg_replace("/\*/i","%", strtoupper($name0)));
116        } else {
117                $match = trim($name0)."%";
[66]118        }       
[134]119        if(preg_match("/\*/",$name1)){
120                $match1 = trim(preg_replace("/\*/i","%", strtoupper($name1)));
121        } else {
122                $match1 = trim($name1)."%";
[135]123        }               
[140]124        $sql ="SELECT p.nachnameoderfirma, p.vorname, p.gml_id FROM ax_person p ";
[278]125        if ($gfilter > 0) {
[140]126                $sql.="JOIN gemeinde_person g ON p.gml_id = g.person WHERE ";
127                switch ($gfilter) {
128                        case 1: // Einzelwert
129                                $sql.="g.gemeinde=".$gemeinde." AND "; break;
130                        case 2: // Liste
131                                $sql.="g.gemeinde in (".$gemeinde.") AND "; break;
132                }
133        } else {
134                $sql.="WHERE ";
135        }
[134]136        if($match1 != '%'){
[140]137                $sql.="nachnameoderfirma ILIKE $1 AND p.vorname ILIKE $2 ";             
[134]138                $sql.="ORDER BY p.nachnameoderfirma, p.vorname LIMIT $3 ;";
139                $v=array($match, $match1, $linelimit);
140        }else{
[140]141                $sql.="nachnameoderfirma ILIKE $1 ";           
[134]142                $sql.="ORDER BY p.nachnameoderfirma, p.vorname LIMIT $2 ;";
143                $v=array($match, $linelimit);
144        }
[66]145        $res=pg_prepare("", $sql);
146        $res=pg_execute("", $v);
147        if (!$res) {
148                echo "\n<p class='err'>Fehler bei Eigent&uuml;mer</p>";
149                return;
150        }
[134]151        $cnt = 0;
[66]152        while($row = pg_fetch_array($res)) {
[282]153                $nachname=$row["nachnameoderfirma"];
154                $vorname=$row["vorname"];
155                $persongml=$row["gml_id"];
[283]156                zeile_person($persongml, $nachname, $vorname);
[134]157                $cnt++;
158        }
[66]159        if($cnt == 0){
[278]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>";
[66]163        } elseif($cnt == 1){ // Eindeutig!
[282]164                $person = $persongml;
[278]165        } else {
166                echo "\n<p class='anz'>".$cnt." Eigent&uuml;mer mit '".$name."'</p>";   // im Limit
[66]167        }
[134]168        return;
[66]169}
170
171function getGBbyPerson() {
[282]172        // 2 // GrundbÃŒcher zur gewÀhlten Person
[278]173// Es wird in dieser Function nicht geprÃŒft, ob die gefundenen GrundbÃŒcher auch FlurstÃŒcke
174// haben, die im gefilterten Bereich (Gemeinde) liegen. Es können daher Sackgassen entstehen,
175// also GrundbÌcher, die in der nÀchsten Stufe bei Filterung nicht zu Treffern fÌhren.
176// Das Joinen bis zum FS unter BerÌcksichtigung von speziellen Buchungen ist zu aufwÀndig.
177// Dann kann entweder das FS gleich mit ausgegeben werden -> getGBuFSbyPerson.
178// Alternativ wÌrde eine Hilfstabelle benötigt, in der im PostProcessing
179// das GB-zu-Gemeinde-VerhÀltnis vorbereitet wird.
[284]180        global $gkz, $gemeinde, $epsg, $name, $person, $blattgml, $debug, $bltbez, $bltblatt, $bltseite, $kennztyp, $zgbbez;
181        # $zblatt, $zblattn, $zblattz, $zbvnr;
[278]182        $linelimit=150;
[284]183
184        // Head
[278]185        familiensuche();
186        personendaten();
[284]187
188        // Body
[66]189        // Suche nach GrundbÃŒchern der Person
[284]190        $sql ="SELECT gb.gml_id AS gml_g, gb.buchungsblattnummermitbuchstabenerweiterung as blatt, b.bezirk, b.bezeichnung AS beznam ";
[66]191        $sql.="FROM alkis_beziehungen bpn ";
192        $sql.="JOIN ax_namensnummer n ON bpn.beziehung_von=n.gml_id ";
193        $sql.="JOIN alkis_beziehungen bng ON n.gml_id=bng.beziehung_von ";
[278]194        $sql.="JOIN ax_buchungsblatt gb ON bng.beziehung_zu=gb.gml_id ";
195        $sql.="JOIN ax_buchungsblattbezirk b ON gb.land = b.land AND gb.bezirk = b.bezirk ";
[66]196        $sql.="WHERE bpn.beziehung_zu= $1 AND bpn.beziehungsart='benennt' AND bng.beziehungsart='istBestandteilVon' ";
[284]197
198        // Parameter $gbkennz, z.B. nach Klick auf Zeile "Bezirk"
199        if ($kennztyp > 1) { // 2=Such Bezirk-Nummer, 3=Such Blatt, 4=Such Buchung BVNR
200                #if ($debug > 0) {echo "<p class='dbg'>Filter Bezirk '".$zgbbez."'<p>";}
201                $sql.="AND b.bezirk = ".$zgbbez." ";
202                $bezirkaktuell = true;
203        } else {
204                $bezirkaktuell = false;
205        }
206
[278]207        if ($bltbez.$bltblatt != "") { // BlÀttern, Fortsetzen bei ...
208                $sql.="AND ((b.bezeichnung > '".$bltbez."') ";
209                $sql.="OR (b.bezeichnung = '".$bltbez."' AND gb.buchungsblattnummermitbuchstabenerweiterung > '".$bltblatt."')) ";
210        }
[284]211
[278]212        $sql.="ORDER BY b.bezeichnung, gb.buchungsblattnummermitbuchstabenerweiterung LIMIT $2 ;";
213
214        if ($bltseite == "") { // Seite 1
215                $bltseite = 1;
216        } else { // Folgeseite
217                echo "\n<p class='ein'>Teil ".$bltseite;
218        }
[66]219        $v=array($person, $linelimit);
220        $res=pg_prepare("", $sql);
221        $res=pg_execute("", $v);
222        if (!$res) {
223                echo "\n<p class='err'>Fehler bei Grundbuch</p>";
224                return;
225        }
226        $cnt = 0;
[284]227        $gwbez="";
[66]228        while($row = pg_fetch_array($res)) {
[284]229                $beznr=$row["bezirk"];
230                if ($gwbez != $beznr) { // Gruppenwechsel Bezirk
231                        $beznam=$row["beznam"];
232                        $gwbez=$beznr;
233                        zeile_gbbez ($beznam, $beznr, $bezirkaktuell);
234                }
[66]235                $gml=$row["gml_g"];
[278]236                $blatt=$row["blatt"];
[283]237                zeile_blatt($zgbbez, $beznam, $gml, $blatt, false, $person, false);
[134]238                $cnt++;
239        }
[284]240
241        // Foot
[278]242        if($cnt == 0) {
243                echo "\n<p class='anz'>Kein Grundbuch zum Eigent&uuml;mer</p>";
[66]244        } elseif($cnt >= $linelimit) {
[278]245                echo "\n<p class='blt'>".$cnt." Grundb. zum Eigent.";
[284]246
247                // BlÀttern
[278]248                $nxtbltbez=urlencode($beznam);
249                $nxtbltblatt=urlencode($blatt);
250                $nxtbltseite=$bltseite + 1;
251                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."' ";
252                echo "title='Bl&auml;ttern ab ".htmlentities($beznam)." Blatt ".$blatt."'>weitere</a>";
253                echo "</p>";
254        } elseif($cnt == 1) { // Eindeutig!
255                $blattgml=$gml; // dann Stufe 3 gleich nachschieben
256        } else {
257                echo "\n<p class='anz'>".$cnt." Grundb&uuml;cher zum Eigent&uuml;mer</p>";
[66]258        }
259        return;
260}
[278]261
[66]262function getFSbyGB($backlink) {
[282]263        // 3 // FlurstÃŒcke zum Grundbuch
[278]264// Zu einem Grundbuch (gml_id als Parameter) werden alle darauf gebuchten FlurstÃŒcke gesucht.
265// Im ersten Schritt sind das direkt gebuchten FlurstÃŒcke.
266// Im zweiten Schritt wird gesucht nach Rechten einer Buchungstelle des durchsuchten Blattes an anderen
[282]267// Buchungstellen.
268        global $gkz, $gemeinde, $name, $person, $blattgml, $epsg, $gfilter, $debug;
[278]269        if($backlink) { // Erneuter Ansatz bei Person oder GB möglich.
[284]270
[278]271                // Namen ermitteln
272                $sql ="SELECT nachnameoderfirma, vorname FROM ax_person WHERE gml_id = $1 ";
273                $v=array($person);
274                $res=pg_prepare("", $sql);
275                $res=pg_execute("", $v);
[282]276                if (!$res) {echo "\n<p class='err'>Fehler bei Eigent&uuml;mer</p>";}
[278]277                $row = pg_fetch_array($res); // nur eine Zeile
[284]278                zeile_person($person, $row["nachnameoderfirma"], $row["vorname"]);
[282]279
[278]280                // Grundbuch-Daten ermitteln
[282]281                $sql ="SELECT gb.gml_id AS gml_g, gb.buchungsblattnummermitbuchstabenerweiterung as blatt, b.bezirk, b.bezeichnung AS beznam ";
282                $sql.="FROM ax_buchungsblatt gb JOIN ax_buchungsblattbezirk b ON gb.land=b.land AND gb.bezirk=b.bezirk ";
[284]283                $sql.="WHERE gb.gml_id= $1 LIMIT 1 ;";
[278]284                $v=array($blattgml);
285                $res=pg_prepare("", $sql);
286                $res=pg_execute("", $v);
[282]287                if (!$res) {echo "\n<p class='err'>Fehler bei Grundbuch</p>";}
288                $row = pg_fetch_array($res); // eine Zeile
[278]289                $gml=$row["gml_g"];
[282]290                $bezirk=$row["bezirk"];
[278]291                $beznam=$row["beznam"];
292                $blatt=$row["blatt"];
[284]293                zeile_gbbez ($beznam, $bezirk, false);
[283]294                zeile_blatt($bezirk, $beznam, $blattgml, $blatt, false, $person, true);
[66]295        }
[284]296        GB_Buchung_FS(250, ""); // Blatt > Grundst. > FS, max. 250, ohne Link "Buchung"
[278]297        return;
298}
299
300function getGBuFSbyPerson() {
[282]301        // 2 + 3 // GrundbÃŒcher UND FlurstÃŒcke zur gewÀhlten Person
[278]302// Dies ist die Kombination von Stufe 2 (GrundbÃŒcher zur Person) und 3 (FlurstÃŒcke zum Grundbuch)
303// in einem einzelnen Schritt. Wenn auf Gemeinde gefiltert wird, dann können in Stufe 2 (noch ohne Filter)
304// auch GrundbÃŒcher gefunden werden, die dann auf Stufe 3 (mit Filter) keine FS liefern ("Sackgasse"!).
305// Wenn aber per JOIN "GB -> FS -> Gemarkung -> Gemeinde" geprÌft wird, dann können
306// die Daten ja auch gleich ausgegeben werden.
307// FÌr FÀlle in denen nicht nach Gemeinde gefiltert wird (z.B. ganzer Kreis) kann weiter
308// Stufe 2 und 3 nacheinander verwendet werden. Dies ist wahrscheinlich ÃŒbersichtlicher,
309// weil "ungefiltert" in "2+3" zu lange Listen entstehen wÌrden, die durchblÀttert werden mÌssen.
[284]310        global $gkz, $gemeinde, $epsg, $name, $person, $blattgml, $gfilter, $debug, $bltbez, $bltblatt, $bltbvnr, $bltseite, $bltrecht, $kennztyp, $zgbbez;
[278]311        $linelimit=80; // als Limit "Anzahl FlurstÃŒcke" in den beiden folgenden Abfragen
312        // darf nun etwas knapper sein, weil man jetzt blÀttern kann
313        familiensuche();
314        personendaten();
315
316        // Wenn das Limit ÃŒberschritten wurde: zusÀtzliche Parameter "blt"=BlÀttern
317        // $bltbez   = Bezirk-Name 
318        // $bltblatt = BlattMitBuchstabe
319        // $bltbvnr  = lfd.Nr der Buchungsstelle
320        // $bltseite = fortlaufende Seiten-Nr
321        // $bltrecht = "nur"/"ohne" liefert nur den abgebrochene Teil der Auflistung
322
[140]323        // SQL-Bausteine vorbereiten
[278]324        //  Direkte Buchungen suchen mit:  $sql1 +         $sqla1 + $sql2
325        //  SonderfÀlle suchen mit:        $sql1 + $sqlz + $sqla2 + $sql2
326
327        // Baustein: SQL-Anfang fuer beide Varianten
[283]328        $sql1 ="SELECT gb.gml_id AS gml_g, gb.buchungsblattnummermitbuchstabenerweiterung as blatt, b.bezirk, b.bezeichnung AS beznam, ";
329        $sql1.="s1.gml_id as bsgml, s1.laufendenummer AS lfd, f.gml_id, f.flurnummer, f.zaehler, f.nenner, f.gemeinde, ot.gemarkung, ot.gemarkungsname, ";
[86]330        if($epsg == "25832") { // Transform nicht notwendig
[189]331                $sql1.="st_x(st_centroid(f.wkb_geometry)) AS x, ";
[278]332                $sql1.="st_y(st_centroid(f.wkb_geometry)) AS y ";
[86]333        } else { 
[189]334                $sql1.="st_x(st_transform(st_centroid(f.wkb_geometry), ".$epsg.")) AS x, ";
[278]335                $sql1.="st_y(st_transform(st_centroid(f.wkb_geometry), ".$epsg.")) AS y ";                     
[86]336        }
[278]337        $sql1.="FROM alkis_beziehungen bpn ";
338        $sql1.="JOIN ax_namensnummer nn ON bpn.beziehung_von=nn.gml_id ";
339        $sql1.="JOIN alkis_beziehungen bng ON nn.gml_id=bng.beziehung_von ";
340        $sql1.="JOIN ax_buchungsblatt gb ON bng.beziehung_zu=gb.gml_id ";
341   $sql1.="JOIN alkis_beziehungen vbg ON gb.gml_id=vbg.beziehung_zu ";
342        $sql1.="JOIN ax_buchungsstelle s1 ON vbg.beziehung_von=s1.gml_id ";
343        $sql1.="JOIN ax_buchungsblattbezirk b ON gb.land=b.land AND gb.bezirk=b.bezirk "; // quer-ab
[66]344
[278]345        // Baustein: Zwischen-JOIN (nur bei zweiter Abfrage)
346        $sqlz ="JOIN alkis_beziehungen vss ON vss.beziehung_von=s1.gml_id ";
347        $sqlz.="JOIN ax_buchungsstelle s2 ON vss.beziehung_zu=s2.gml_id ";
[140]348
[278]349        // Baustein: Auswahl 1 oder 2
350        $sqla1 ="JOIN alkis_beziehungen vfb ON s1.gml_id=vfb.beziehung_zu ";
351        $sqla2 ="JOIN alkis_beziehungen vfb ON s2.gml_id=vfb.beziehung_zu ";
[140]352
[278]353        // Baustein: SQL-Ende fuer beide Varianten
354        $sql2.="JOIN ax_flurstueck f ON vfb.beziehung_von=f.gml_id ";
355   $sql2.="JOIN pp_gemarkung ot ON f.land=ot.land AND f.gemarkungsnummer=ot.gemarkung "; // Ortsteil
356        $sql2.="WHERE bpn.beziehung_zu= $1 AND bpn.beziehungsart='benennt' AND bng.beziehungsart='istBestandteilVon' ";
357        $sql2.="AND vbg.beziehungsart='istBestandteilVon' AND vfb.beziehungsart='istGebucht' ";
[284]358
359        // Parameter $gbkennz nach Klick auf Zeile "Bezirk"
360        if ($kennztyp > 1) { // 2=Such Bezirk-Nummer, 3=Such Blatt, 4=Such Buchung BVNR
361                #if ($debug > 0) {echo "<p class='dbg'>Filter Bezirk '".$zgbbez."'<p>";}
362                $sql2.="AND b.bezirk = ".$zgbbez." ";
363                $bezirkaktuell = true;
364        } else {
365                $bezirkaktuell = false;
366        }
367
[278]368        switch ($gfilter) { // Gemeinde-Filter
369                case 1: // Einzelwert
370                        $sql2.="AND ot.gemeinde=".$gemeinde." "; break;
371                case 2: // Liste
372                        $sql2.="AND ot.gemeinde in (".$gemeinde.") "; break;
[140]373        }
[283]374        $sql3 ="ORDER BY b.bezirk, gb.buchungsblattnummermitbuchstabenerweiterung, cast(s1.laufendenummer AS integer), f.gemarkungsnummer, f.flurnummer, f.zaehler, f.nenner LIMIT $2 ;";
[278]375        // Sortier-Problem: laufendenummer in varchar linksbÃŒndig
[140]376
[278]377        // Die Bausteine in 2 Varianten kombinieren
[140]378
[278]379        // BlÀttern mit folgenden Parametern: $bltbez, $bltblatt, $bltbvnr, $bltseite, $bltrecht
380        if ($bltbez.$bltblatt.$bltbvnr != "") { // BlÀttern, Fortsetzen bei ...
381                $bltwhere ="AND ((b.bezeichnung > '".$bltbez."') ";
382                $bltwhere.="OR (b.bezeichnung = '".$bltbez."' AND gb.buchungsblattnummermitbuchstabenerweiterung > '".$bltblatt."') ";
383                $bltwhere.="OR (b.bezeichnung = '".$bltbez."' AND gb.buchungsblattnummermitbuchstabenerweiterung = '".$bltblatt."' AND cast(s1.laufendenummer AS integer) >= ".$bltbvnr." )) ";
[282]384        } // FlurstÃŒcke in der angeblÀtterten BVNR werden ggf. wiederholt
[278]385
386        if ($bltseite == "") { // auf Seite 1 beide Teile ausgegeben
387                $bltseite = 1;
388        } else { // Folgegeseite: nur Teil 1 *oder* 2
389                echo "\n<p class='ein'>Teil ".$bltseite." - ";
390                switch ($bltrecht) {
391                        case "nur":
392                                echo "nur Rechte an .. Buchungen</p>"; break;
393                        case "ohne":
394                                echo "nur direkte Buchungen</p>"; break;
395                        default:
396                                echo "</p>"; break;
[140]397                }
398        }
399
[278]400        // FÀlle ohne "Rechte an"
401        if ($bltrecht != "nur") { // "nur"/"ohne" liefert nur den abgebrochene Teil der Auflistung
402                // Blatt <vbg/istBestandteilVon<  Buchungsstelle <vfb/istGebucht< Flurstck.
403                $sql=$sql1.$sqla1.$sql2.$bltwhere.$sql3; // Direkte Buchungen
404                $v=array($person, $linelimit);
405                $res=pg_prepare("", $sql);
406                $res=pg_execute("", $v);
407                if (!$res) {
408                        echo "\n<p class='err'>Fehler bei Buchung und Flurst&uuml;ck.</p>";
409                        return;
410                }
411                $zfs1=0;
[283]412                $gwbez="";
413                while($row = pg_fetch_array($res)) {
414                        $bezirk=$row["bezirk"];
415                        if ($gwbez != $bezirk) { // Gruppierung Bezirk
416                                $gwbez=$bezirk;
417                                $beznam=$row["beznam"];
418                                $gwgb="";
[284]419                                zeile_gbbez($beznam, $gwbez, $bezirkaktuell);
[283]420                        }
[278]421                        $gb_gml=$row["gml_g"];
[282]422                        if ($gwgb != $gb_gml) { // Gruppierung Blatt (Grundbuch)
[278]423                                $blatt=$row["blatt"];
[283]424                                zeile_blatt($bezirk, $beznam, $gb_gml, $blatt, false, $person, false);
[278]425                                $gwgb = $gb_gml;        // Steuerg GW GB
426                                $gwbv = "";             // Steuerg GW BVNR
427                        }
428                        $bvnr=$row["lfd"];
[282]429                        if ($gwbv != $bvnr) { // Gruppierung Buchung (BVNR)
430                                $gwbv = $bvnr;
[283]431                                $bsgml=$row["bsgml"];
[284]432                                zeile_buchung($bsgml, $bvnr, "", false, false); //ohne Link
[278]433                        }
434                        $fs_gml=$row["gml_id"];
435                        $gmkg=$row["gemarkungsname"];
436                        $flur=$row["flurnummer"];
437                        $fskenn=$row["zaehler"];
438                        if ($row["nenner"] != "") {$fskenn.="/".$row["nenner"];} // BruchNr
[283]439                        zeile_flurstueck($fs_gml, $fskenn, $row["x"], $row["y"], $gmkg, $flur, false);
[278]440                        $zfs1++;
441                }
442                if($zfs1 == 0) {
[282]443                        if ($bltrecht == "ohne") {echo "\n<p class='anz'>Keine direkte Buchung gefunden.</p>";}
[284]444                } elseif($zfs1 >= $linelimit) { // das Limit war zu knapp
445                        echo "\n<p class='blt'>";
446                        if ($bltseite > 1) {echo "weitere ";}
447                        echo $zfs1." Flurst&uuml;cke";
448                        // B l À t t e r n  (eine Folgeseite anbieten)
[278]449                        $nxtbltbez=urlencode($beznam);
450                        $nxtbltblatt=urlencode($blatt);
451                        $nxtbltseite=$bltseite + 1;
[284]452                        echo "\n - <a class='blt' href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;person=".$person;
453                        echo "&amp;gbkennz=".$zgbbez; // Filter Bezirk
454                        echo "&amp;bltbez=".$nxtbltbez."&amp;bltblatt=".$nxtbltblatt."&amp;bltbvnr=".$bvnr."&amp;bltseite=".$nxtbltseite."&amp;bltrecht=ohne' ";
[278]455                        echo "title='Bl&auml;ttern ab ".htmlentities($beznam)." Blatt ".$blatt." BVNR ".$bvnr."'>weitere</a>";
456                        echo "</p>";
[284]457                } elseif($zfs1 > 1) { // Meldung (Plural) ab 2, im Limit
458                        echo "\n<p class='anz'>";
459                        if ($bltseite > 1) {echo "weitere ";}
460                        echo $zfs1;
461                        if ($kennztyp > 1) {
462                                echo " Flurst. zum Eigent. im GB-Bezirk</p>";
463                        } else {
464                                echo " Flurst&uuml;cke zum Eigent&uuml;mer</p>";
465                        }
[278]466                }
467        }       
468        if ($bltrecht == "" and $zfs1 > 0) { // beides
469                echo "<hr>"; // dann Trenner
[66]470        }
[140]471
[278]472        // FÀlle mit "Rechte an"
473        if ($bltrecht != "ohne") { // "nur"/"ohne" liefert nur den abgebrochene Teil der Auflistung
474                // Zweite Abfrage (Variante) aus den Bausteinen zusammen bauen
475                // buchungsStelle2 < an < buchungsStelle1
476                $sql=$sql1.$sqlz.$sqla2.$sql2.$bltwhere.$sql3; // Rechte an
477                $v=array($person, $linelimit);
478                $res=pg_prepare("", $sql);
479                $res=pg_execute("", $v);
480                if (!$res) {
481                        echo "\n<p class='err'>Fehler bei Recht an Buchung.</p>";
482                        return;
483                }
484                $zfs2=0;
[284]485                $gwbez="";
486                #gwgb="";
[278]487                while($row = pg_fetch_array($res)) {   
[284]488                        $bezirk=$row["bezirk"];
489                        if ($gwbez != $bezirk) { // Gruppierung Bezirk
490                                $gwbez=$bezirk;
491                                $beznam=$row["beznam"];
492                                $gwgb="";
493                                zeile_gbbez($beznam, $gwbez, $bezirkaktuell);
494                        }
[278]495                        $gb_gml=$row["gml_g"];
[282]496                        if ($gwgb != $gb_gml) {  // Gruppierung Blatt (Grundbuch)
[278]497                                $beznam=$row["beznam"];
498                                $blatt=$row["blatt"];
[283]499                                zeile_blatt ($bezirk, $beznam, $gb_gml, $blatt, false, $person, false);
[278]500                                $gwgb = $gb_gml;        // Steuerg GW GB
501                                $gwbv = "";             // Steuerg GW BVNR
502                        }
503                        $bvnr=$row["lfd"];
[282]504                        if ($gwbv != $bvnr) { // Gruppierung Buchungs (BVNR)
505                                $gwbv = $bvnr;
[283]506                                $bsgml=$row["bsgml"];
507                                zeile_buchung($bsgml, $bvnr, "", true, false); // Recht an ...  // ohne Link!
508                        #       zeile_buchung($bsgml, $bvnr, $bezirk."-".$blatt, true, false); // Recht an ...
[278]509                        }
510                        $fs_gml=$row["gml_id"];
511                        $gmkg=$row["gemarkungsname"];
512                        $flur=$row["flurnummer"];
513                        $fskenn=$row["zaehler"];
[282]514                        if ($row["nenner"] != "") {$fskenn.="/".$row["nenner"];}
[278]515                        $x=$row["x"];
516                        $y=$row["y"];
[283]517                        zeile_flurstueck ($fs_gml, $fskenn, $x, $y, $gmkg, $flur, false);
[278]518                        $zfs2++;
519                }
520                if($zfs2 == 0) {
521                        if ($zfs1 == 0 or $bltrecht == "nur") { // keine Meldung wenn schon in Teil 1 eine Ausgabe
522                                echo "\n<p class='anz'>Keine Rechte an Buchungen.</p>";
523                        }
524                } elseif($zfs2 >= $linelimit) { // das Limit war zu knapp, das  B l À t t e r n  anbieten
[284]525                        echo "\n<p class='blt'>";
526                        if ($bltseite > 1) {echo "weitere ";}
527                        echo $zfs2." Rechte an Flurst.";
[278]528                        $nxtbltbez=urlencode($beznam);
529                        $nxtbltblatt=urlencode($blatt);
530                        $nxtbltseite=$bltseite + 1;
[284]531                        echo "\n - <a class='blt' href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;person=".$person;
532                        echo "&amp;gbkennz=".$zgbbez; // Filter Bezirk
533                        echo "&amp;bltbez=".$nxtbltbez."&amp;bltblatt=".$nxtbltblatt."&amp;bltbvnr=".$bvnr."&amp;bltseite=".$nxtbltseite."&amp;bltrecht=nur' ";
[278]534                        echo "title='Bl&auml;ttern ab ".htmlentities($beznam)." Blatt ".$blatt." BVNR ".$bvnr."'>weitere</a>";
535                        echo "</p>";
536                } elseif($zfs2 > 1) { // ab 2
[284]537                        echo "\n<p class='anz'>";
538                        if ($bltseite > 1) {echo "weitere ";}
539                        echo $zfs2." Rechte an Flurst.</p>"; // im Limit               
[278]540                }
541        } // ENDE FÀlle mit "Rechte an"
[66]542        return;
543}
544
545// ===========
546// Start hier!
547// ===========
548// Parameter: 
549// 1. name   = Suche nach Namensanfang oder -bestandteil.
550// 2. person = gml_id der Person      -> Suche nach GrundbÃŒchern
551// 3. gb     = gml_id des Grundbuches -> Suche nach FlurstÃŒcken
[278]552
[66]553if(isset($epsg)) {
[86]554        $epsg = str_replace("EPSG:", "" , $_REQUEST["epsg"]);   
[66]555} else {
556        $epsg=$gui_epsg; // aus Conf
557}
[140]558if ($gemeinde == "") {
[278]559        $gfilter = 0; // Gemeinde ungefiltert
[140]560} elseif(strpos($gemeinde, ",") === false) {
[278]561        $gfilter = 1; // Gemeinde Einzelwert
[140]562} else {
[278]563        $gfilter = 2; // Gemeinde Filter-Liste
[140]564}
[284]565
566$kennztyp=ZerlegungGBKennz($gbkennz); // Grundbuch-Kennzeichen aus Parameter zerlegen: $z__
567// 2=Such Bezirk-Nummer, 3=Such Blatt, 4=Such Buchung BVNR
[66]568
[278]569// Quo Vadis?
[283]570if($blattgml != "") {           // FlurstÃŒcke zum Grundbuch
[278]571
[66]572        // Das Programm hat sich selbst verlinkt aus einer Liste der GB zu einem EigentÃŒmer.
573        // Wenn Parameter mitgegeben wurden, können diese fÃŒr einen "Link zurÃŒck" verwendet werden.
[278]574        $trans="Flurst&uuml;cke zum Grundbuch";
575        getFSbyGB(true);                                // mit BackLink
576
[283]577} elseif($person != "") {               // GrundbÃŒcher zur Person
[66]578        // Das Programm hat sich selbst verlinkt aus einer Liste der Personen zu einer Suchmaske.
[278]579        if ($debug >= 2) {echo "\n<p class='dbg'>Gemeinde-Filter-Steuerung = '".$gfilter."'</p>";}
580
581        // Die Filtereinstellung beeinflusst die Such-Strategie:
582        if ($gfilter == 0) {                    // Keine Filterung auf "Gemeinde": große Datenmenge
[284]583                if ($kennztyp > 1) {
584                        $trans = "Grundb&uuml;cher in ".$zgbbez." von .."; // Filter GB-Bez
585                } else {
586                        $trans = "Grundb&uuml;cher von .."; // Name steht darunter
587                }
[278]588                getGBbyPerson();
589                // Also schrittweise erst mal Stufe 2 = GrundbÃŒcher zur Person suchen.
590                if(isset($blattgml) ) { // Es wurde nur EIN Grundbuch zu der Person gefunden.
[284]591                        $trans = "1 Blatt zum Eigent&uuml;mer";
[278]592                        getFSbyGB(false);       // Dann dazu auch gleich die Stufe 3 hinterher, aber ohne Backlink.
[284]593                }
[278]594        } else {                                                // mit Filter auf Gemeinde: weniger Daten?
[284]595                if ($kennztyp > 1) {
596                        #trans="Grundb. und Flurst. in ".$zgbbez." von .. "; // zu lang
597                        $trans="Grdb. und Flst. von .. in .."; // Filter GB-Bez,
598                        // darunter sind dann Name und Bezirk farblich markiert
599                } else {
600                        $trans="Grundb. und Flurst. von .."; // der EigentÃŒmer steht darunter
601                }
[278]602                getGBuFSbyPerson();             // Schritte 2+3 gleichzeitig, dabei Gemeinde-Filter auf Stufe 3
603        }
604
[283]605} elseif(isset($name)) {                // Suchbegriff aus Form: Suche nach Name
[278]606
607        $trans="Namensuche \"".$name."\"";
[283]608        getEigByName();                                 // Suchen nach Namensanfang
[278]609
[283]610        if($person != "") {                     // genau EIN Treffer zum Namen
[282]611                if ($gfilter == 0) {
612                        $trans="Grundb&uuml;cher zum Namen";
613                        getGBbyPerson();                // Dann gleich das Grundbuch hinterher
614                } else {
615                        $trans="Grdb. und Flst. zum Namen";
616                        getGBuFSbyPerson();     // .. oder auch GB + FS
617                }
[278]618        }
619
[283]620} elseif ($debug >= 1) {
621        $trans="falscher Aufruf";
622        echo "\n<p class='dbg'>Parameter?</p>"; // sollte nicht vorkommen
[66]623}
[278]624// Titel im Kopf anzeigen
[283]625echo "
626<script type='text/javascript'>
627        transtitle('".$trans."');
628</script>";
[278]629
[66]630?>
[134]631
632</body>
[66]633</html>
Note: See TracBrowser for help on using the repository browser.