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

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