source: trunk/mapbender/http/nav/alkisnav_grd.php @ 376

Revision 376, 20.6 KB checked in by frank.jaeger, 7 years ago (diff)

Verbesserungen an der ALKIS-Buchauskunft (Geschwindigkeit, Fehlerkorrekturen, Mandantenfähigkeit) und an der Mapbender2-Navigation.

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