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

Revision 330, 24.6 KB checked in by frank.jaeger, 7 years ago (diff)

Umstellung von PostNAS 0.7 auf PostNAS 0.8, ohne Tabelle "alkis_beziehungen".

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