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

Revision 152, 24.9 KB checked in by frank.jaeger, 12 years ago (diff)

Navigation Grundbuch: 2 Varianten fuer Blattnummer

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