source: trunk/mapbender/http/navn/alkisnav_grd.php @ 364

Revision 364, 20.8 KB checked in by frank.jaeger, 8 years ago (diff)

Verbesserungen an NAV und Buchauskunft

Line 
1<?php
2/*      Navigation mit ALKIS-Daten im Mapbender 2.7 - Teil Grundbuch-Suche
3        Diese Version des Programms verwendet die Datenbank-Struktur aus dem norGIS-ALKIS-Importer.
4
5Version vom
6        2016-02-11      Version fÃŒr norGIS-ALKIS-Import aus Version Classic abgeleitet.
7        2016-03-02  $gemeinde auf feste LÀnge korrigieren
8*/
9
10// Variable initialisieren
11$ag="";
12$gbkennz="";
13$buchunggml="";
14$blattgml="";
15
16$cntget = extract($_GET);
17$gemeinde=str_pad($gemeinde, 3, "0", STR_PAD_LEFT); // temporÀr ..
18include("../../conf/alkisnav_conf.php"); // Konfigurations-Einstellungen
19include("alkisnav_fkt.php"); // Funktionen
20
21$con_string = "host=".$host." port=".$port." dbname=".$dbname.$gkz." user=".$user." password=".$password;
22$con = pg_connect ($con_string) or die ("Fehler bei der Verbindung zur Datenbank ".$dbname.$gkz);
23
24echo <<<END
25<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
26<html>
27<head>
28        <meta http-equiv="cache-control" content="no-cache">
29        <meta http-equiv="pragma" content="no-cache">
30        <meta http-equiv="expires" content="0">
31        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
32        <title>ALKIS-Suche Grundbuch</title>
33        <link rel="stylesheet" type="text/css" href="alkisnav.css">
34        <script type="text/javascript">
35                function imFenster(dieURL) {
36                        var link = encodeURI(dieURL);
37                        window.open(link,'','left=10,top=10,width=680,height=800,resizable=yes,menubar=no,toolbar=no,location=no,status=no,scrollbars=yes');
38                }
39                function transtitle(trans) {
40                        document.getElementById('transaktiontitle').innerHTML = trans;
41                }
42                function formular_belegung(suchMich) {
43                        parent.GrdGazetteerFrame.gbkennz.value=suchMich;
44                }
45        </script>
46</head>
47<body>
48<a href='javascript:history.back()'>
49        <img src="ico/zurueck.png" width="16" height="16" alt="&lt;&lt;" title="zur&uuml;ck">
50</a>&nbsp;
51<span title='zuletzt ausgef&uuml;hrte Aktion'>
52        <dfn class='title' id='transaktiontitle'></dfn>
53</span>
54
55END;
56
57function ListAG($liste_ag, $aktuell) {
58        // Amtsgerichte (Grundbuchamt) auflisten, dazu als Filter die AG-Liste aus Conf-Datei verwenden.
59        global $debug;
60        $linelimit=40;
61
62        $sql ="SELECT stelle, bezeichnung AS ag FROM ax_dienststelle
63        WHERE stelle IN (".$liste_ag.") AND stellenart = 1000 AND endet IS NULL
64        ORDER BY bezeichnung LIMIT $1 ;";
65        $res = pg_prepare("", $sql);
66        $res = pg_execute("", array($linelimit));
67        if (!$res) {
68                echo "\n<p class='err'>Fehler bei Amtsgerichte</p>";
69                if ($debug >= 3) {echo "\n<p class='err'>".$sql."</p>";}
70                return 0;
71        }
72        $cnt = 0;
73        while($row = pg_fetch_array($res)) { // Loop AG
74                $anr=$row["stelle"];
75                $ag=$row["ag"];         
76                zeile_ag ($ag, $anr, $aktuell);
77                $cnt++;
78        }
79        // Foot
80        if($cnt == 0){
81                echo "\n<p class='anz'>Kein Amtsgericht aus Liste ".$$liste_ag.".</p>";
82        } elseif ($cnt >= $linelimit) {
83                echo "\n<p title='Bitte eindeutiger qualifizieren'>".$cnt." Amtsgerichte ... und weitere</p>";
84        } elseif ($cnt > 1) {
85                echo "\n<p class='anz'>".$cnt." Amtsgerichte</p>";
86        }
87        return 0;
88}
89
90function ListGBBez($agkey) {
91        // Grundbuch-Bezirke zu einem Amtsgericht auflisten.
92        // Auch wenn BlÀtter vorhanden sind, kann es eine "Sackgasse" sein.
93        // Manchmal haben die BlÀtter keine FlurstÃŒcke im Filter-Bereich (Gemeinde).
94        global $debug;
95        $linelimit=100; // Bezirke/AG
96
97        // Head
98        ListAG("'".$agkey."'", true); // hier nur fÃŒr 1
99
100        // Body
101        // Die Subquery stellt sicher, dass nur Bezirke aufgelistet werden, die auch BlÀtter enthalten
102        $sql ="SELECT g.bezirk, g.bezeichnung FROM ax_buchungsblattbezirk g
103        JOIN ax_dienststelle a ON g.stelle=a.stelle
104        WHERE a.stelle = $1 AND a.stellenart = 1000 AND a.endet IS NULL AND g.endet IS NULL
105        AND NOT (SELECT gml_id FROM ax_buchungsblatt b WHERE b.land=g.land AND b.bezirk=g.bezirk AND b.endet IS NULL LIMIT 1) IS NULL
106        ORDER BY g.bezeichnung LIMIT $2 ;";
107
108        $v = array($agkey, $linelimit);
109        $res = pg_prepare("", $sql);
110        $res = pg_execute("", $v);
111        if (!$res) {
112                echo "\n<p class='err'>Fehler bei Grundbuch-Bezirk</p>";
113                #if ($debug >= 3) {echo "\n<p class='err'>".$sql."</p>";}
114                return 0;
115        }
116        $cnt = 0;
117        while($row = pg_fetch_array($res)) { // Loop BEZIRK
118                $gnam=$row["bezeichnung"];
119                $gnr=$row["bezirk"];
120                zeile_gbbez($gnam, $gnr, false);
121                $cnt++;
122        }
123        // Foot
124        if($cnt == 0){
125                echo "\n<p class='anz'>Kein Bezirk mit Bl&auml;ttern.</p>";
126        } elseif ($cnt >= $linelimit) {
127                echo "\n<p class='anz' title='Bitte Name des Bezirks suchen lassen'>".$cnt." Bezirke ... und weitere</p>";
128        } elseif($cnt > 1) {
129                echo "\n<p class='anz'>".$cnt." Bezirke</p>"; // im Limit       
130        }
131        return;
132}
133
134function ag_bez_head($gbbez, $bezaktuell) {
135        // Zu einem Grundbuchbezirks-SchlÃŒssel die Zeilen "AG" und "Bezirk" ausgeben
136        // Parameter = SchlÃŒssel des Bezirks
137        #global $debug;
138        $sql ="SELECT a.stelle, a.bezeichnung AS ag, g.bezeichnung FROM ax_buchungsblattbezirk g
139        JOIN ax_dienststelle a ON g.stelle=a.stelle WHERE g.bezirk= $1 AND g.endet IS NULL AND a.endet IS NULL LIMIT 1;";
140        $v=array($gbbez);
141        $res=pg_prepare("", $sql);
142        $res=pg_execute("", $v);
143        if (!$res) {
144                echo "\n<p class='err'>Fehler bei Amtsgericht und Grundbuchbezirk.</p>";
145                #if ($debug >= 3) {echo "\n<p class='err'>".$sql."</p>";}
146        }
147        $row = pg_fetch_array($res);
148        if ($row) {
149                $gnam=$row["bezeichnung"]; // GB-Bezirk Bezeichnung
150                $ag=$row["ag"]; // AG Bezeichnung
151                $anr=$row["stelle"]; // AG Key
152                zeile_ag($ag, $anr, false); // Amtsgericht
153                zeile_gbbez($gnam, $gbbez, $bezaktuell); // Bezirk
154        } else {
155                echo "\n<div class='gk' title='Grundbuchbezirk'>";
156                        echo "\n\t\t<p class='err'><img class='nwlink' src='ico/GB-Bezirk.png' width='16' height='16' alt='Bez.'>";
157                                echo  " Bezirk '".$gbbez."' ist unbekannt.</p>";
158                echo "\n</div>";
159                return;
160        }
161        return;
162}
163
164function SuchGBBezName() {
165        // Grundbuch-Bezirk suchen nach Name(-nsanfang)
166        global $gkz, $gemeinde, $debug, $gbkennz;
167        $linelimit=80;
168
169        $sql ="SELECT a.stelle, a.bezeichnung AS ag, g.bezirk, g.bezeichnung FROM ax_buchungsblattbezirk g
170        JOIN ax_dienststelle a ON g.stelle=a.stelle
171        WHERE g.bezeichnung ILIKE $1 AND g.endet IS NULL AND a.endet IS NULL
172        ORDER BY a.bezeichnung, g.bezeichnung LIMIT $2 ;";// "AND a.stellenart=1000 " Amtsgericht
173        if ( $gbkennz == "") {
174                $match = "%";
175        } else {       
176                if(preg_match("/\*/",$gbkennz)){
177                        $match = trim(preg_replace("/\*/i","%", strtoupper($gbkennz)));
178                } else {
179                        $match = trim($gbkennz)."%";
180                }       
181        }
182        $v = array($match, $linelimit);
183        $res = pg_prepare("", $sql);
184        $res = pg_execute("", $v);
185        if (!$res) {
186                echo "\n<p class='err'>Fehler bei Grundbuch-Bezirk</p>";
187                return 1;
188        }
189        $cnt=0;
190        $gwag="";
191        while($row = pg_fetch_array($res)) { // Loop BEZIRK
192                $anr=$row["stelle"]; // Gruppierung AG
193                if ($gwag != $anr) {
194                        $gwag = $anr;
195                        $ag=$row["ag"];
196                        zeile_ag($ag, $anr, false);
197                }
198                $gnam=$row["bezeichnung"];
199                $gnr=$row["bezirk"];
200                zeile_gbbez ($gnam, $gnr, false);
201                $cnt++;
202        }
203        // Foot
204        if($cnt == 0){
205                echo "\n<p class='anz'>Kein Grundbuchbezirk.</p>";
206        } elseif ($cnt >= $linelimit) {
207                echo "\n<p title='Bitte eindeutiger qualifizieren'>".$cnt." Bezirke ... und weitere</p>";
208        } elseif ($cnt == 1) {
209                return $gnr; // Wenn eindeutig, gleich weiter
210        } elseif ($cnt > 1) {
211                echo "\n<p class='anz'>".$cnt." Bezirke</p>"; // im Limit       
212        }
213        return;
214}
215 
216function EinBezirk($showParent) {
217        // Kennzeichen bestehend nur aus GB-Bezirk-SchlÃŒssel wurde eingegeben
218        global $gemeinde, $debug, $zgbbez, $auskpath;
219        $linelimit=300; // max. Blatt je Bezirk
220        // Dies Limit ist nicht ausreichend fÃŒr alle BlÀtter eines Bezirks, aber ...
221        // Wenn man die Blatt-Nr nicht kennt, kommt man hier sowieso nicht weiter.
222        // Es nutzt also nichts, hier tausende Nummern aufzulisten.
223        // +++ BlÀtter-Funktion einfÃŒhren analog Modul _eig
224
225        // Head
226        if ($showParent) {
227                ag_bez_head($zgbbez, true); // AG und BEZ ausgeben
228        }
229        // Body
230        $sql ="SELECT b.gml_id, b.buchungsblattnummermitbuchstabenerweiterung AS blatt FROM ax_buchungsblatt b
231        WHERE b.bezirk= $1 AND b.endet IS NULL ORDER BY b.buchungsblattnummermitbuchstabenerweiterung LIMIT $2 ;";
232        $v=array($zgbbez, $linelimit);
233        $res=pg_prepare("", $sql);
234        $res=pg_execute("", $v);
235        if (!$res) {
236                echo "\n<p class='err'>Fehler bei Bezirk.</p>";
237                #if ($debug >= 3) {echo "\n<p class='err'>".$sql."</p>";}
238        }
239        $cntbl=0; // Counter Blatt/Bezirk
240        while($row = pg_fetch_array($res)) { // Loop BLATT     
241                $blatt=$row["blatt"];
242                $blattgml=$row["gml_id"];
243                zeile_blatt($zgbbez, "", $blattgml, $blatt, false, "", false);
244                $cntbl++;
245        }
246        // Foot
247        if($cntbl == 0) {
248                echo "\n<p class='anz'>Kein Blatt im Bezirk.</p>";
249        } elseif($cntbl >= $linelimit) {
250                echo "\n<p class='anz'>".$cntbl." Bl&auml;tter ... und weitere</p>";
251                // +++ Hier oft ÃŒberschritten! BlÀtter-Funktion einfÃŒhren
252                echo "\n<p>Geben sie ein: '".$zgbbez."-999A'<br>wobei '999A' = gesuchtes GB-Blatt</p>";
253                // Vorbelegen des Eingabefeldes fÃŒr neue Suche
254                echo "<script type='text/javascript'>parent.GrdGazetteerFrame.gbkennz.value='".$zgbbez."-?';</script>";
255        } elseif ($cntbl > 1) {
256                echo "\n<p class='anz'>".$cntbl." Bl&auml;tter</p>"; // im Limit       
257        }
258        return;
259}
260
261function gml_blatt() {
262        // Kennzeichen "Bezirk + Blatt" eingegeben. Dazu die gml_id des Blattes ermitteln.
263        global $debug, $zgbbez, $zblatt, $zblattn, $zblattz;
264        $sql ="SELECT b.gml_id, b.buchungsblattnummermitbuchstabenerweiterung AS blatt FROM ax_buchungsblatt b
265        WHERE b.bezirk= $1 AND b.endet IS NULL AND b.buchungsblattnummermitbuchstabenerweiterung ";
266
267        if ($zblattz == "") { // Ohne Buchstabenerweiterung: Formate '123','000123 ','0000123'
268                $sql.="IN ('".$zblattn."','".str_pad($zblattn, 6, "0", STR_PAD_LEFT)." ','".str_pad($zblattn, 7, "0", STR_PAD_LEFT)."');";
269        } else { // Mit Buchstabenerweiterung: '000123A'
270                $sql.="='".str_pad($zblattn, 6, "0", STR_PAD_LEFT).$zblattz."';";
271        }
272        $v=array($zgbbez);
273        $res=pg_prepare("", $sql);
274        $res=pg_execute("", $v);
275        if (!$res) {
276                echo "\n<p class='err'>Fehler bei Blatt (Kennzeichen).</p>";
277                return;
278        }
279        $cntbl=0; // Counter Blatt
280        while($row = pg_fetch_array($res)) {   
281                $bl_gml=$row["gml_id"];
282                $zblatt=$row["blatt"]; // das tatsaechliche Format (mit/ohne fuehrende 0)
283                $cntbl++;
284        }
285        if($cntbl == 0) {
286                echo "\n<p class='err'>Grundbuchblatt '".$zgbbez."-".$zblatt."' nicht gefunden.</p>";
287        } elseif ($cntbl == 1) {
288                return $bl_gml;
289        }
290        return;
291}
292
293function EinBlatt($showParent) {
294        // Kennzeichen Bezirk + Blatt wurde eingegeben oder verlinkt
295        global $debug, $gemeinde, $zgbbez, $zblatt, $blattgml, $gbbeznam;
296        // Head
297        if ($showParent) {
298                ag_bez_head($zgbbez, false); // AG + BEZ
299                zeile_blatt ($zgbbez, "", $blattgml, $zblatt, false, "", true);
300        }
301        // Body
302        GB_Buchung_FS(1000, $zgbbez."-".$zblatt); // Blatt -> Buchung -> Flurstueck (Limitiert)
303        // ++ besser Limit runter und "BlÀttern"-Funktion einfÃŒhren
304        return;
305}
306
307function gml_buchungsstelle() {
308        // Kennzeichen "Bezirk + Blatt + BVNR" wurde eingegeben.
309        // Dazu die gml_id der Buchungsstelle ermitteln, um "function EinGrundstueck" benutzen zu können.
310        global $debug, $zgbbez, $zblatt, $zblattn, $zblattz, $zbvnr;
311
312        // Blatt ->  B u c h u n g s s t e l l e
313        $sql ="SELECT s.gml_id FROM ax_buchungsstelle s
314        JOIN ax_buchungsblatt b ON s.istbestandteilvon=b.gml_id
315        WHERE b.bezirk= $1 AND s.endet IS NULL AND b.endet IS NULL AND b.buchungsblattnummermitbuchstabenerweiterung ";
316
317        if ($zblattz == "") { // Ohne Buchstabenerweiterung
318                //Formate '123','000123 ','0000123'
319                $sql.="IN ('".$zblattn."','".str_pad($zblattn, 6, "0", STR_PAD_LEFT)." ','".str_pad($zblattn, 7, "0", STR_PAD_LEFT)."')";
320        } else { // Mit Buchstabenerweiterung: '000123A'
321                $sql.="='".str_pad($zblattn, 6, "0", STR_PAD_LEFT).$zblattz."'";
322        }
323        $sql.=" AND s.laufendenummer= $2 ;";
324
325        $v=array($zgbbez, $zbvnr);
326        $res=pg_prepare("", $sql);
327        $res=pg_execute("", $v);
328        if (!$res) {
329                echo "\n<p class='err'>Fehler bei Buchungsstelle (Kennzeichen).</p>";
330                return;
331        }
332        $zbs=0;
333        while($row = pg_fetch_array($res)) {   
334                $bs_gml=$row["gml_id"];
335                $zbs++;
336        }
337        if($zbs == 0) {
338                echo "\n<p class='err'>Buchung ".$zgbbez."-".$zblattn.$zblattz."-".$zbvnr." nicht gefunden.</p>";
339                return;
340        } else {
341                return $bs_gml;
342        }
343}
344
345function EinGrundstueck($showParent) {
346        // Die gml_id der Buchungsstelle (BVNR, GrundstÃŒck) ist bekannt = $buchunggml
347        // Die gebuchten FlurstÃŒcke und dienende/herrschenden Buchungen werden ausgegeben.
348        global $debug, $gemeinde, $epsg, $buchunggml, $zgbbez, $zblatt, $zblattn, $zblattz, $zbvnr, $gfilter;
349        // NoLimit?
350
351        // Head
352        if ($showParent) { // wenn Kennzeichen bekannt ist, dann auch Blatt ausgeben
353                if ($zgbbez.$zblatt != "") {
354                        ag_bez_head($zgbbez, false); // AG + BEZ
355                        zeile_blatt ($zgbbez, "", "", $zblatt, false, "", false);
356                        // Parameter 2 ($gnam) leer lassen Knoten "Bezirk" steht drÃŒber
357                } else {
358                        echo "<p class='err'>Kennzeichen Bezirk und Blatt nicht gesetzt</p>";
359                } // ++ suchen!
360                zeile_buchung($buchunggml, $zbvnr, $zgbbez."-".$zblattn.$zblattz, false, true);
361        }
362
363// dienend $1 gml_id von
364//         Buchungsstelle  <an<  Buchungsstelle sh
365//         (dienend)                (herrschend)
366
367// direkt  $1 gml_id von
368//         Buchungsstelle                           <istGebucht< FlurstÃŒck >> Gemarkung
369
370// Recht   $1 gml_id von
371//         Buchungsstelle  >an>  Buchungsstelle sd  <istGebucht< FlurstÃŒck >> Gemarkung
372//         (herrschend)             (dienend)   sd  >istBestandteilVon> bd >> gd
373
374        // Body
375        // Anfang (Select-Liste) gleich
376        $sqlanf ="SELECT g.bezeichnung, f.gml_id, f.flurnummer, f.zaehler, f.nenner, ";
377        if($epsg == "25832") { // Transform nicht notwendig
378                $sqlanf.="st_x(st_Centroid(f.wkb_geometry)) AS x, ";
379                $sqlanf.="st_y(st_Centroid(f.wkb_geometry)) AS y ";
380        } else { 
381                $sqlanf.="st_x(st_transform(st_Centroid(f.wkb_geometry),".$epsg.")) AS x, ";
382                $sqlanf.="st_y(st_transform(st_Centroid(f.wkb_geometry),".$epsg.")) AS y ";                     
383        }
384        // Filter gleich
385        $sqlfilter="";
386        switch ($gfilter) { // Filter Gemeinde
387                case 1: // Einzel
388                        $sqlfitler="AND f.gemeinde='".$gemeinde."' "; break;
389                case 2: // Liste
390                        $sqlfilter="AND f.gemeinde in ('".str_replace(",", "','", $gemeinde)."') "; break;
391        }
392
393        // Direkte Buchungen (Flurst.)
394        $sql =$sqlanf."FROM ax_flurstueck f JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer ";
395        $sql.="WHERE f.istgebucht = $1 AND f.endet IS NULL ".$sqlfilter."ORDER BY f.gemarkungsnummer, f.flurnummer, f.zaehler, f.nenner;";
396
397        $v=array($buchunggml);
398        $res=pg_prepare("", $sql);
399        $res=pg_execute("", $v);
400        if (!$res) {
401                echo "\n<p class='err'>Fehler bei Buchungsstelle (gml, direkt).</p>";
402                if ($debug >= 3) {
403                        echo "\n<p class='err'>'".$sql."'<br>\nmit $1 ='".$buchunggml."'</p>";
404                }
405        }
406        $zfs1=0;
407        while($row = pg_fetch_array($res)) {   
408                $fs_gml=$row["gml_id"];
409                $gmkg=$row["bezeichnung"];
410                $flur=$row["flurnummer"];
411                $fskenn=$row["zaehler"];
412                if ($row["nenner"] != "") {$fskenn.="/".$row["nenner"];} // BruchNr
413                zeile_flurstueck ($fs_gml, $fskenn, $row["x"], $row["y"], $gmkg, $flur, false);
414                $zfs1++;
415        }
416        // Zwischen-Foot
417        if($zfs1 == 0) {
418                echo "\n<p class='anz'>Kein Flurst&uuml;ck zu dieser Buchung</p>";
419        } elseif($zfs1 > 1) {
420                echo "\n<p class='anz'>".$zfs1." Flurst&uuml;cke</p>";
421        }
422        if($zfs1 > 0) { // wenn's was zu trennen gibt
423                echo "<hr>"; // Trennen
424        }
425
426        // Recht "an" (dienende Buchungen und ihre Flurst.)
427
428$sql =$sqlanf.", sd.gml_id AS diengml, sd.laufendenummer AS dienlfd,
429bd.gml_id AS dienbltgml, bd.buchungsblattnummermitbuchstabenerweiterung AS dienblatt,
430gd.stelle, gd.gml_id AS dienbezgml, gd.bezirk, gd.bezeichnung AS diengbbez
431FROM ax_buchungsstelle sh
432JOIN ax_buchungsstelle sd ON sd.gml_id=ANY(sh.an)
433JOIN ax_flurstueck f ON f.istgebucht=sd.gml_id
434JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer
435JOIN ax_buchungsblatt bd ON sd.istbestandteilvon=bd.gml_id
436JOIN ax_buchungsblattbezirk gd ON bd.land=gd.land AND bd.bezirk=gd.bezirk
437WHERE sh.gml_id = $1 AND sh.endet IS NULL AND sd.endet IS NULL AND f.endet IS NULL AND bd.endet IS NULL AND gd.endet IS NULL "
438
439.$sqlfilter."ORDER BY gd.bezeichnung, bd.buchungsblattnummermitbuchstabenerweiterung, cast(sd.laufendenummer AS integer), f.gemarkungsnummer, f.flurnummer, f.zaehler, f.nenner;";
440
441        $v=array($buchunggml);
442        $res=pg_prepare("", $sql);
443        $res=pg_execute("", $v);
444        if (!$res) {
445                echo "\n<p class='err'>Fehler bei Buchungsstelle (gml, Recht an).</p>";
446                if ($debug >= 3) {
447                        echo "\n<p class='err'>'".$sql."'<br>\nmit $1 ='".$buchunggml."'</p>";
448                }
449        }
450        $zfs2=0;
451        $gwblatt="";
452        while($row = pg_fetch_array($res)) {
453                $dienstelle=$row["stelle"];     // Stelle (AG) des dien. Grdst.
454                $dienbezgml=$row["dienbezgml"]; // Bezirk des dien. GS: gml, Nr. und Bezeichnung
455                $diengbbez=$row["diengbbez"];   // Bezeichnung
456                $dienbezirk=$row["bezirk"];     // Key
457                $dienbltgml=$row["dienbltgml"]; // dien. Blatt, gml und Nr
458                $dienblatt=$row["dienblatt"];
459                $diengml=$row["diengml"];       // gml_id des dien. Grdst.
460                $dienlfd=$row["dienlfd"];       // BVNR (laufendNr) des dien. GS
461                if ($gwblatt != $dienblatt) { // Grupp. Blatt - dien.
462                        if ($gwblatt == "") { // der erste "dienende": Einleitungs-Zeile
463                                $aber="";
464                                if($zfs1 == 0) {$aber="Aber ein ";}
465                                echo "\n<p class='anz' title='Die oben genannte Buchung hat ein Recht an den folgenden Buchungen'>".$aber."Recht an ..</p>";
466                        }
467                        $gwblatt = $dienblatt; // Steuerg GW Blatt
468                        zeile_blatt($dienbezirk, $diengbbez, $dienbltgml, $dienblatt, true, "", false);
469                        $gwbvnr="";
470                }
471                if ($gwbvnr != $dienlfd) { // Gruppierung Buchung (BVNR) - dienend
472                        $gwbvnr = $dienlfd; // Steuerg GW BVNR
473                        zeile_buchung($diengml, $dienlfd, $dienbezirk."-".$dienblatt, true, false);
474                } // ++ Buchungsart? Welches Recht?
475                $fs_gml=$row["gml_id"];
476                $gmkg=$row["bezeichnung"];
477                $flur=$row["flurnummer"];
478                $fskenn=$row["zaehler"];
479                if ($row["nenner"] != "") {$fskenn.="/".$row["nenner"];} // BruchNr
480                zeile_flurstueck ($fs_gml, $fskenn, $row["x"],$row["y"], $gmkg, $flur, false);
481                $zfs2++;
482        }
483
484// Teil 3 - noch nicht umgesetzt
485// ToDo: Wenn nur 1 GrundstÃŒck untersucht wird, dann dazu auch die berechtigten (herrschenden) GrundbÃŒcher anzeigen und verlinken (ohne FS)
486
487        // Foot
488        if($zfs2 == 0 AND $zfs1 == 0) {
489                echo "\n<p class='anz'>Kein Recht an Flst.</p>";
490        } elseif($zfs2 > 1) {
491                echo "\n<p class='anz'>".$zfs2." Rechte an Flurst.</p>";
492        }
493        return;
494}
495
496// ===========
497// Start hier!
498// ===========
499if(isset($epsg)) {
500        $epsg = str_replace("EPSG:", "" , $_REQUEST["epsg"]);   
501} else {
502        $epsg=$gui_epsg; // aus Conf
503}
504
505// Filter aus Conf-Datei
506if ($gemeinde == "") {
507        $gfilter = 0; // ungefiltert
508} elseif(strpos($gemeinde, ",") === false) {
509        $gfilter = 1; // Einzelwert
510} else {
511        $gfilter = 2; // Liste
512//      $gemeinde = "'".str_replace(",", "','", $gemeinde)."'"; // Jedes Element in ''
513}
514
515// Das eingegebene Kennzeichen fÃŒr "Anzeige" und "weitere Links" zerlegen,
516// auch wenn ÃŒber einen ein Self-Link mit gml_id aufgerufen.
517$kennztyp=ZerlegungGBKennz($gbkennz);
518
519// Wurde eine gml_id (internes Kennzeichen) aus einem Self-Link verwendet?
520// Dann hat DAS PrioritÀt, dann also *nicht* nach $gbkennz suchen.
521if ($buchunggml != "") { // gml der Buchungsstelle
522        $trans="Flurst&uuml;cke zur Buchungsstelle"; // Link
523        EinGrundstueck(true);
524
525} elseif($blattgml != "") { // gml des GB-Blattes
526        $trans="GB-Blatt mit Buchungen und Flst.";
527        EinBlatt(true);
528
529} elseif($ag != "") { // Key des Amtsgerichtes
530        $trans="GB-Bezirke zum Amtsgericht";
531        ListGBBez($ag);
532
533} else { // kein Self-Link sondern manuelle Eingabe im Formular
534        switch ($kennztyp) { // wurde oben bereits analysiert und zerlegt
535                case 0: // keine Eingabe
536                        $trans="Liste der Amtsgerichte";
537                        ListAG($ag_liste, false);
538                        break;
539                case 1: // Eingabe Bezirk-Name (-Teil) -> gefilterte Liste der Bezirke
540                        $trans="Bezirke suchen \"".$gbkennz."\"";
541                        $beznr=SuchGBBezName();
542                        if ($beznr > 0) {  // wenn der Suchbegriff eindeutig war, ..
543                                $zgbbez=$beznr;
544                                $trans="Bezirk gefunden, Bl&auml;tter dazu";
545                                EinBezirk(false); // .. dann gleich weiter
546                        };
547                        break;
548                case 2: // Eingabe Bezirk-Nummer -> Liste der BlÀtter im Bezirk
549                        $trans="Bl&auml;tter im GB-Bezirk";
550                        EinBezirk(true);
551                        break;
552                case 3: // Eingabe GB-Blatt -> Liste der Buchungen auf dem Blatt
553                        $trans="Buchungen auf GB-Blatt";
554                        $blattgml=gml_blatt(); // gml_id zum Blatt suchen
555                        if ($blattgml != "") { // gefunden             
556                                if (EinBlatt(true) == 1) { // wenn darauf genau eine Buchung ist
557                                        $trans="GB-Blatt und 1 Buchung"; // dann gleich tiefer rein
558                                        $buchunggml=gml_buchungsstelle(); // gml_id der Buchung
559                                        EinGrundstueck(false);
560                                }
561                        }
562                        break;
563                case 4: // Eingabe Buchung (GrundstÃŒck) -> Liste der FlurstÃŒcke
564                        $buchunggml=gml_buchungsstelle(); // gml_id zum Kennzeichen
565                        if ($buchunggml != "") {                // .. wurde geliefert
566                                $trans="Flurst&uuml;cke zur Buchungsstelle"; // Eingabe
567                                EinGrundstueck(true);   // mit Backlink
568                        } else{
569                                $trans="Suche Buchungsstelle";
570                        }
571                        break;
572                case 9: // Fehler
573                        $trans="fehlerhafte Eingabe";
574                        echo "\n<p class='err'>Bitte ein g&uuml;ltiges Grundbuchkennzeichen eingegeben, Format 'gggg-999999A-llll</p>";
575                        break;
576        }
577}
578
579// Nach Durchlaufen des PHP-Scriptes die zuletzt ausgefÃŒhrte Transaktion
580//  im Kopf des Ergebnisrahmens anzeigen.
581// Dazu die im HTML-Header definierte Javascript-Function benutzen.
582// Alternativ wird auch aus dem Javascript "positionieren Karte" dieser Titel gesetzt.
583echo "
584<script type='text/javascript'>
585        transtitle('".$trans."');
586</script>";
587
588?>
589
590</body>
591</html>
Note: See TracBrowser for help on using the repository browser.