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

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