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

Revision 333, 20.5 KB checked in by frank.jaeger, 10 years ago (diff)

Anpassung der Programme und Views an verschieden lange gm_id und Datenbanken mit historischen Objekten.

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