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

Revision 140, 24.3 KB checked in by frank.jaeger, 9 years ago (diff)

Filter auf Gemeinde bei Navigation bei Suche nach Eigentümer. Dazu Hilfstabelle aufbauen.

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