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

Revision 280, 28.6 KB checked in by frank.jaeger, 11 years ago (diff)

ALKIS-Navigation: Darstellung im IE verbessert

RevLine 
[66]1<?php
[105]2/* Version vom
[278]3        2011-10-24      Nach Pos-Klick Highlight erneuern statt hideHighlight
4        2011-11-17      Nachweis-Links ÃŒber javascript im neuen Hochformat-Fenster
5        2011-12-14      "window.open(..,width=680"
6        2012-01-16      Blattnummer in 2 Varianten suchen
7        2012-01-17      Blattnummer ohne Buchstabe in 3 Varianten suchen
8        2013-04-16      "import_request_variables" entfÀllt in PHP 5.4
9        2013-04-26      Ersetzen View "gemeinde_gemarkung" durch Tabelle "pp_gemarkung"
10                                        Code aus _eig nach_fkt ausgelegert, hier mit nutzen.
11                                        Dazu Var-Namen harmonisieren: $gblatt wird $blattgml
12                                        ZurÃŒck-Link, Titel der Transaktion anzeigen.
[280]13        2013-04-29      Test mit IE
[86]14*/
[276]15$cntget = extract($_GET);
[278]16
17include("../../conf/alkisnav_conf.php"); // Konfigurations-Einstellungen
18include("alkisnav_fkt.php"); // Funktionen
19
[105]20$con_string = "host=".$host." port=".$port." dbname=".$dbname.$dbvers.$gkz." user=".$user." password=".$password;
21$con = pg_connect ($con_string) or die ("Fehler bei der Verbindung zur Datenbank ".$dbname.$dbvers.$gkz);
[278]22echo <<<END
[66]23<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
24<html>
25<head>
26        <meta http-equiv="cache-control" content="no-cache">
27        <meta http-equiv="pragma" content="no-cache">
28        <meta http-equiv="expires" content="0">
29        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
30        <title>ALKIS-Suche Grundbuch</title>
31        <link rel="stylesheet" type="text/css" href="alkisnav.css">
[129]32        <script type="text/javascript">
33                function imFenster(dieURL) {
34                        var link = encodeURI(dieURL);
[152]35                        window.open(link,'','left=10,top=10,width=680,height=800,resizable=yes,menubar=no,toolbar=no,location=no,status=no,scrollbars=yes');
[129]36                }
[278]37                function transtitle(trans) {
38                        document.getElementById('transaktiontitle').innerHTML = trans;
39                }
[129]40        </script>
[66]41</head>
[105]42<body>
[280]43<a href='javascript:history.back()'>
44        <img src="ico/zurueck.ico" width="16" height="16" alt="&lt;&lt;" title="zur&uuml;ck" />
[278]45</a>
46<dfn class='title' id='transaktiontitle'></dfn>
[66]47
[278]48END;
49
[105]50function is_ne_zahl($wert) {
51        // Prueft, ob ein Wert ausschließlich aus den Zahlen 0 bis 9 besteht
52        if (trim($wert, "0..9") == "") {return true;} else {return false;}
53}
54
[66]55function ZerlegungGBKennz($gbkennz) {
[105]56        // Das eingegebene Grundbuch-Kennzeichen auseinander nehmen (gggg-999999z-BVNR)
57        // Return: 9=Fehler, 0=Listen alle Bezirke 1=Such Bezirk-Name
58        //         2=Such Bezirk-Nummer $zgbbez, 3=Such Blatt $zblatt, 4=Such BVNR $zbvnr
[68]59        global $debug, $zgbbez, $zblatt, $zblattn, $zblattz, $zbvnr;            $arr=explode("-", $gbkennz, 3);
[105]60        $zgbbez=trim($arr[0]);
61        $zblatt=trim($arr[1]);
62        $zbvnr=trim($arr[2]);
63        if ($zgbbez == "") { // keine Eingabe
64                return 0; // Amtsgerichte oder Bezirke listen
65        } elseif ( ! is_ne_zahl($zgbbez)) { // Alphabetische Eingabe
66                return 1; // Such Bezirk-NAME
67        } elseif ($zblatt == "") {
68                return 2; // Such Bezirk-NUMMER
69        } else  { // Format von BlattNr pruefen
[154]70        //'19'       linksbÃŒndig
[152]71        //'000019 '  gefÃŒllt 6 + blank
[154]72        //'000019A'  .. mit Zusatzbuchstabe
73        //'0300001'  gefÃŒllt 7, bei Blattart 5000 "fiktives Blatt"
74                $len=strlen($zblatt);
[105]75                if ($len > 0 AND $len < 8) {           
76                        if (trim($zblatt, "0..9 ") == "") { // Normalfall: nur Zahlen (und Blank))
[152]77                                $zblattn= rtrim(ltrim($zblatt, "0"), " ");
78                                $zblattz="";
79                        } else { // Sonderfall: Zusatz-Buchstabe am Ende
[105]80                                $zblattn=substr($zblatt,0,$len-1);
81                                $zblattz=strtoupper(substr($zblatt,$len-1,1));
82                                if ((trim($zblattn, "0..9") == "") and (trim($zblattz, "A..Z") == "")) {
83                                        $zblattn= ltrim($zblattn, "0"); // ohne fuehrende Nullen
84                                } else {
85                                        echo "<p class='err>Format 'Blatt': bis zu 6 Zahlen und ggf. ein Buchstabe</p>";       
86                                        return 9;
87                                }
88                        }
89                        if ($zbvnr == "") {
90                                return 3; // Such BLATT
91                        } elseif (is_ne_zahl($zbvnr)) {         
92                                // $zbvnr=ltrim($zbvnr,"0"); // DB-Format ist integer
93                                // Vorsicht, Wert "0" ist moeglich und gueltig
94                                return 4; // Such Grundstueck
95                        } else {
96                                echo "<p class='err>Die Buchungsstelle (BVNR) '".$zbvnr."' ist nicht numerisch</p>";
97                                return 9;
98                        }
99                } else {
100                        echo "<p class='err>Das Grundbuch-Blatt '".$zblatt."' ist ung&uuml;ltig.</p>";
101                        return 9;
102                }
103        }
104}
105
106function ListAG($liste_ag) {
107        // Amtsgerichte (Grundbuch) auflisten, dazu als Filter eine AG-Liste aus conf
108        global $con, $gkz, $gemeinde, $epsg, $debug, $gbkennz;
109        $linelimit=40;
110        $sql ="SELECT a.stelle, a.bezeichnung AS ag FROM ax_dienststelle a ";
111        $sql.="WHERE a.stelle IN (".$liste_ag.") AND a.stellenart = 1000 "; // Amtsgerichte aus Liste
112        $sql.="ORDER BY a.bezeichnung LIMIT $1 ;";
113        $res = pg_prepare("", $sql);
114        $res = pg_execute("", array($linelimit));
115        if (!$res) {
116                echo "\n<p class='err'>Fehler bei Amtsgerichte</p>";
117                if ($debug >= 3) {echo "\n<p class='err'>".$sql."</p>";}
118                return 0;
119        }
120        $cnt = 0;
121        while($row = pg_fetch_array($res)) { // Loop AG
122                $anr=$row["stelle"];
123                $ag=htmlentities($row["ag"], ENT_QUOTES, "UTF-8");             
124                echo "\n<div class='ga' title='Amtsgricht'>";
125                        echo "\n\t\t<img class='nwlink' src='ico/Gericht.ico' width='16' height='16' alt='Amtsgericht'> ";
126                        echo "AG <a href='alkisnav_grd.php?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;ag=".$anr."'>";               
127                                echo $ag."</a> (".$anr.")";
128                echo "\n</div>";
129                $cnt++;
[86]130        }
131        if($cnt == 0){ // falsch configuriert!
[105]132                echo "\n<p class='anz'>Kein Amtsgericht aus Liste ".$$liste_ag.".</p>";
[278]133        } elseif ($cnt >= $linelimit) {
[105]134                echo "\n<p title='Bitte eindeutiger qualifizieren'>".$cnt." Amtsgerichte ... und weitere</p>";
[278]135        } elseif ($cnt > 1) {
136                echo "\n<p class='anz'>".$cnt." Amtsgerichte</p>";
137        }
[105]138        return 0;
139}
140
141function ListGBBez($liste_ag, $mit_ag) {
142        // Grundbuch-Bezirke auflisten.
[278]143        // +++ auch wenn BlÀtter da sind, kann es eine Sackgasse sein.
144        // +++ manchmal haben die BlÀtter keine FlurstÃŒcke.
145        global $con, $gkz, $gemeinde, $epsg, $debug, $gbkennz;
[105]146        $linelimit=90;
[278]147        $sql ="SELECT a.stelle, a.bezeichnung AS ag, g.bezirk, g.bezeichnung FROM ax_buchungsblattbezirk g ";
[105]148        $sql.="JOIN ax_dienststelle a ON g.stelle=a.stelle ";
149        $sql.="WHERE a.stelle IN (".$liste_ag.") AND a.stellenart = 1000 "; // Amtsgericht aus Liste
150        // Diese Subquery stellt sicher, dass nur Bezirke aufgelistett werden, die auch BlÀtter enthalten:
[278]151        $sql.="AND NOT (SELECT gml_id FROM ax_buchungsblatt b WHERE b.land=g.land and b.bezirk=g.bezirk LIMIT 1) IS NULL ";
152        $sql.="ORDER BY g.bezeichnung LIMIT $1 ;";
[105]153        $res = pg_prepare("", $sql);
154        $res = pg_execute("", array($linelimit));
155        if (!$res) {
156                echo "\n<p class='err'>Fehler bei Grundbuch-Bezirk</p>";
157                if ($debug >= 3) {echo "\n<p class='err'>".$sql."</p>";}
158                return 0;
159        }
160        $cnt = 0;
161        while($row = pg_fetch_array($res)) { // Loop  B E Z I R K
162                $gnam=htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8");
[86]163                $gnr=$row["bezirk"];
[105]164                $ag=htmlentities($row["ag"], ENT_QUOTES, "UTF-8");
165                $anr=$row["stelle"];
166                echo "\n<div class='gk' title='GB-Bezirk'>";
167                        echo "\n\t\t<img class='nwlink' src='ico/GB-Bezirk.ico' width='16' height='16' alt='Gemkg'> ";
168                        echo "Bezirk <a href='alkisnav_grd.php?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;gbkennz=".$gnr."'>";             
169                                echo $gnam."</a> (".$gnr.")";
170                                if ($mit_ag) {
171                                        echo " AG <a href='alkisnav_grd.php?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;ag=".$anr."'>".$ag."</a>";
172                                }
173                echo "\n</div>";
174                $cnt++;
[86]175        }
176        if($cnt == 0){
[278]177                echo "\n<p class='anz'>Kein Bezirk mit Bl&auml;ttern.</p>";
178        } elseif ($cnt >= $linelimit) {
[105]179                echo "\n<p class='anz' title='Bitte eindeutiger qualifizieren'>".$cnt." Bezirke ... und weitere</p>";
[278]180        } elseif($cnt > 1) {
181                echo "\n<p class='anz'>".$cnt." Bezirke</p>"; // im Limit       
182        }
[105]183        return 0;
184}
185
186function SuchGBBezName() {
187        // Grundbuch-Bezirk suchen nach Name(-nsanfang)
188        global $con, $gkz, $gemeinde, $debug, $gbkennz;
189        $linelimit=50;
190        $sql ="SELECT a.stelle, a.bezeichnung AS ag, g.bezirk, g.bezeichnung FROM ax_buchungsblattbezirk g ";
191        $sql.="JOIN ax_dienststelle a ON g.stelle=a.stelle ";
192        $sql.="WHERE g.bezeichnung ILIKE $1 "; //       "AND a.stellenart=1000 " // Amtsgericht
193        $sql.="ORDER BY g.bezeichnung LIMIT $2 ;";
194        if ( $gbkennz == "") {
195                $match = "%";
196        } else {       
197                if(preg_match("/\*/",$gbkennz)){
[66]198                        $match = trim(preg_replace("/\*/i","%", strtoupper($gbkennz)));
199                } else {
200                        $match = trim($gbkennz)."%";
201                }       
[105]202        }
203        $v = array($match, $linelimit);
204        $res = pg_prepare("", $sql);
205        $res = pg_execute("", $v);
206        if (!$res) {
207                echo "\n<p class='err'>Fehler bei Grundbuch-Bezirk</p>";
208                if ($debug >= 3) {echo "\n<p class='err'>".$sql."</p>";}
209                return 0;
210        }
211        $cnt = 0;
212        // Loop  B E Z I R K
213        while($row = pg_fetch_array($res)) {
214                $gnam=htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8");
[66]215                $gnr=$row["bezirk"];
[105]216                $ag=htmlentities($row["ag"], ENT_QUOTES, "UTF-8");             
217                $anr=$row["stelle"];
218                echo "\n<div class='gk' title='Grundbuch-Bezirk'>";
[278]219                        echo "\n\t\t<img class='nwlink' src='ico/GB-Bezirk.ico' width='16' height='16' alt='Gemkg'> ";
[105]220                        echo "Bezirk <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;gbkennz=".$gnr."'>";           
221                                echo $gnam."</a> (".$gnr.")";
222                                echo " AG <a href='alkisnav_grd.php?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;ag=".$anr."'>".$ag."</a>";
223                echo "\n</div>";
224                $cnt++;
[66]225        }
226        if($cnt == 0){
[105]227                echo "\n<p class='anz'>Kein Grundbuchbezirk.</p>";
[278]228        } elseif ($cnt >= $linelimit) {
[105]229                echo "\n<p title='Bitte eindeutiger qualifizieren'>".$cnt." Bezirke ... und weitere</p>";
[278]230        } elseif ($cnt == 1) {
[105]231                return $gnr; // Wenn eindeutig, gleich weiter
232        } elseif ($cnt > 1) {
[278]233                echo "\n<p class='anz'>".$cnt." Bezirke</p>"; // im Limit       
234        }
[105]235        return 0;
236}
237 
238function EinBezirk($showParent) {
239        // Kennzeichen bestehend nur aus GB-Bezirk-SchlÃŒssel wurde eingegeben
240        global $con, $gkz, $gemeinde, $epsg, $debug, $zgbbez, $auskpath;
241        $linelimit=250; // max. Blatt je Bezirk
[154]242        // Dies Limit ist nicht ausreichend fÃŒr alle BlÀtter eines Bezirks, aber ...
[278]243        // Wenn man die Blatt-Nr nicht kennt, kommt man hier sowieso nicht weiter.
[105]244        // Es nutzt also nichts, hier tausende Nummern aufzulisten.
[278]245        // +++ BlÀtter-Funktion einfÃŒhren analog Modul _eig
246        if ($showParent) {
[105]247                $sql ="SELECT a.stelle, a.bezeichnung AS ag, g.bezeichnung FROM ax_buchungsblattbezirk g ";
248                $sql.="JOIN ax_dienststelle a ON g.stelle=a.stelle WHERE g.bezirk= $1 ;";
[278]249                $v=array($zgbbez);
[105]250                $res=pg_prepare("", $sql);
251                $res=pg_execute("", $v);
252                if (!$res) {
253                        echo "\n<p class='err'>Fehler bei Brundbuchbezirk.</p>";
254                        if ($debug >= 3) {echo "\n<p class='err'>".$sql."</p>";}
255                }
256                $zgmk=0;
257                while($row = pg_fetch_array($res)) {   
258                        $gnam=htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8");
[66]259                        $gnr=$row["bezirk"];
[105]260                        $ag=htmlentities($row["ag"], ENT_QUOTES, "UTF-8");     
261                        $anr=$row["stelle"];
262                        $zgmk++;
263                }
264                if ($zgmk == 0) {
265                        echo "\n<div class='gk' title='Grundbuchbezirk'>";
266                                echo "\n\t\t<p class='err'><img class='nwlink' src='ico/GB-Bezirk.ico' width='16' height='16' alt='Bez.'>";
267                                        echo  " Bezirk ".$zgbbez." ist unbekannt.</p>";
268                        echo "\n</div>";
269                        return;
270                }
271
272                // AG-Knoten davor setzen
273                echo "\n<div class='ga' title='Amtsgricht'>";
274                        echo "\n\t\t<img class='nwlink' src='ico/Gericht.ico' width='16' height='16' alt='Amtsgericht'> ";
275                        echo "AG <a href='alkisnav_grd.php?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;ag=".$anr."'>";               
276                                echo $ag."</a> (".$anr.")";
277                echo "\n</div>";
278                echo "\n<div class='gk' title='GB-Bezirk'>";
279                        echo "\n\t\t<img class='nwlink' src='ico/GB-Bezirk.ico' width='16' height='16' alt='Bez.'> ";
280                        echo "<a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;gbkennz=".$zgbbez."'>";               
281                        echo $gnam."</a> (".$zgbbez.")";
282                        // alternativ AG-Link hinter dem Bezirk
283                //      echo " des AG <a href='alkisnav_grd.php?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;ag=".$anr."'>".$ag."</a>";                       
284                echo "\n</div>";
285        }
286        $sql ="SELECT b.gml_id, b.buchungsblattnummermitbuchstabenerweiterung AS blatt FROM ax_buchungsblatt b ";
287        $sql.="WHERE b.bezirk= $1 ORDER BY b.buchungsblattnummermitbuchstabenerweiterung LIMIT $2 ;";
288        $v=array($zgbbez, $linelimit);
289        $res=pg_prepare("", $sql);
290        $res=pg_execute("", $v);
291        if (!$res) {
292                echo "\n<p class='err'>Fehler bei Bezirk.</p>";
293                if ($debug >= 3) {echo "\n<p class='err'>".$sql."</p>";}
294        }
295        $cntbl=0; // Counter Blatt/Bezirk
296        // Loop  B L A T T     
297        while($row = pg_fetch_array($res)) {   
298                $blatt=$row["blatt"];
[152]299                $blattd=ltrim($blatt, "0");
300                $gml=$row["gml_id"];
[105]301                echo "\n<div class='gb' title='GB-Blatt'>";
302                        echo "\n\t<a title='Nachweis' href='javascript:imFenster(\"".$auskpath."alkisbestnw.php?gkz=".$gkz."&amp;gmlid=".$gml."\")'>";
[129]303                                echo "\n\t\t<img class='nwlink' src='ico/GBBlatt_link.ico' width='16' height='16' alt='Blatt'>";
[105]304                        echo "\n\t</a> ";
305                        echo "Blatt <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;blattgml=".$gml."&amp;gbkennz=".$zgbbez."-".$blatt."'>&nbsp;".$blattd."&nbsp;</a>";
[278]306                echo "\n</div>";
[105]307                $cntbl++;
308        }
309        if($cntbl == 0) {
310                echo "\n<p class='anz'>Kein Blatt im Bezirk.</p>";
[278]311        } elseif($cntbl >= $linelimit) {
312                echo "\n<p class='anz'>".$cntbl." Bl&auml;tter ... und weitere</p>";
313                // +++ Hier oft ÃŒberschritten! BlÀtter-Funktion einfÃŒhren
314                echo "\n<p>Geben sie ein: '".$zgbbez."-999A'<br>wobei '999A' = gesuchtes GB-Blatt</p>";
315        } elseif ($cntbl > 1) {
316                echo "\n<p class='anz'>".$cntbl." Bl&auml;tter</p>"; // im Limit       
317        }
[105]318        return;
319}
320
321function gml_blatt() {
322        // Kennzeichen "Bezirk + Blatt" eingegeben. Dazu die gml_id des Blattes ermitteln.
323        global $con, $gkz, $debug, $zgbbez, $zblatt, $zblattn, $zblattz;
324        $sql ="SELECT b.gml_id, b.buchungsblattnummermitbuchstabenerweiterung AS blatt FROM ax_buchungsblatt b ";
325        $sql.="WHERE b.bezirk= $1 AND b.buchungsblattnummermitbuchstabenerweiterung ";
[154]326
[152]327        if ($zblattz == "") { // Ohne Buchstabenerweiterung: Formate '123','000123 ','0000123'
[154]328                $sql.="IN ('".$zblattn."','".str_pad($zblattn, 6, "0", STR_PAD_LEFT)." ','".str_pad($zblattn, 7, "0", STR_PAD_LEFT)."');";
329        } else { // Mit Buchstabenerweiterung: '000123A'
330                $sql.="='".str_pad($zblattn, 6, "0", STR_PAD_LEFT).$zblattz."';";
331        }
332        $v=array($zgbbez);
333        $res=pg_prepare("", $sql);
[105]334        $res=pg_execute("", $v);
335        if (!$res) {
336                echo "\n<p class='err'>Fehler bei Blatt (Kennzeichen).</p>";
337                return;
338        }
339        $cntbl=0; // Counter Blatt
340        while($row = pg_fetch_array($res)) {   
341                $bl_gml=$row["gml_id"];
342                $zblatt=$row["blatt"]; // das tatsaechliche Format (mit/ohne fuehrende 0)
343                $cntbl++;
344        }
345        if($cntbl == 0) {
346                echo "\n<p class='err'>Grundbuchblatt '".$zgbbez."-".$zblatt."' nicht gefunden.</p>";
[154]347        } elseif ($cntbl == 1) {
[278]348                return $bl_gml;
[105]349        }
350        return;
351}
352
[278]353/*
354function EinBlatt_ALT($showParent) {
355        // Kennzeichen Bezirk + Blatt wurde eingegeben
356        // UrsprÃŒngliche Version bis 2013-04-24
357        global $con, $gkz, $debug, $gemeinde, $epsg, $auskpath, $zgbbez, $zblatt, $zblattn, $zblattz, $blattgml, $zbvnr;
358
[105]359        if ($showParent) {
[278]360        // +++ nur der Schluessel ist bekannt. Bezirks-Namen und Amtsgericht noch ermitteln ++++
361                echo "\n<div class='gk' title='Grundbuch-Bezirk'>";
362                        echo "\n\t\t<img class='nwlink' src='ico/GB-Bezirk.ico' width='16' height='16' alt='Bez.'> ";
[105]363                        echo "Bezirk <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;gbkennz=".$zgbbez."'>";               
364                        echo $zgbbez."</a>";
365                echo "\n</div>";
366                echo "\n<div class='gb' title='GB-Blatt'>";
367                        echo "\n\t<a title='Nachweis' href='javascript:imFenster(\"".$auskpath."alkisbestnw.php?gkz=".$gkz."&amp;gmlid=".$blattgml."\")'>";
[278]368                                echo "\n\t\t<img class='nwlink' src='ico/GBBlatt_link.ico' width='16' height='16' alt='Blatt'>";
[105]369                        echo "\n\t</a> ";
370                        echo "Blatt <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;blattgml=".$blattgml."&amp;gbkennz=".$zgbbez."-".$zblatt."'>&nbsp;".$zblattn.$zblattz."&nbsp;</a>";
[278]371                echo "\n</div>";
[105]372        }
373        // Blatt ->  B u c h u n g s s t e l l e
374        $sql ="SELECT s.gml_id, s.laufendenummer AS lfd FROM ax_buchungsstelle s ";
375        $sql.="JOIN alkis_beziehungen v ON s.gml_id=v.beziehung_von ";
376        $sql.="JOIN ax_buchungsblatt b ON v.beziehung_zu=b.gml_id ";
377        $sql.="WHERE v.beziehungsart='istBestandteilVon' AND b.gml_id= $1 ORDER BY s.laufendenummer;";
378        // +++ Buchungen ohne FLST weglassen?
379        // +++ Counter FLST ausgeben, Buchungen mit 0 weglassen
380        $v=array($blattgml);
[278]381        $res=pg_prepare("", $sql);
[105]382        $res=pg_execute("", $v);
383        if (!$res) {
384                echo "\n<p class='err'>Fehler bei Blatt.</p>";
385                if ($debug >= 3) {echo "\n<p class='err'>".$sql."</p>";}
386        }
387        $cntbu=0; // Counter Buchung/Blatt
388        while($row = pg_fetch_array($res)) {   
389                $bs_gml=$row["gml_id"];         
390                $lfd=$row["lfd"];
391                echo "\n<div class='gs'>";
392                        echo "\n\t\t<img class='nwlink' title='Grundst&uuml;ck' src='ico/Grundstueck.ico' width='16' height='16' alt='GS'> ";
393                        echo "Buchung <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;gbuchung=".$bs_gml."&amp;gbkennz=".$zgbbez."-".$zblatt."-".$lfd."'>&nbsp;".$lfd."&nbsp;</a>";
394                echo "\n</div>";
395                $cntbu++;
396        }
397        if($cntbu == 0) {
398                echo "\n<p class='anz'>Keine Buchung gefunden.</p>";
[278]399        } elseif($cntbu == 1) {
[105]400                $zbvnr=$lfd; // mit dieser BVNR gleich weiter machen
401                // Blatt zerteilen (benoetigt in gml_buchungsstelle)
402                if (trim($zblatt, "0..9") == "") { // Normalfall: nur Zahlen
403                        $zblattn= ltrim($zblatt, "0");
404                        $zblattz="";
405                } else { // Sonderfall: Zusatz-Buchstabe am Ende
406                        $zblattn=ltrim(substr($zblatt,0,$len-1), "0"); // ohne fuehrende Nullen
407                        $zblattz=strtoupper(substr($zblatt,$len-1,1));
408                }
409        } else {
[278]410                echo "\n<p class='anz'>".$cntbu."Buchungen.</p>";
411        }
[105]412        return $cntbu;
413}
414*/
[278]415
416function EinBlatt($showParent) {
417        // Kennzeichen Bezirk + Blatt wurde eingegeben
418        global $con, $gkz, $debug, $gemeinde, $epsg, $auskpath, $zgbbez, $zblatt, $zblattn, $zblattz, $blattgml, $zbvnr;
419
[105]420        if ($showParent) {
[278]421        // +++ nur der Schluessel ist bekannt. Bezirks-Namen und Amtsgericht noch ermitteln ++++
422                echo "\n<div class='gk' title='Grundbuch-Bezirk'>";
423                        echo "\n\t\t<img class='nwlink' src='ico/GB-Bezirk.ico' width='16' height='16' alt='Bez.'> ";
424                        echo "Bezirk <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;gbkennz=".$zgbbez."'>";               
425                        echo $zgbbez."</a>";
426                echo "\n</div>";
427                echo "\n<div class='gb' title='GB-Blatt'>";
428                        echo "\n\t<a title='Nachweis' href='javascript:imFenster(\"".$auskpath."alkisbestnw.php?gkz=".$gkz."&amp;gmlid=".$blattgml."\")'>";
429                                echo "\n\t\t<img class='nwlink' src='ico/GBBlatt_link.ico' width='16' height='16' alt='Blatt'>";
430                        echo "\n\t</a> ";
431                        echo "Blatt <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;blattgml=".$blattgml."&amp;gbkennz=".$zgbbez."-".$zblatt."'>&nbsp;".$zblattn.$zblattz."&nbsp;</a>";
432                echo "\n</div>";
433        }
434
435        // Blatt -> Buchungsstelle -> Flurstueck
436        $linelimit = 200; // Max. Anzahl FS
437        GB_Buchung_FS($linelimit); // Externe Function
438
439        return 0;
440       
441}
442
443function gml_buchungsstelle() {
[105]444        // Kennzeichen "Bezirk + Blatt + BVNR" eingegeben. Dazu die gml_id der Buchungsstelle ermitteln.
445        global $con, $gkz, $debug, $zgbbez, $zblatt, $zblattn, $zblattz, $zbvnr;
446        // Blatt ->  B u c h u n g s s t e l l e
447        $sql ="SELECT s.gml_id FROM ax_buchungsstelle s ";
448        $sql.="JOIN alkis_beziehungen v ON s.gml_id=v.beziehung_von ";
449        $sql.="JOIN ax_buchungsblatt b ON b.gml_id=v.beziehung_zu ";
450        $sql.="WHERE v.beziehungsart='istBestandteilVon' ";
451        $sql.="AND b.bezirk= $1 AND b.buchungsblattnummermitbuchstabenerweiterung ";
[154]452        if ($zblattz == "") { // Ohne Buchstabenerweiterung
453                //Formate '123','000123 ','0000123'
454                $sql.="IN ('".$zblattn."','".str_pad($zblattn, 6, "0", STR_PAD_LEFT)." ','".str_pad($zblattn, 7, "0", STR_PAD_LEFT)."')";
455        } else { // Mit Buchstabenerweiterung: '000123A'
456                $sql.="='".str_pad($zblattn, 6, "0", STR_PAD_LEFT).$zblattz."'";
457        }
458        $sql.=" AND s.laufendenummer= $2 ;";
459
[152]460        $v=array($zgbbez, $zbvnr);
[154]461        $res=pg_prepare("", $sql);
[105]462        $res=pg_execute("", $v);
463        if (!$res) {
464                echo "\n<p class='err'>Fehler bei Buchungsstelle (Kennzeichen).</p>";
465                return;
466        }
467        $zbs=0;
468        while($row = pg_fetch_array($res)) {   
469                $bs_gml=$row["gml_id"];
470                $zbs++;
471        }
472        if($zbs == 0) {
473                echo "\n<p class='err'>Buchung ".$zgbbez."-".$zblattn.$zblattz."-".$zbvnr." nicht gefunden.</p>";
474                return;
475        } elseif($zbs > 1) { // nur TEST
476                echo "\n<p class='err'>Buchungsstelle mehrfach gefunden.</p>";
477                return;
478        } else {
479                return $bs_gml;
480        }
481}
482
483function EinGrundstueck($showParent) {
484        // Die gml_id der Buchungsstelle ist bekannt.
485        global $con, $gkz, $debug, $gemeinde, $epsg, $scalefs, $epsg, $auskpath, $gbuchung, $zgbbez, $zblatt, $zblattn, $zblattz, $zbvnr, $gfilter;
[152]486        // NoLimit?
[278]487        if ($showParent) { // wenn Kennzeichen bekannt ist, dann auch Blatt ausgeben
[105]488
[278]489                if ($zgbbez.$zblatt != "") {
490                        // +++ SchlÃŒssel ist bekannt. Namen und Amtsgericht dazu ermitteln
491                        // +++ oder Namen als &bez= ÃŒbermitteln?
492                        echo "\n<div class='gk' title='GB-Bezirk'>";
[105]493                                echo "\n\t\t<img class='nwlink' src='ico/GB-Bezirk.ico' width='16' height='16' alt='Bez.'> ";
494                                echo "<a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;gbkennz=".$zgbbez."'>";               
495                                echo "Bezirk ".$zgbbez."</a>";
496                        echo "\n</div>";                       
497                        echo "\n<div class='gb' title='GB-Blatt'>";
498                                echo "\n\t\t<img class='nwlink' src='ico/GBBlatt.ico' width='16' height='16' alt='Blatt'> ";
499                                echo "Blatt <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;gbkennz=".$zgbbez."-".$zblatt."'>&nbsp;".$zblattn.$zblattz."&nbsp;</a>";
[152]500                        echo "\n</div>";
[105]501                } else {
502                        echo "<p class='err'>Kennzeichen Bezirk und Blatt nicht gesetzt</p>";
503                }
504
[278]505                echo "\n<div class='gs'>";
[105]506                        echo "\n\t\t<img class='nwlink' title='Grundst&uuml;ck' src='ico/Grundstueck.ico' width='16' height='16' alt='GS'> ";
507                        echo "Buchung <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;gbuchung=".$gbuchung."&amp;gbkennz=".$zgbbez."-".$zblattn.$zblattz."-".$zbvnr."'>&nbsp;".$zbvnr."&nbsp;</a>";
[152]508                echo "\n</div>";
[105]509        }
510        // +++ Ermitteln anderer Buchungsstellen mit Rechten an dieser
511        // +++ Ermitteln anderer Buchungsstellen wo diese Rechte hat
512        // +++ Filter "Gemeinde" berÃŒcksichtigt!! Wenn gesetzt.
513
514        // SQL-Bausteine
[278]515        $sql1 ="SELECT g.gemeinde, g.gemarkungsname, f.gml_id, f.flurnummer, f.zaehler, f.nenner, ";
516        if($epsg == "25832") { // Transform nicht notwendig
[105]517                $sql1.="st_x(st_Centroid(f.wkb_geometry)) AS x, ";
[278]518                $sql1.="st_y(st_Centroid(f.wkb_geometry)) AS y ";
519        } else { 
[115]520                $sql1.="st_x(st_transform(st_Centroid(f.wkb_geometry),".$epsg.")) AS x, ";
[278]521                $sql1.="st_y(st_transform(st_Centroid(f.wkb_geometry),".$epsg.")) AS y ";                       
522        }
[105]523        $sql1.="FROM ";
[278]524
525        $sqla1 ="JOIN alkis_beziehungen vfb ON s1.gml_id = vfb.beziehung_zu ";
526        $sqla2 ="JOIN alkis_beziehungen vfb ON s2.gml_id = vfb.beziehung_zu ";
527
528        // Zwischen-JOIN (zusÀtzlich nur bei zweiter Abfrage)
529        $sqlz ="JOIN alkis_beziehungen vss ON vss.beziehung_von = s1.gml_id ";
530        $sqlz.="JOIN ax_buchungsstelle s2 ON vss.beziehung_zu = s2.gml_id ";
531
532        $sql2 ="JOIN ax_flurstueck f ON ....  ";
533        $sql2.="JOIN pp_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkung ";
534        $sql2.="WHERE v.beziehungsart='istGebucht' AND v.beziehung_zu= $1 "; // id buchungsstelle
535        switch ($gfilter) { // Filter Gemeinde
536                case 1: // Einzelwert
537                        $sql2.="AND g.gemeinde=".$gemeinde." "; break;
538                case 2: // Liste
539                        $sql2.="AND g.gemeinde in (".$gemeinde.") "; break;
540        }
541        $sql2.="ORDER BY f.gemarkungsnummer, f.flurnummer, f.zaehler, f.nenner;";
542
543        $sql=$sql1.$sqla1.$sql2; // Direkte Buchungen
544        $v=array($gbuchung);
[105]545        $res=pg_prepare("", $sql);
546        $res=pg_execute("", $v);
547        if (!$res) {
548                echo "\n<p class='err'>Fehler bei Buchungsstelle (gml).</p>";
549                if ($debug >= 3) {echo "\n<p class='err'>".$sql."</p>";}
550        }
551        $zfs=0;
552        while($row = pg_fetch_array($res)) {   
553                $fs_gml=$row["gml_id"];
554                $gemei=$row["gemeinde"];
555                $gmkg=$row["gemarkungsname"];
[278]556                $flur=$row["flurnummer"];
[105]557                $fskenn=$row["zaehler"];
558                if ($row["nenner"] != "") {$fskenn.="/".$row["nenner"];} // Bruchnummer
559                $x=$row["x"];
560                $y=$row["y"];
561
[278]562                // FILTER OBEN, IN SQL - nicht HIER
563                if($gemeinde > 0 and $gemeinde != $gemei and $gfilter == 1) { // ex-territorial
[105]564                        if ($debug >= 2) {
[278]565                                echo "<p class='dbg'>Gemkg ".$gmkg." liegt in Gemeinde '".$gemei."' nicht '".$gemeinde."'</p>";
566                        }
567                        echo "\n<div class='fs' title='Kein Zugriff! Liegt au&szlig;erhalb des Gebietes.'>";
[105]568                                echo "\n\t\t<img class='nwlink' src='ico/Flurstueck_Leer.ico' width='16' height='16' alt='FS'> (".$gmkg." ".$flur."-".$fskenn." )";
569                        echo "\n</div>";                       
570                } else {
571                        echo "\n<div class='fs'>";
572                                echo "\n\t<a title='Nachweis' href='javascript:imFenster(\"".$auskpath."alkisfsnw.php?gkz=".$gkz."&amp;gmlid=".$fs_gml."\")'>";
[129]573                                        echo "\n\t\t<img class='nwlink' src='ico/Flurstueck_Link.ico' width='16' height='16' alt='FS'>";
[105]574                                echo "\n\t</a> ";
575                                echo "\n\t".$gmkg." <a title='Flurst&uuml;ck positionieren 1:".$scalefs."' href='";
576                                                echo "javascript:parent.parent.parent.mb_repaintScale(\"mapframe1\",".$x.",".$y.",".$scalefs."); ";                                                 echo "parent.parent.showHighlight(".$x.",".$y.")' ";
[115]577                                        echo "onmouseover='parent.parent.showHighlight(".$x.",".$y.")' ";
578                                        echo "onmouseout='parent.parent.hideHighlight()'>&nbsp;";
[66]579                                echo $flur."-".$fskenn."&nbsp;</a>";
[105]580                        echo "\n</div>";
581                }
582                $zfs++;
583        }
584        if($zfs == 0) {
585                echo "\n<p class='anz'>Kein Flurst&uuml;ck.</p>";
[278]586        } elseif($zfs > 1) {
587                echo "\n<p class='anz'>".$zfs." Flurst&uuml;ck.</p>";
588        }
589        return;
590}
[105]591
592// ===========
593// Start hier!
594// ===========
595if(isset($epsg)) {
596        #if ($debug >= 2) {echo "<p class='dbg'>aktueller EPSG='".$epsg."'</p>";} // aus MB
597        $epsg = str_replace("EPSG:", "" , $_REQUEST["epsg"]);   
[278]598} else {
[105]599        #if ($debug >= 1) {echo "<p class='err'>kein EPSG gesetzt</p>";}       
600        $epsg=$gui_epsg; // aus Conf
[278]601}
[105]602
603if ($gemeinde == "") {
[278]604        $gfilter = 0; // ungefiltert
[105]605        #if ($debug >= 2) {echo "<p class='dbg'>Kein Filter Gemeinde</p>";}
[278]606} elseif(strpos($gemeinde, ",") === false) {
607        $gfilter = 1; // Einzelwert
[105]608        #if ($debug >= 2) {echo "<p class='dbg'>Filter Gemeinde Einzelwert = '".$gemeinde."'</p>";}
[278]609} else {
610        $gfilter = 2; // Liste
[105]611        #if ($debug >= 2) {echo "<p class='dbg'>Filter Gemeinde Liste = '".$gemeinde."'</p>";}
[278]612}
613
[105]614// Auch wenn redundant: Das Kennzeichen fÃŒr Anzeige und weitere Links zerlegen
615$kennztyp=ZerlegungGBKennz($gbkennz);
616#if ($debug >= 2) {echo "<p class='dbg'>GB-Kennzeichen Typ=".$kennztyp."</p>";}
617
[278]618// Wurde eine gml_id (internes Kennzeichen) aus einem Self-Link verwendet?
[105]619// Dann hat das Prioritaet, also *nicht* nach $gbkennz suchen.
620if ($gbuchung != "") { // gml der Buchungsstelle
[278]621        $trans="Buchungsstelle";
622        EinGrundstueck(true);
623
[105]624} elseif($blattgml != "") { // gml des GB-Blattes
[278]625
626        // neue Version -> function GB_Buchung_FS
627        $trans="GB-Blatt mit Buchungen und Flst.";
628        EinBlatt(true);
629
630/*      alte Version (ohne die Function))
631        if (EinBlatt(true) == 1) { // darauf genau eine Buchung
632                $gbuchung=gml_buchungsstelle(); // gml_id zum Kennzeichen
633                $trans="Grundbuch-Blatt und 1 Buchung";
634                EinGrundstueck(false);
635        }
[105]636*/
[278]637
638} elseif(isset($ag)) { // Key des Amtsgerichtes
639        #if ($debug >= 2) {echo "<p class='dbg'>Link Amtsgericht=".$ag."</p>";}
640        $trans="GB-Bezirke zum Amtsgericht";
641        ListAG( "'".$ag."'" ); // noch mal Kopfzeile
642        ListGBBez("'".$ag."'", false);
[105]643
644} else { // Kein Self-Link, Eingabe im Formular
[278]645
646        switch ($kennztyp) {
647                case 0: // keine Eingabe
648                        $trans="Liste der Amtsgerichte";
649                        ListAG($ag_liste);
650                        break;
651                case 1: // Eingabe Bezirk-Name (-Teil) -> gefilterte Liste der Bezirke
[105]652                        $trans="Grundbuchbezirke gefiltert";
653                        $beznr=SuchGBBezName();
[278]654                        if ($beznr > 0) {  // eindeutig
[105]655                                $zgbbez=$beznr;
656                                $trans="Bezirk gefunden, Bl&auml;tter dazu";
[278]657                                EinBezirk(false); // gleich weiter
658                        };
[105]659                        break;
[278]660                case 2: // Eingabe Bezirk-Nummer -> Liste der BlÀtter
[105]661                        $trans="Bl&auml;tter im GB-Bezirk";
662                        EinBezirk(true);
[278]663                        break;
[105]664                case 3: // Eingabe Blatt -> Liste der Buchungen
665                        $trans="Buchungen auf GB-Blatt";
666                        $blattgml=gml_blatt(); // gml_id zum Blatt suchen
[278]667                        if ($blattgml != "") { // gefunden             
668                                if (EinBlatt(true) == 1) { // darauf genau eine Buchung
669                                        $trans="GB-Blatt und 1 Buchung";
670                                        $gbuchung=gml_buchungsstelle(); // gml_id zum Kennzeichen
671                                        EinGrundstueck(false);
[105]672                                }
673                        }
674                        break;
675                case 4: // Eingabe Buchung (Grundstueck) -> Liste der Flurstuecke
676                        $trans="Flurst. zur Buchungsstelle";
677                        $gbuchung=gml_buchungsstelle(); // gml_id zum Kennzeichen
[278]678                        if ($gbuchung != "") { // .. wurde geliefert
[105]679                                $trans="Buchungsstelle und 1 Flurst.";
[278]680                                EinGrundstueck(true);
681                        }
[105]682                        break;
683                case 9: // Fehler
684                        $trans="fehlerhafte Eingabe";
[278]685                        echo "\n<p class='err'>Bitte ein g&uuml;ltiges Grundbuchkennzeichen eingegeben, Format 'gggg-999999A-llll</p>";
686                        break;
687        }
[105]688}
689// Titel im Kopf anzeigen
690echo "\n<script type='text/javascript'>\n\ttranstitle('".$trans."')\n</script>";
[278]691 ?>
692
[66]693</body>
[278]694</html>
Note: See TracBrowser for help on using the repository browser.