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

Line 
1<?php
2/* Version vom
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.
13        2013-04-29      Test mit IE
14*/
15$cntget = extract($_GET);
16
17include("../../conf/alkisnav_conf.php"); // Konfigurations-Einstellungen
18include("alkisnav_fkt.php"); // Funktionen
19
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);
22echo <<<END
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">
32        <script type="text/javascript">
33                function imFenster(dieURL) {
34                        var link = encodeURI(dieURL);
35                        window.open(link,'','left=10,top=10,width=680,height=800,resizable=yes,menubar=no,toolbar=no,location=no,status=no,scrollbars=yes');
36                }
37                function transtitle(trans) {
38                        document.getElementById('transaktiontitle').innerHTML = trans;
39                }
40        </script>
41</head>
42<body>
43<a href='javascript:history.back()'>
44        <img src="ico/zurueck.ico" width="16" height="16" alt="&lt;&lt;" title="zur&uuml;ck" />
45</a>
46<dfn class='title' id='transaktiontitle'></dfn>
47
48END;
49
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
55function ZerlegungGBKennz($gbkennz) {
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
59        global $debug, $zgbbez, $zblatt, $zblattn, $zblattz, $zbvnr;            $arr=explode("-", $gbkennz, 3);
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
70        //'19'       linksbÃŒndig
71        //'000019 '  gefÃŒllt 6 + blank
72        //'000019A'  .. mit Zusatzbuchstabe
73        //'0300001'  gefÃŒllt 7, bei Blattart 5000 "fiktives Blatt"
74                $len=strlen($zblatt);
75                if ($len > 0 AND $len < 8) {           
76                        if (trim($zblatt, "0..9 ") == "") { // Normalfall: nur Zahlen (und Blank))
77                                $zblattn= rtrim(ltrim($zblatt, "0"), " ");
78                                $zblattz="";
79                        } else { // Sonderfall: Zusatz-Buchstabe am Ende
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++;
130        }
131        if($cnt == 0){ // falsch configuriert!
132                echo "\n<p class='anz'>Kein Amtsgericht aus Liste ".$$liste_ag.".</p>";
133        } elseif ($cnt >= $linelimit) {
134                echo "\n<p title='Bitte eindeutiger qualifizieren'>".$cnt." Amtsgerichte ... und weitere</p>";
135        } elseif ($cnt > 1) {
136                echo "\n<p class='anz'>".$cnt." Amtsgerichte</p>";
137        }
138        return 0;
139}
140
141function ListGBBez($liste_ag, $mit_ag) {
142        // Grundbuch-Bezirke auflisten.
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;
146        $linelimit=90;
147        $sql ="SELECT a.stelle, a.bezeichnung AS ag, g.bezirk, g.bezeichnung FROM ax_buchungsblattbezirk g ";
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:
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 ;";
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");
163                $gnr=$row["bezirk"];
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++;
175        }
176        if($cnt == 0){
177                echo "\n<p class='anz'>Kein Bezirk mit Bl&auml;ttern.</p>";
178        } elseif ($cnt >= $linelimit) {
179                echo "\n<p class='anz' title='Bitte eindeutiger qualifizieren'>".$cnt." Bezirke ... und weitere</p>";
180        } elseif($cnt > 1) {
181                echo "\n<p class='anz'>".$cnt." Bezirke</p>"; // im Limit       
182        }
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)){
198                        $match = trim(preg_replace("/\*/i","%", strtoupper($gbkennz)));
199                } else {
200                        $match = trim($gbkennz)."%";
201                }       
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");
215                $gnr=$row["bezirk"];
216                $ag=htmlentities($row["ag"], ENT_QUOTES, "UTF-8");             
217                $anr=$row["stelle"];
218                echo "\n<div class='gk' title='Grundbuch-Bezirk'>";
219                        echo "\n\t\t<img class='nwlink' src='ico/GB-Bezirk.ico' width='16' height='16' alt='Gemkg'> ";
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++;
225        }
226        if($cnt == 0){
227                echo "\n<p class='anz'>Kein Grundbuchbezirk.</p>";
228        } elseif ($cnt >= $linelimit) {
229                echo "\n<p title='Bitte eindeutiger qualifizieren'>".$cnt." Bezirke ... und weitere</p>";
230        } elseif ($cnt == 1) {
231                return $gnr; // Wenn eindeutig, gleich weiter
232        } elseif ($cnt > 1) {
233                echo "\n<p class='anz'>".$cnt." Bezirke</p>"; // im Limit       
234        }
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
242        // Dies Limit ist nicht ausreichend fÃŒr alle BlÀtter eines Bezirks, aber ...
243        // Wenn man die Blatt-Nr nicht kennt, kommt man hier sowieso nicht weiter.
244        // Es nutzt also nichts, hier tausende Nummern aufzulisten.
245        // +++ BlÀtter-Funktion einfÃŒhren analog Modul _eig
246        if ($showParent) {
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 ;";
249                $v=array($zgbbez);
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");
259                        $gnr=$row["bezirk"];
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"];
299                $blattd=ltrim($blatt, "0");
300                $gml=$row["gml_id"];
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."\")'>";
303                                echo "\n\t\t<img class='nwlink' src='ico/GBBlatt_link.ico' width='16' height='16' alt='Blatt'>";
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>";
306                echo "\n</div>";
307                $cntbl++;
308        }
309        if($cntbl == 0) {
310                echo "\n<p class='anz'>Kein Blatt im Bezirk.</p>";
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        }
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 ";
326
327        if ($zblattz == "") { // Ohne Buchstabenerweiterung: Formate '123','000123 ','0000123'
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);
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>";
347        } elseif ($cntbl == 1) {
348                return $bl_gml;
349        }
350        return;
351}
352
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
359        if ($showParent) {
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.'> ";
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."\")'>";
368                                echo "\n\t\t<img class='nwlink' src='ico/GBBlatt_link.ico' width='16' height='16' alt='Blatt'>";
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>";
371                echo "\n</div>";
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);
381        $res=pg_prepare("", $sql);
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>";
399        } elseif($cntbu == 1) {
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 {
410                echo "\n<p class='anz'>".$cntbu."Buchungen.</p>";
411        }
412        return $cntbu;
413}
414*/
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
420        if ($showParent) {
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() {
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 ";
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
460        $v=array($zgbbez, $zbvnr);
461        $res=pg_prepare("", $sql);
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;
486        // NoLimit?
487        if ($showParent) { // wenn Kennzeichen bekannt ist, dann auch Blatt ausgeben
488
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'>";
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>";
500                        echo "\n</div>";
501                } else {
502                        echo "<p class='err'>Kennzeichen Bezirk und Blatt nicht gesetzt</p>";
503                }
504
505                echo "\n<div class='gs'>";
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>";
508                echo "\n</div>";
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
515        $sql1 ="SELECT g.gemeinde, g.gemarkungsname, f.gml_id, f.flurnummer, f.zaehler, f.nenner, ";
516        if($epsg == "25832") { // Transform nicht notwendig
517                $sql1.="st_x(st_Centroid(f.wkb_geometry)) AS x, ";
518                $sql1.="st_y(st_Centroid(f.wkb_geometry)) AS y ";
519        } else { 
520                $sql1.="st_x(st_transform(st_Centroid(f.wkb_geometry),".$epsg.")) AS x, ";
521                $sql1.="st_y(st_transform(st_Centroid(f.wkb_geometry),".$epsg.")) AS y ";                       
522        }
523        $sql1.="FROM ";
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);
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"];
556                $flur=$row["flurnummer"];
557                $fskenn=$row["zaehler"];
558                if ($row["nenner"] != "") {$fskenn.="/".$row["nenner"];} // Bruchnummer
559                $x=$row["x"];
560                $y=$row["y"];
561
562                // FILTER OBEN, IN SQL - nicht HIER
563                if($gemeinde > 0 and $gemeinde != $gemei and $gfilter == 1) { // ex-territorial
564                        if ($debug >= 2) {
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.'>";
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."\")'>";
573                                        echo "\n\t\t<img class='nwlink' src='ico/Flurstueck_Link.ico' width='16' height='16' alt='FS'>";
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.")' ";
577                                        echo "onmouseover='parent.parent.showHighlight(".$x.",".$y.")' ";
578                                        echo "onmouseout='parent.parent.hideHighlight()'>&nbsp;";
579                                echo $flur."-".$fskenn."&nbsp;</a>";
580                        echo "\n</div>";
581                }
582                $zfs++;
583        }
584        if($zfs == 0) {
585                echo "\n<p class='anz'>Kein Flurst&uuml;ck.</p>";
586        } elseif($zfs > 1) {
587                echo "\n<p class='anz'>".$zfs." Flurst&uuml;ck.</p>";
588        }
589        return;
590}
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"]);   
598} else {
599        #if ($debug >= 1) {echo "<p class='err'>kein EPSG gesetzt</p>";}       
600        $epsg=$gui_epsg; // aus Conf
601}
602
603if ($gemeinde == "") {
604        $gfilter = 0; // ungefiltert
605        #if ($debug >= 2) {echo "<p class='dbg'>Kein Filter Gemeinde</p>";}
606} elseif(strpos($gemeinde, ",") === false) {
607        $gfilter = 1; // Einzelwert
608        #if ($debug >= 2) {echo "<p class='dbg'>Filter Gemeinde Einzelwert = '".$gemeinde."'</p>";}
609} else {
610        $gfilter = 2; // Liste
611        #if ($debug >= 2) {echo "<p class='dbg'>Filter Gemeinde Liste = '".$gemeinde."'</p>";}
612}
613
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
618// Wurde eine gml_id (internes Kennzeichen) aus einem Self-Link verwendet?
619// Dann hat das Prioritaet, also *nicht* nach $gbkennz suchen.
620if ($gbuchung != "") { // gml der Buchungsstelle
621        $trans="Buchungsstelle";
622        EinGrundstueck(true);
623
624} elseif($blattgml != "") { // gml des GB-Blattes
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        }
636*/
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);
643
644} else { // Kein Self-Link, Eingabe im Formular
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
652                        $trans="Grundbuchbezirke gefiltert";
653                        $beznr=SuchGBBezName();
654                        if ($beznr > 0) {  // eindeutig
655                                $zgbbez=$beznr;
656                                $trans="Bezirk gefunden, Bl&auml;tter dazu";
657                                EinBezirk(false); // gleich weiter
658                        };
659                        break;
660                case 2: // Eingabe Bezirk-Nummer -> Liste der BlÀtter
661                        $trans="Bl&auml;tter im GB-Bezirk";
662                        EinBezirk(true);
663                        break;
664                case 3: // Eingabe Blatt -> Liste der Buchungen
665                        $trans="Buchungen auf GB-Blatt";
666                        $blattgml=gml_blatt(); // gml_id zum Blatt suchen
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);
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
678                        if ($gbuchung != "") { // .. wurde geliefert
679                                $trans="Buchungsstelle und 1 Flurst.";
680                                EinGrundstueck(true);
681                        }
682                        break;
683                case 9: // Fehler
684                        $trans="fehlerhafte Eingabe";
685                        echo "\n<p class='err'>Bitte ein g&uuml;ltiges Grundbuchkennzeichen eingegeben, Format 'gggg-999999A-llll</p>";
686                        break;
687        }
688}
689// Titel im Kopf anzeigen
690echo "\n<script type='text/javascript'>\n\ttranstitle('".$trans."')\n</script>";
691 ?>
692
693</body>
694</html>
Note: See TracBrowser for help on using the repository browser.