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

Revision 105, 24.3 KB checked in by frank.jaeger, 13 years ago (diff)

Anpassung an PostNAS-Version 0.6:
Buchauskunft und Navigation: Formate des Feldes "lage" (Straßenschlüssel) werden gesteuert über einen neuen conf-Parameter $dbvers (05 oder 06).
Konverter-Scripte für PostNAS 0.6 in einem neuen Ordner.

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