source: trunk/mapbender/http/nav/alkisnav_fkt.php @ 431

Revision 425, 17.2 KB checked in by frank.jaeger, 2 years ago (diff)

Web-GIS-Auskunft und Mapbender2-Navigation: neue Konfigurations-Parameter und verbessertes Grundbuch-Modul

RevLine 
[278]1<?php
[399]2/*      Navigation mit ALKIS-Daten im Mapbender 2 - Teil "Funktionen"
[376]3        (Wird nicht direkt aufgerufen sonden in den anderen Modulen eingebunden).
[399]4        Datenbank-Struktur aus dem norGIS-ALKIS-Importer.
[376]5Version vom
6        2016-02-11 Version fÃŒr norGIS-ALKIS-Import aus Version Classic abgeleitet.
7        2016-11-28 Gemeinsam genutzte Datenbanken ermöglichen
[399]8        2018-02-15 Überarbeitung des Code
[405]9        2018-05-02 Link "Buchung" zum neuen GrundstÃŒcks-Nachweis
[411]10        2018-11-02 Suche GB-Blatt mit Wildcard wenn Zusatzbuchstabe nicht angegeben.
[413]11        2018-11-09 Full-Schema
[420]12        2019-02-12 Sortierung FlurstÃŒcksnummer repariert
[425]13        2021-11-23 Neue Var. $katamtmix  (Kataster-Amt-Mix).
14                   SchlÃŒsseltabellen sind mehrfach belegt. Dadurch doppelte Treffer bei der Suche.
[278]15*/
16
[330]17function is_ne_zahl($wert) {
18        // PrÃŒft, ob ein Wert ausschließlich aus den Zahlen 0 bis 9 besteht
19        if (trim($wert, "0..9") == "") {return true;} else {return false;}
20}
[282]21
[330]22function ZerlegungGBKennz($gbkennz) {
[411]23        // Das EINGEGEBENE Grundbuch-Kennzeichen auseinander nehmen (gggg-999999z-BVNR)
[330]24        // Return: 9=Fehler, 0=Listen alle Bezirke 1=Such Bezirk-Name
25        //  2=Such Bezirk-Nummer, 3=Such Blatt, 4=Such Buchung BVNR
26        global $zgbbez, $zblatt, $zblattn, $zblattz, $zbvnr;
27        $arr=explode("-", $gbkennz, 3);
28        $zgbbez=trim($arr[0]);
[356]29        if (count($arr) > 1) {
30                $zblatt=trim($arr[1]);
31                if (count($arr) > 2) {
32                        $zbvnr=trim($arr[2]);
33                } else {
34                        $zbvnr="";
35                }
36        } else {
37                $zblatt="";
38                $zbvnr="";
39        }
[330]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 BlattNr pruefen
[284]47        //'19'      linksbÃŒndig
48        //'000019 ' gefÃŒllt 6 + blank
49        //'000019A' .. mit Zusatzbuchstabe
50        //'0300001' gefÃŒllt 7, bei Blattart 5000 "fiktives Blatt"
[330]51                $len=strlen($zblatt);
[411]52                if ($len > 0 AND $len < 8) { // Eingabe LÀnge 1 bis 7
53                //      if (trim($zblatt, "0..9 ") == "") {
54                        if (preg_match('#^[0-9]{1,6}[ ]{0,1}$#', $zblatt)) { // Normalfall: nur Zahlen (und Blank am Ende))
[284]55                                $zblattn= rtrim(ltrim($zblatt, "0"), " ");
56                                $zblattz="";
[330]57                        } else { // Sonderfall: Zusatz-Buchstabe am Ende
58                                $zblattn=substr($zblatt,0,$len-1);
[411]59                                $zblattz=strtoupper(substr($zblatt,$len-1,1));
60                        //      if ((trim($zblattn, "0..9") == "") and (trim($zblattz, "A..Z") == "")) {
61                                if (preg_match('#^[0-9]{1,6}$#', $zblattn) and preg_match('#^[A-Z]{1}$#', $zblattz)) {
[330]62                                        $zblattn= ltrim($zblattn, "0"); // ohne fuehrende Nullen
63                                } else {
64                                        echo "<p class='err>Format 'Blatt': bis zu 6 Zahlen und ggf. ein Buchstabe</p>";       
65                                        return 9;
66                                }
67                        }
68                        if ($zbvnr == "") {
69                                return 3; // Such BLATT
70                        } elseif (is_ne_zahl($zbvnr)) {         
71                                // $zbvnr=ltrim($zbvnr,"0"); // DB-Format ist integer
72                                // Vorsicht, Wert "0" ist moeglich und gueltig
73                                return 4; // Such Grundstueck
74                        } else {
75                                echo "<p class='err>Die Buchungsstelle (BVNR) '".$zbvnr."' ist nicht numerisch</p>";
76                                return 9;
77                        }
78                } else {
79                        echo "<p class='err>Das Grundbuch-Blatt '".$zblatt."' ist ung&uuml;ltig.</p>";
80                        return 9;
81                }
82        }
[284]83}
84
85function suchfeld($suchstring) {        // Suchstring Ausgeben UND das Eingabeformular damit belegen
86        $out="<a title='Dies als Suchbegriff setzen' href='javascript:formular_belegung(\"".$suchstring."-\")'>".$suchstring."</a>";
87        return $out;
88}
89
[330]90// function Typ "zeile_**"  = Ausgabe eines Knotens
91// - Icon,  ggf. mit Link zur Buchauskunft
92// - Zeile, ggf. mit Link zur weiteren Auflösung untergeordneter Knoten
93// Hierin die Encodierung fÃŒr url und HTML.
94
[376]95function zeile_ag ($ag, $anr, $aktuell) {
96        // Zeile  A m t s g e r i c h t
[282]97        global $gkz, $gemeinde, $epsg, $auskpath;
98        if ($ag == "") {
99                $agd=$anr; // Ersatz: Nummer statt Name. Besser: Name immer fÃŒllen
100        } else {
101                $agd=htmlentities($ag, ENT_QUOTES, "UTF-8");
102        }
[356]103        if ($aktuell) {$cls=" aktuell";} else {$cls="";}
[399]104        echo "\n<div class='ga".$cls."' title='Amtsgericht'>"
105                ."\n\t\t<img class='nwlink' src='ico/Gericht.png' width='16' height='16' alt='AG' title='Amtsgericht'> "
106                ."AG <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;ag=".$anr."'>"
107                .$agd."</a> (".$anr.")"
108        ."\n</div>";
[282]109        return;
110}
111
[376]112function zeile_gbbez ($gnam, $zgbbez, $aktuell) {
113        // Zeile Grundbuch - B e z i r k
[284]114        // Parameter: aktuell = Bool fÃŒr farbliche Markierung der Zeile als aktuell angeklicktes Obj.
115        global $gkz, $gemeinde, $epsg, $person;
[282]116        $gnamd=htmlentities($gnam, ENT_QUOTES, "UTF-8");
[356]117        if ($aktuell) {$cls=" aktuell";} else {$cls="";}
[399]118        echo "\n<div class='gk".$cls."' title='GB-Bezirk'>"
119                ."\n\t\t<img class='nwlink' src='ico/GB-Bezirk.png' width='16' height='16' alt='Bez.' title='GB-Bezirk'> "
120                ."<a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;gbkennz=".$zgbbez
121                ."&amp;gbbeznam=".urlencode($gnam);
122                if ($person != "") { // EigentÃŒmer-Suche
123                        echo "&amp;person=".$person."'>"
124                        ."Bezirk ".$gnamd."</a> (".$zgbbez.")";         
125                } else {  // Grundbuch-Suche
126                        echo "'>"
127                        ."Bezirk ".$gnamd."</a> (".suchfeld($zgbbez).")";               
128                }
[282]129        echo "\n</div>";
130        return;
131}
132
[283]133function zeile_blatt ($bezirk, $beznam, $blattgml, $blatt, $dienend, $person, $aktuell) {
[376]134        // Zeile Grundbuch - B l a t t
135        // Aufruf aus Teil "Grundbuch" und Teil "EigentÃŒmer"
[411]136        // Parameter $beznam = Name des GB-Bezirks. Sollte nur gefÃŒllt sein, bei dienendem Blatt ("Recht an"). Wird vor die Zeile gesetzt.
137        // Normalerweise steht der Bezirk als Header-Zeile darÃŒber.
[282]138        global $gkz, $gemeinde, $epsg, $auskpath;
[376]139
[282]140        $blattd=ltrim($blatt, "0"); // Display-Version ohne fÃŒhrende Nullen
[356]141        if ($dienend) {$dientxt="dienendes ";} else {$dientxt="";}
[282]142        $blattlnk=urlencode($blatt); // trailing Blank
[356]143        if ($beznam != "") {$nam = $beznam." ";} else {$nam="";}
144        if ($aktuell) {$cls=" aktuell";} else {$cls="";}
[284]145
[330]146        echo "\n<div class='gb".$cls."' title='".$dientxt."GB-Blatt'>";
[284]147
148        // Icon / Nachweis
[282]149        if ($blattgml == "") { // Link zum Nachweis nur wenn GML bekannt
[376]150                echo "\n\t<img class='nwlink' src='ico/GBBlatt.png' width='16' height='16' alt='Blatt' title='".$dientxt."GB-Blatt'>";
[282]151        } else {
[399]152                echo "\n\t<a title='Nachweis' href='javascript:imFenster(\"".$auskpath."alkisbestnw.php?gkz=".$gkz."&amp;gmlid=".$blattgml."\")'>"
153                        ."\n\t\t<img class='nwlink' src='ico/GBBlatt_link.png' width='16' height='16' alt='Blatt' title='Nachweis'>"
154                ."\n\t</a> ";
[282]155        }
[284]156
157        // Text, Self-Link
[399]158        echo $nam." <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg
159        ."&amp;blattgml=".$blattgml."&amp;gbkennz=".$bezirk."-".$blattlnk;
[282]160
[411]161        if ($beznam != "") {echo "&amp;gbbeznam=".urlencode($beznam);}
[282]162        if ($person != "") {echo "&amp;person=".$person;} // nur fÃŒr EigentÃŒmer-Suche
163        echo "'>Blatt&nbsp;".$blattd."</a>\n</div>";
164        return;
165}
166
[283]167function zeile_buchung($buchunggml, $bvnr, $blattkennz, $dienend, $aktuell) {
[282]168        // Zeile  B u c h u n g s s t e l l e  -  GrundstÃŒck ausgeben
[376]169        global $gkz, $gemeinde, $epsg, $auskpath, $debug;
170        //if ($debug > 1) {echo "<p class='dbg'>function zeile_buchung()<p>";} // Ablauf-Verfolgung
171
172        if ($bvnr == 0) { // Keine echten BVNR vergeben (z.B. Lippe)
173                $bvnra = "-"; // Fehlanzeige
[282]174        } else {
175                $bvnra = str_pad($bvnr, 4, "0", STR_PAD_LEFT); // auf 4 Stellen
176        }
[356]177        if ($dienend) {
[282]178                $ti="dienendes&nbsp;";
179                $re="Recht an ";
180        } else {
181                $ti="";
182                $re="";
183        }
[356]184        if ($aktuell) {$cls=" aktuell";} else {$cls="";}
[405]185        echo "\n<div class='gs".$cls."' title='".$ti."Grundst&uuml;ck'>";
186
187        // Icon / Nachweis
188        if ($buchunggml == "") { // Link zum Nachweis nur wenn GML bekannt
189                echo "\n\t<img class='nwlink' src='ico/Grundstueck.png' width='16' height='16' alt='GS'  title='".$ti."Grundst&uuml;ck'> ".$re;
190        } else {
191                echo "\n\t<a title='Nachweis' href='javascript:imFenster(\"".$auskpath."alkisgsnw.php?gkz=".$gkz."&amp;gmlid=".$buchunggml."\")'>"
192                        ."\n\t\t<img class='nwlink' src='ico/Grundstueck_Link.png' width='16' height='16' alt='Buchung' title='".$ti."Grundst&uuml;ck'> ".$re
193                ."\n\t</a> ";
194        }
195
[283]196        if ($blattkennz == "") { // ohne Link
197                echo "Buchung ".$bvnra;
198        } else {
199                $gbkennlnk=urlencode($blattkennz."-".$bvnr); // Trailing Blanks!
[399]200                echo "<a href='".$_SERVER['SCRIPT_NAME']. "?gkz=". $gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;buchunggml=".$buchunggml
201                ."&amp;gbkennz=".$gbkennlnk."'>Buchung ".$bvnra."</a>";
[282]202        }
[283]203        echo "\n</div>";
204        return;
[282]205}
206
[315]207function zeile_gemeinde ($gmdnr, $gmdname, $aktuell) {
[376]208        // Eine Kopf-Zeile zu Gemeinde ausgeben
[315]209        global $gkz, $gemeinde, $epsg;
210        $stadt=htmlentities($gmdname, ENT_QUOTES, "UTF-8");
211        $bez=urlencode($gmdname);
[356]212        if ($aktuell) {$cls=" aktuell";} else {$cls="";}
[399]213        echo "\n<div class='gm".$cls."' title='Gemeinde'>"
214                ."\n\t\t<img class='nwlink' src='ico/Gemeinde.png' width='16' height='16' alt='Stadt'>"
215                ." Gem. <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;gm=".$gmdnr."&amp;bez=".$bez."'>"
216                ." ".$stadt."</a> (".substr($gmdnr, 5).")"
217        ."\n</div>";
[315]218        return;
219}
220
[376]221function zeile_gemarkung($gkgnr, $gkgname, $aktuell) {
222        // Eine Kopf-Zeile zur Gemarkung ausgeben
223        global $con, $gkz, $gemeinde, $epsg, $gfilter;
224
225        if ($gkgname == "") { // Falls Gem.-Name fehlt, in DB nachschlagen
226                $sql ="SELECT bezeichnung FROM ax_gemarkung WHERE gemarkungsnummer = $1 LIMIT 1;";
227                $v=array($gnr);
228                $res=pg_prepare("", $sql);
229                $res=pg_execute("", $v);
230                if (!$res) {echo "\n<p class='err'>Fehler bei Gemarkungsname.</p>";}
231                $row = pg_fetch_array($res);
232                $gkgname=$row["bezeichnung"];
233        }
234
235        if ($gkgname == "") {$gkgname = "(unbekannt)";}
236        $gnam=htmlentities($gkgname, ENT_QUOTES, "UTF-8");
237        if ($aktuell) {$cls=" aktuell";} else {$cls="";}
238
[399]239        echo "\n<div class='gk".$cls."' title='Gemarkung'>"
240                ."\n\t\t<img class='nwlink' src='ico/Gemarkung.png' width='16' height='16' alt='GKG' title='Gemarkung'>"
241                ." OT <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;fskennz=".$gkgnr."'>"
242                ." ".$gnam."</a> (".substr($gkgnr, 2).")"
243        ."\n</div>";
[376]244        return;
245}
246
[283]247function zeile_flurstueck ($fs_gml, $fskenn, $x, $y, $gmkg, $flur, $aktuell) {
[282]248        // Zeile mit Icon (Link zum Buch-Nachweis) und Text (Link zum Positionieren)
249        global $gkz, $gemeinde, $epsg, $auskpath, $scalefs;
[315]250
[356]251        if ($aktuell) {$cls=" aktuell";} else {$cls="";}
[399]252        echo "\n<div class='fs".$cls."'>"
253        ."\n\t<a title='Nachweis' href='javascript:imFenster(\"".$auskpath."alkisfsnw.php?gkz=".$gkz."&amp;gmlid=".$fs_gml."\")'>"
254                ."\n\t\t<img class='nwlink' src='ico/Flurstueck_Link.png' width='16' height='16' alt='FS' title='Nachweis'>"
255        ."\n\t</a>\n\t";               
[282]256
[399]257        echo "&nbsp;<a title='Flurst&uuml;ck positionieren 1:".$scalefs."' href='"
258        ."javascript:transtitle(\"auf Flurst&uuml;ck positioniert\"); "
259                ."parent.parent.parent.mb_repaintScale(\"mapframe1\",".$x.",".$y.",".$scalefs."); "
260                ."parent.parent.showHighlight(".$x.",".$y.");' "
261        ."onmouseover='parent.parent.showHighlight(".$x.",".$y.")' "
262        ."onmouseout='parent.parent.hideHighlight()'>";
[282]263
264        if ($gmkg == "" ) {
265                echo "Flst. "; // Im FS-Teil: Gem+Flur als Knoten darÃŒber ($gmkg und $flur leer)
266        } else {
267                echo $gmkg." "; // Im GB-und Nam-Teil in der Zeile angezeigt
268        }
269        if ($flur != "" ) {echo $flur."-";}
270        echo $fskenn."</a>\n</div>";
271        return;
272}
273
274function zeile_person ($persongml, $nachname, $vorname) {
[376]275        // Zeile  P e r s o n (oder Firma)
[282]276        global $gkz, $gemeinde, $epsg, $auskpath;
[376]277
[282]278        $nnam=htmlentities($nachname, ENT_QUOTES, "UTF-8");
[399]279        $namlnk=urlencode(substr($nachname,0,50));
[282]280        $vnam=htmlentities($vorname, ENT_QUOTES, "UTF-8");
[399]281        // Link zur Auskunft Person, Icon differenzieren nach Eigentuemerart?
282        echo "<div class='pe'>"
283                ."\n\t<a title='Nachweis' href='javascript:imFenster(\"".$auskpath."alkisnamstruk.php?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;gmlid=".$persongml."\")'>"
284                        ."\n\t\t<img class='nwlink' src='ico/Eigentuemer.png' width='16' height='16' alt='EIG' title='Nachweis'>"
285                ."\n\t</a>"             
286                ."\n\t<a title='Person' href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;person=".$persongml."&amp;name=".$namlnk."'>".$nnam.", ".$vnam."</a>"
287        ."</div>";
[283]288return;
[282]289}
290
[376]291function zeile_strasse ($gkey, $skey, $sname, $kgml, $gemname) {
292        // Listen-Zeile (nicht Kopfzeile) fÃŒr eine gefundenen Straße ausgeben.
293        // Die Kopfzeile ÃŒber den Hausnummern hat einen zusÀtzlichen Koordinaten-Map-Link, das ist in der Liste zu aufwÀndig?
294        global $gkz, $gemeinde, $epsg, $auskpath, $gfilter, $debug;
295
296        echo "\n\t<div class='stl' title='Stra&szlig;enschl&uuml;ssel ".$skey."'>";
297
298        // Icon -> Buchnachweis
[399]299        echo "\n\t<a title='Nachweis' href='javascript:imFenster(\"".$auskpath."alkisstrasse.php?gkz=".$gkz."&amp;gmlid=".$kgml."\")'>"
300                ."\n\t\t<img class='nwlink' src='ico/Lage_mit_Haus.png' width='16' height='16' alt='STR' title='Auskunft Stra&szlig;e'>"
301        ."\n\t</a>";
[376]302        // Zeile -> Suche HsNr
[399]303        echo " <a class='st' href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;str_schl=".$gkey."' title='in ".$gemname."'>".$sname
304        ."</a> (".$skey.")";
[376]305
306        // Die Gemeinde dahinter falls mehrere möglich
307        switch ($gfilter) {
308                case 0: // Kein Filter
309                        echo " in ".$gemname; break;
310                case 2: // Liste
311                        echo " in ".$gemname; break;
312        }
313        echo "</div>";
314        return;
315}
316
[283]317function GB_Buchung_FS ($linelimit, $blattgbkenn) {
[284]318        // Zu einem Grundbuch-Blatt (identifiziert ÃŒber seine gml_id) suchen der
319        // Buchungen (Gruppenwechsel) und FlurstÃŒcke (Links)
[425]320        global $gemeinde, $blattgml, $epsg, $gfilter, $debug, $katamtmix;
[278]321
[334]322        // SQL-Bausteine
[330]323        // vorne gleich
[413]324        $sql1 ="SELECT s1.laufendenummer AS lfd, s1.gml_id AS bsgml, f.gml_id, f.flurnummer, f.zaehler, f.nenner, "; // f.gemeindezugehoerigkeit_gemeinde, ?
[278]325        if($epsg == "25832") { // Transform nicht notwendig
[399]326                $sql1.="st_x(st_centroid(f.wkb_geometry)) AS x, st_y(st_centroid(f.wkb_geometry)) AS y, ";
[278]327        } else { 
[399]328                $sql1.="st_x(st_transform(st_centroid(f.wkb_geometry), ".$epsg.")) AS x, "
329                        ."st_y(st_transform(st_centroid(f.wkb_geometry), ".$epsg.")) AS y, ";                   
[278]330        }
[376]331        $sql1.="g.bezeichnung FROM ax_buchungsstelle s1 ";
[278]332
[334]333        // zwischen, Variante 1.
[339]334    $sqlz1="JOIN ax_flurstueck f ON f.istgebucht=s1.gml_id ";
[278]335
[334]336        // zwischen, Variante 2. Nur an oder "an" und "zu"?
[399]337        $sqlz2 ="JOIN ax_buchungsstelle s2 ON s2.gml_id=ANY(s1.an) "
338                ."JOIN ax_flurstueck f ON f.istgebucht=s2.gml_id ";
[334]339
[330]340        // hinten gleich
[425]341        $sql2 ="JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer ";
342        if ($katamtmix){$sql2.="AND substr(f.gml_id, 1, 6) = substr(g.gml_id, 1, 6) ";}
343        $sql2.="WHERE s1.istbestandteilvon = $1 AND f.endet IS NULL AND s1.endet IS NULL ";
[376]344
[278]345        switch ($gfilter) {
346                case 1: // Einzelwert
[413]347                        $sql2.="AND f.gemeindezugehoerigkeit_gemeinde='".$gemeinde."' "; break;
[278]348                case 2: // Liste
[413]349                        $sql2.="AND f.gemeindezugehoerigkeit_gemeinde in ('".str_replace(",", "','", $gemeinde)."') "; break;
[278]350        }
351
[334]352        // WHERE-Zusatz bei 2
353        $sqlw2=" AND s2.endet IS NULL ";
[278]354
[420]355        $sqlord="ORDER BY cast(s1.laufendenummer AS integer), f.gemarkungsnummer, f.flurnummer, cast(f.zaehler AS integer), cast(f.nenner AS integer) LIMIT $2 ;";
[334]356
357        // d i r e k t e  B u c h u n g e n
358        // Blatt <istBestandteilVon<  Buchungsstelle <istGebucht< FlurstÃŒck
[339]359        $v=array($blattgml, $linelimit); // Rel. istBestandteilVon
[334]360        $res=pg_prepare("", $sql1.$sqlz1.$sql2.$sqlord);
[278]361        $res=pg_execute("", $v);
362        if (!$res) {
363                echo "\n<p class='err'>Fehler bei Buchung und Flurst&uuml;ck.</p>";
[339]364                if ($debug >= 3) {echo "\n<p class='err'>SQL='".$sql1.$sqlz1.$sql2.$sqlord."'<br>$1 = '".$blattgml."'</p>";}
[278]365                return;
366        }
367        $zfs1=0;
368        $gwbv="";
369        while($row = pg_fetch_array($res)) {   
370                $bvnr=$row["lfd"];
[282]371                $bsgml=$row["bsgml"]; // Buchungsstelle gml_id
372                if ($gwbv != $bvnr) { // Gruppierung Buchungs-Stelle (BVNR)
373                        $gwbv = $bvnr;
[283]374                        zeile_buchung($bsgml, $bvnr, $blattgbkenn, false, false);
[278]375                }
376                $fs_gml=$row["gml_id"];
[376]377                $gmkg=$row["bezeichnung"];
[278]378                $flur=$row["flurnummer"];
379                $fskenn=$row["zaehler"];
380                if ($row["nenner"] != "") {$fskenn.="/".$row["nenner"];} // BruchNr
381                $x=$row["x"];
382                $y=$row["y"];
[283]383                zeile_flurstueck ($fs_gml, $fskenn, $x, $y, $gmkg, $flur, false);
[278]384                $zfs1++;
385        }
[284]386        // "nichts gefunden" erst melden, wenn auch Teil 2 (Rechte an) nichts findet
387        if($zfs1 > 1) { // ab 2
388                echo "\n<p class='anz'>".$zfs1." Flurst&uuml;cke zum Grundbuch";
389                if($zfs1 >= $linelimit) {
390                        echo "... und weitere"; //++ BlÀttern einfÃŒhren?
391                }
392                echo "</p>";
[278]393        }
[282]394        if($zfs1 > 0) {echo "<hr>";} // Trennen
[278]395
[334]396        // Rechte "an"  (dienende  Buchungen)
[278]397        $v=array($blattgml, $linelimit);
[334]398        $res=pg_prepare("", $sql1.$sqlz2.$sql2.$sqlw2.$sqlord);
[278]399        $res=pg_execute("", $v);
400        if (!$res) {
401                echo "\n<p class='err'>Fehler bei Recht an Buchung.</p>";
[334]402                #if ($debug >= 3) {echo "\n<p class='dbg'>".$sql1.$sqlz2.$sql2.$sqlw2.$sqlord."</p>";}
[278]403                return;
404        }
405        $zfs2=0;
406        $gwbv="";
407        while($row = pg_fetch_array($res)) {   
408                $bvnr=$row["lfd"];
[282]409                $bsgml=$row["bsgml"]; // Buchungsstelle gml_id
410                if ($gwbv != $bvnr) { // Gruppierung Buchung (BVNR) - dienend
411                        $gwbv = $bvnr;
[283]412                        zeile_buchung($bsgml, $bvnr, $blattgbkenn, true, false);
[278]413                }
414                $fs_gml=$row["gml_id"];
[376]415                $gmkg=$row["bezeichnung"];
[278]416                $flur=$row["flurnummer"];
417                $fskenn=$row["zaehler"];
418                if ($row["nenner"] != "") {$fskenn.="/".$row["nenner"];} // Bruchnummer
[283]419                zeile_flurstueck ($fs_gml, $fskenn, $row["x"], $row["y"], $gmkg, $flur, false);
[278]420                $zfs2++;
421        }
[283]422        // Foot
[278]423        if($zfs1 + $zfs2 == 0) {
424                echo "\n<p class='anz'>Kein Flurst&uuml;ck im berechtigten Bereich.</p>";
425        } elseif($zfs2 > 1) { // keine Meldung "nichts gefunden - Rechte an" wenn Treffer in Teil 1
[284]426                echo "\n<p class='anz'>".$zfs2." Rechte an Flurst.";
427                if($zfs2 >= $linelimit) {
428                        echo "... und weitere"; // BlÀttern einfÃŒhren?
429                }
430                echo "</p>";
[278]431        }
432        return;
433}
434
435?>
Note: See TracBrowser for help on using the repository browser.