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

Revision 315, 24.7 KB checked in by frank.jaeger, 10 years ago (diff)

Feinschliff und Korrektur an Auskunft und Navigation

Line 
1<?php
2/* Version vom
3        2013-04-16 "import_request_variables" entfÀllt in PHP 5.4
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.
10        2013-04-29      Darstellung mit IE
11        2013-05-07  Strukturierung des Programms, redundanten Code in Functions zusammen fassen
12        2013-05-14  Hervorhebung aktuelles Objekt, Parameter "gbkennz" auswerten,
13                                Title auch auf Icon, IE zeigt sonst alt= als Title dar.
14*/
15$cntget = extract($_GET);
16include("../../conf/alkisnav_conf.php"); // Konfigurations-Einstellungen
17include("alkisnav_fkt.php"); // Funktionen
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);
20echo <<<END
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>
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                }
35                function transtitle(trans) {
36                        document.getElementById('transaktiontitle').innerHTML = trans;
37                }
38        </script>
39</head>
40<body>
41<a href='javascript:history.back()'>
42        <img src="ico/zurueck.ico" width="16" height="16" alt="&lt;&lt;" title="zur&uuml;ck">
43</a>
44<dfn class='title' id='transaktiontitle'></dfn>
45
46END;
47
48// Einen Link generieren, um nach anderen Personen mit gleichem Familiennamen zu suchen
49function familiensuche() {
50        global $gkz, $gemeinde, $epsg, $name;
51        if(isset($name)) { // Familiensuche
52                echo "\n<div class='back' title='Andere Personen mit diesem Nachnamen'>";
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'> ";
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
60function personendaten() { // Adresse und Geburtsdatum der aktuellen Person ausgeben
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 ";
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 ;";       
66        $v=array($person);
67        $res=pg_prepare("", $sql);
68        $res=pg_execute("", $v);
69        if (!$res) {echo "\n<p class='err'>Fehler bei Name</p>\n";}
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."\")'>
95                        <img class='nwlink' src='ico/Eigentuemer.ico' width='16' height='16' alt='EIG' title='Nachweis'>
96                </a>
97        </td>
98        <td>
99                <p class='nam'>".$zeil1.$zeil2.$zeil3."</p>
100        </td>
101</tr>
102</table>
103</div>";
104return;
105}
106
107function getEigByName() {
108        // 1 // Eigentuemer nach Name(-nsanfang)
109        global $gkz, $gemeinde, $epsg, $name, $person, $gfilter;
110        $linelimit=150;
111        $arr = explode(",", $name);
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)."%";
118        }       
119        if(preg_match("/\*/",$name1)){
120                $match1 = trim(preg_replace("/\*/i","%", strtoupper($name1)));
121        } else {
122                $match1 = trim($name1)."%";
123        }               
124        $sql ="SELECT p.nachnameoderfirma, p.vorname, p.gml_id FROM ax_person p ";
125        if ($gfilter > 0) {
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        }
136        if($match1 != '%'){
137                $sql.="nachnameoderfirma ILIKE $1 AND p.vorname ILIKE $2 ";             
138                $sql.="ORDER BY p.nachnameoderfirma, p.vorname LIMIT $3 ;";
139                $v=array($match, $match1, $linelimit);
140        }else{
141                $sql.="nachnameoderfirma ILIKE $1 ";           
142                $sql.="ORDER BY p.nachnameoderfirma, p.vorname LIMIT $2 ;";
143                $v=array($match, $linelimit);
144        }
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        }
151        $cnt = 0;
152        while($row = pg_fetch_array($res)) {
153                $nachname=$row["nachnameoderfirma"];
154                $vorname=$row["vorname"];
155                $persongml=$row["gml_id"];
156                zeile_person($persongml, $nachname, $vorname);
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 = $persongml;
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 // GrundbÃŒcher zur gewÀhlten Person
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.
180        global $gkz, $gemeinde, $epsg, $name, $person, $blattgml, $debug, $bltbez, $bltblatt, $bltseite, $kennztyp, $zgbbez;
181        # $zblatt, $zblattn, $zblattz, $zbvnr;
182        $linelimit=150;
183
184        // Head
185        familiensuche();
186        personendaten();
187
188        // Body
189        // Suche nach GrundbÃŒchern der Person
190        $sql ="SELECT gb.gml_id AS gml_g, gb.buchungsblattnummermitbuchstabenerweiterung as blatt, b.bezirk, b.bezeichnung AS beznam ";
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 ";
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 ";
196        $sql.="WHERE bpn.beziehung_zu= $1 AND bpn.beziehungsart='benennt' AND bng.beziehungsart='istBestandteilVon' ";
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
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        }
211
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        }
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;
227        $gwbez="";
228        while($row = pg_fetch_array($res)) {
229                $beznr=$row["bezirk"];
230                if ($gwbez != $beznr) { // Gruppenwechsel Bezirk
231                        $beznam=$row["beznam"];
232                        $gwbez=$beznr;
233                        zeile_gbbez ($beznam, $beznr, $bezirkaktuell);
234                }
235                $gml=$row["gml_g"];
236                $blatt=$row["blatt"];
237                zeile_blatt($zgbbez, $beznam, $gml, $blatt, false, $person, false);
238                $cnt++;
239        }
240
241        // Foot
242        if($cnt == 0) {
243                echo "\n<p class='anz'>Kein Grundbuch zum Eigent&uuml;mer</p>";
244        } elseif($cnt >= $linelimit) {
245                echo "\n<p class='blt'>".$cnt." Grundb. zum Eigent.";
246
247                // BlÀttern
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>";
258        }
259        return;
260}
261
262function getFSbyGB($backlink) {
263        // 3 // FlurstÃŒcke zum Grundbuch
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
267// Buchungstellen.
268        global $gkz, $gemeinde, $name, $person, $blattgml, $epsg, $gfilter, $debug;
269        if($backlink) { // Erneuter Ansatz bei Person oder GB möglich.
270
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);
276                if (!$res) {echo "\n<p class='err'>Fehler bei Eigent&uuml;mer</p>";}
277                $row = pg_fetch_array($res); // nur eine Zeile
278                zeile_person($person, $row["nachnameoderfirma"], $row["vorname"]);
279
280                // Grundbuch-Daten ermitteln
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 ";
283                $sql.="WHERE gb.gml_id= $1 LIMIT 1 ;";
284                $v=array($blattgml);
285                $res=pg_prepare("", $sql);
286                $res=pg_execute("", $v);
287                if (!$res) {echo "\n<p class='err'>Fehler bei Grundbuch</p>";}
288                $row = pg_fetch_array($res); // eine Zeile
289                $gml=$row["gml_g"];
290                $bezirk=$row["bezirk"];
291                $beznam=$row["beznam"];
292                $blatt=$row["blatt"];
293                zeile_gbbez ($beznam, $bezirk, false);
294                zeile_blatt($bezirk, $beznam, $blattgml, $blatt, false, $person, true);
295        }
296        GB_Buchung_FS(250, ""); // Blatt > Grundst. > FS, max. 250, ohne Link "Buchung"
297        return;
298}
299
300function getGBuFSbyPerson() {
301        // 2 + 3 // GrundbÃŒcher UND FlurstÃŒcke zur gewÀhlten Person
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.
310        global $gkz, $gemeinde, $epsg, $name, $person, $blattgml, $gfilter, $debug, $bltbez, $bltblatt, $bltbvnr, $bltseite, $bltrecht, $kennztyp, $zgbbez;
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
323        // SQL-Bausteine vorbereiten
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
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, ";
330        if($epsg == "25832") { // Transform nicht notwendig
331                $sql1.="st_x(st_centroid(f.wkb_geometry)) AS x, ";
332                $sql1.="st_y(st_centroid(f.wkb_geometry)) AS y ";
333        } else { 
334                $sql1.="st_x(st_transform(st_centroid(f.wkb_geometry), ".$epsg.")) AS x, ";
335                $sql1.="st_y(st_transform(st_centroid(f.wkb_geometry), ".$epsg.")) AS y ";                     
336        }
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
344
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 ";
348
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 ";
352
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' ";
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
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;
373        }
374        $sql3 ="ORDER BY b.bezirk, gb.buchungsblattnummermitbuchstabenerweiterung, cast(s1.laufendenummer AS integer), f.gemarkungsnummer, f.flurnummer, f.zaehler, f.nenner LIMIT $2 ;";
375        // Sortier-Problem: laufendenummer in varchar linksbÃŒndig
376
377        // Die Bausteine in 2 Varianten kombinieren
378
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." )) ";
384        } // FlurstÃŒcke in der angeblÀtterten BVNR werden ggf. wiederholt
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;
397                }
398        }
399
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;
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="";
419                                zeile_gbbez($beznam, $gwbez, $bezirkaktuell);
420                        }
421                        $gb_gml=$row["gml_g"];
422                        if ($gwgb != $gb_gml) { // Gruppierung Blatt (Grundbuch)
423                                $blatt=$row["blatt"];
424                                zeile_blatt($bezirk, $beznam, $gb_gml, $blatt, false, $person, false);
425                                $gwgb = $gb_gml;        // Steuerg GW GB
426                                $gwbv = "";             // Steuerg GW BVNR
427                        }
428                        $bvnr=$row["lfd"];
429                        if ($gwbv != $bvnr) { // Gruppierung Buchung (BVNR)
430                                $gwbv = $bvnr;
431                                $bsgml=$row["bsgml"];
432                                zeile_buchung($bsgml, $bvnr, "", false, false); //ohne Link
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
439                        zeile_flurstueck($fs_gml, $fskenn, $row["x"], $row["y"], $gmkg, $flur, false);
440                        $zfs1++;
441                }
442                if($zfs1 == 0) {
443                        if ($bltrecht == "ohne") {echo "\n<p class='anz'>Keine direkte Buchung gefunden.</p>";}
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)
449                        $nxtbltbez=urlencode($beznam);
450                        $nxtbltblatt=urlencode($blatt);
451                        $nxtbltseite=$bltseite + 1;
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' ";
455                        echo "title='Bl&auml;ttern ab ".htmlentities($beznam)." Blatt ".$blatt." BVNR ".$bvnr."'>weitere</a>";
456                        echo "</p>";
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                        }
466                }
467        }       
468        if ($bltrecht == "" and $zfs1 > 0) { // beides
469                echo "<hr>"; // dann Trenner
470        }
471
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;
485                $gwbez="";
486                #gwgb="";
487                while($row = pg_fetch_array($res)) {   
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                        }
495                        $gb_gml=$row["gml_g"];
496                        if ($gwgb != $gb_gml) {  // Gruppierung Blatt (Grundbuch)
497                                $beznam=$row["beznam"];
498                                $blatt=$row["blatt"];
499                                zeile_blatt ($bezirk, $beznam, $gb_gml, $blatt, false, $person, false);
500                                $gwgb = $gb_gml;        // Steuerg GW GB
501                                $gwbv = "";             // Steuerg GW BVNR
502                        }
503                        $bvnr=$row["lfd"];
504                        if ($gwbv != $bvnr) { // Gruppierung Buchungs (BVNR)
505                                $gwbv = $bvnr;
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 ...
509                        }
510                        $fs_gml=$row["gml_id"];
511                        $gmkg=$row["gemarkungsname"];
512                        $flur=$row["flurnummer"];
513                        $fskenn=$row["zaehler"];
514                        if ($row["nenner"] != "") {$fskenn.="/".$row["nenner"];}
515                        $x=$row["x"];
516                        $y=$row["y"];
517                        zeile_flurstueck ($fs_gml, $fskenn, $x, $y, $gmkg, $flur, false);
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
525                        echo "\n<p class='blt'>";
526                        if ($bltseite > 1) {echo "weitere ";}
527                        echo $zfs2." Rechte an Flurst.";
528                        $nxtbltbez=urlencode($beznam);
529                        $nxtbltblatt=urlencode($blatt);
530                        $nxtbltseite=$bltseite + 1;
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' ";
534                        echo "title='Bl&auml;ttern ab ".htmlentities($beznam)." Blatt ".$blatt." BVNR ".$bvnr."'>weitere</a>";
535                        echo "</p>";
536                } elseif($zfs2 > 1) { // ab 2
537                        echo "\n<p class='anz'>";
538                        if ($bltseite > 1) {echo "weitere ";}
539                        echo $zfs2." Rechte an Flurst.</p>"; // im Limit               
540                }
541        } // ENDE FÀlle mit "Rechte an"
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
552
553if(isset($epsg)) {
554        $epsg = str_replace("EPSG:", "" , $_REQUEST["epsg"]);   
555} else {
556        $epsg=$gui_epsg; // aus Conf
557}
558if ($gemeinde == "") {
559        $gfilter = 0; // Gemeinde ungefiltert
560} elseif(strpos($gemeinde, ",") === false) {
561        $gfilter = 1; // Gemeinde Einzelwert
562} else {
563        $gfilter = 2; // Gemeinde Filter-Liste
564}
565
566$kennztyp=ZerlegungGBKennz($gbkennz); // Grundbuch-Kennzeichen aus Parameter zerlegen: $z__
567// 2=Such Bezirk-Nummer, 3=Such Blatt, 4=Such Buchung BVNR
568
569// Quo Vadis?
570if($blattgml != "") { // FlurstÃŒcke zum Grundbuch
571
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.
574        $trans="Flurst&uuml;cke zum Grundbuch";
575        getFSbyGB(true); // mit BackLink
576
577} elseif($person != "") { // GrundbÃŒcher zur Person
578        // Das Programm hat sich selbst verlinkt aus einer Liste der Personen zu einer Suchmaske.
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
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                }
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.
591                        $trans = "1 Blatt zum Eigent&uuml;mer";
592                        getFSbyGB(false);       // Dann dazu auch gleich die Stufe 3 hinterher, aber ohne Backlink.
593                }
594        } else { // mit Filter auf Gemeinde: weniger Daten?
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                }
602                getGBuFSbyPerson(); // Schritte 2+3 gleichzeitig, dabei Gemeinde-Filter auf Stufe 3
603        }
604
605} elseif(isset($name)) { // Suchbegriff aus Form: Suche nach Name
606
607        $trans="Namensuche \"".$name."\"";
608        getEigByName(); // Suchen nach Namensanfang
609
610        if($person != "") { // genau EIN Treffer zum Namen
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                }
618        }
619
620} elseif ($debug >= 1) {
621        $trans="falscher Aufruf";
622        echo "\n<p class='dbg'>Parameter?</p>"; // sollte nicht vorkommen
623}
624// Titel im Kopf anzeigen
625echo "
626<script type='text/javascript'>
627        transtitle('".$trans."');
628</script>";
629
630?>
631
632</body>
633</html>
Note: See TracBrowser for help on using the repository browser.