source: trunk/data/mapbender/http/nav/alkisnav_grd.php @ 154

Revision 154, 25.2 KB checked in by frank.jaeger, 8 years ago (diff)

Suche nach Grundbuch: 3 Varianten von Blatt-Nummer berücksichtigen

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