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

Revision 284, 20.7 KB checked in by frank.jaeger, 11 years ago (diff)

Mapbender-Navigation verbessert.

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