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

Revision 283, 23.4 KB checked in by frank.jaeger, 11 years ago (diff)

Mapbender-Navigation nochmals ergänzt: aktuell gewählte Ebene wird farblich hinterlegt. Im GB-Teil kann Buchung verlinkt werden.

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