source: trunk/info/info/alkisn/alkisfsnw.php @ 405

Revision 405, 33.1 KB checked in by frank.jaeger, 6 years ago (diff)

Die Buchauskunft bekommt ein neues Modul Grundstücksnachweis (Buchung). Andere Module verlinken darauf.

Line 
1<?php
2/*      Modul: alkisfsnw.php
3
4        ALKIS-Buchauskunft, Kommunales Rechenzentrum Minden-Ravensberg/Lippe (Lemgo).
5        FlurstÃŒcksnachweis fuer ein FlurstÃŒckskennzeichen aus ALKIS PostNAS
6
7        Version:
8        2016-02-24 Version fuer norGIS-ALKIS-Import
9        2016-03-14 Korrekturen
10        2016-12-01 HTML5, Gemeinsam genutzte Datenbanken ermöglichen
11        2016-12-05 Nutzungsart-Kategorie ist nun in Text enthalten, nicht mehr aus der Definition ausschneiden
12        2017-06-08 optional "berechtigte Buchungen" anzeigen, Function "eigentuemer" ohne Parameter $con,
13                                Validierung Eingabeparameter, Feinkorrekturen
14        2017-10-11 Sauber filtern auf 'endet IS NULL', Ausgabe der BodenschÀtzung
15        2017-10-11 Nachbesserung Formatierung der SchÀtzungs-Zeilen
16        2017-10-17 Zeitpunkt der Entstehung in deutschen Datumsformat
17        2017-11-03 Wertelisten fÃŒr Arrays in BodenschÀtzung ausgeben.
18        2017-12-08 Planung (Kommentare) der Erweiterung fÃŒr Berechtigte GrundbÃŒcher
19        2017-12-20 Links auf Lagebezeichnung verbessert.
20        2018-04-11 Variable "gmlid" an Function "ALKISexport" ÃŒbergeben. Ist beim Schreiben des Headers noch unbekannt, wenn mit "&fskennz=" aufgerufen.
21        2018-04-23 Umfangreiche Überarbeitung der "Buchungsstellen"
22        2018-05-03 Anpassung fÃŒr GrundstÃŒcksnachweis
23
24++ToDo:
25        - Buchung auf "fiktives Blatt" ist nur mit debug zu sehen: die <tr> in .css grau hinterlegen
26        - Umschalter (gleiches Modul) anders darstellen als Links zu anderen Nachweisen
27        - Parameter zum Umschalten mit/ohne BodenschÀtzung?
28        - Bessere Differenzierung bei den Nutzungsarten (Tabelle dafÃŒr aufbauen)
29*/
30session_start();
31$eig="n"; $showkey="n"; $nodebug=""; // Var. initalisieren
32$cntget = extract($_GET); // alle Parameter in Variable umwandeln
33
34// strikte Validierung aller Parameter
35if (isset($gmlid)) {
36        if (!preg_match('#^[0-9A-Za-z]{16}$#', $gmlid)) {die("Eingabefehler gmlid");}
37        $fskennz='';
38} else { // Alternativ
39        $gmlid='';
40        if (isset($fskennz)) { // llgggg-fff-11111/222 oder z.B.'052647002001910013__' oder '05264700200012______'
41                if (!preg_match('#^[0-9\-_/]{8,20}$#', $fskennz)) {die ("Eingabefehler fskennz");}
42        } else {
43                $fskennz='';
44        }
45}
46if (!isset($gkz) or !preg_match('#^[0-9]{3}$#', $gkz)) {die("Eingabefehler gkz");}
47if (!preg_match('#^[j|n]{0,1}$#', $eig)) {die("Eingabefehler eig");}
48if (!preg_match('#^[j|n]{0,1}$#', $showkey)) {die ("Eingabefehler showkey");}
49if ($showkey == "j") {$showkey=true;} else {$showkey=false;} // "j"/"n" als boolean umwandeln, ist praktischer abzufragen, wird oft gebraucht
50if (!preg_match('#^j{0,1}$#', $nodebug)) {die("Eingabefehler nodebug");}
51
52require_once("alkis_conf_location.php");
53if ($auth == "mapbender") {require_once($mapbender);}
54include("alkisfkt.php");
55?>
56<!doctype html>
57<html lang="de">
58<head>
59        <meta charset="utf-8">
60        <meta name="viewport" content="width=device-width, initial-scale=1.0">
61        <title>ALKIS Flurst&uuml;cksnachweis</title>
62        <link rel="stylesheet" type="text/css" href="alkisauszug.css">
63        <link rel="shortcut icon" type="image/x-icon" href="ico/Flurstueck.ico">
64        <script>
65                function ALKISexport(gmlid) {
66                        window.open('alkisexport.php?gkz=<?php echo $gkz;?>&tabtyp=flurstueck&gmlid=' + gmlid);
67                }
68        </script>
69</head>
70<body>
71<?php
72// Mit URL-Parameter "&nodebug=j" kann man die Entwicklungsumgebung (in Conf definiert) ausschalten. Blendet z.B. "fiktives Blatt" aus.
73// Manuell an die URL anfÌgen, wirkt nur temporÀr und wird nicht in Links weiter gereicht.
74if ($nodebug == "j") {$debug=0;}
75
76$con = pg_connect($dbconn." options='--application_name=ALKIS-Auskunft_alkisfsnw.php'");
77if (!$con) echo "\n<p class='err'>Fehler beim Verbinden der DB</p>";
78
79// Ein FlurstÃŒcks-Kennzeichen wurde alternativ zur gml_id ÃŒbermittelt
80if ($fskennz != '') {
81        $arr=explode("-", $fskennz, 4); // zerlegen
82        $zgemkg=trim($arr[0]);
83        if (strlen($zgemkg) == 20 and !isset($arr[1])) {
84                $fskzdb=$zgemkg; // Datenbank-Feldformat
85        } else { // Format "llgggg-fff-nnnn/zz.nn" oder "gggg-ff-nnn/zz"
86                // Das Kennzeichen auseinander nehmen.
87                if (strlen($zgemkg) == 6) {
88                        $land=substr($zgemkg, 0, 2);
89                        $zgemkg=substr($zgemkg, 2, 4);
90                } else { // kein schöner Land ..
91                        $land=$defland; // Default-Land aus config
92                }
93                $zflur=str_pad($arr[1], 3 , "0", STR_PAD_LEFT); // Flur-Nr
94                $zfsnr=trim($arr[2]); // FlurstÃŒcke-Nr
95                $zn=explode("/", $zfsnr, 2); // Bruch?
96                $zzaehler=str_pad(trim($zn[0]), 5 , "0", STR_PAD_LEFT);
97                if (isset($zn[1])) {
98                        $znenner=trim($zn[1]);
99                } else {
100                        $znenner="";
101                }
102                if (trim($znenner, " 0.") == "") { // kein Bruch oder nur Nullen
103                        $znenner="____"; // in DB-Spalte mit Tiefstrich aufgefÃŒllt
104                } else {
105                        $zn=explode(".", $znenner, 2); // .00 wegwerfen
106                        $znenner=str_pad($zn[0], 4 , "0", STR_PAD_LEFT);
107                }
108                // nun die Teile stellengerecht wieder zusammen setzen         
109                $fskzdb=$land.$zgemkg.$zflur.$zzaehler.$znenner.'__'; // FS-Kennz. Format Datenbank
110        }
111        // Spalte "flurstueckskennzeichen" ist in DB indiziert
112        // Format z.B.'052647002001910013__' oder '05264700200012______'
113        $sql ="SELECT gml_id FROM ax_flurstueck WHERE flurstueckskennzeichen= $1 AND endet IS NULL ;";
114
115        $v = array($fskzdb);
116        $res = pg_prepare("", $sql);
117        $res = pg_execute("", $v);
118        if ($row = pg_fetch_assoc($res)) {
119                $gmlid=$row["gml_id"];
120        } else {
121                echo "\n<p class='err'>Fehler! Kein Treffer f&uuml;r Flurst&uuml;ckskennzeichen='".$fskennz."' (".$fskzdb.")</p>";
122                echo "<p>Kennzeichen veraltet? <a href='./alkisfshist.php?gkz=".$gkz."&fskennz=".$fskennz."'>Suche in der Flurst&uuml;cks-Historie</a></p>";
123                echo "\n</body>\n</html>";
124                return;
125        }
126        pg_free_result($res);
127}
128
129// F L U R S T U E C K  m. Gebiet
130$sql ="SELECT f.name, f.flurnummer, f.zaehler, f.nenner, f.regierungsbezirk, f.kreis, f.gemeinde, f.amtlicheflaeche, st_area(f.wkb_geometry) AS fsgeomflae,
131to_char(cast(f.zeitpunktderentstehung AS date),'DD.MM.YYYY') AS zeitpunktderentstehung, f.istgebucht, g.gemarkungsnummer, g.bezeichnung,
132r.bezeichnung AS rbez, k.bezeichnung AS kbez, m.bezeichnung AS mbez
133FROM ax_flurstueck f
134LEFT JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer
135LEFT JOIN ax_regierungsbezirk r ON f.regierungsbezirk=r.regierungsbezirk
136LEFT JOIN ax_kreisregion k ON f.regierungsbezirk=k.regierungsbezirk AND f.kreis=k.kreis
137LEFT JOIN ax_gemeinde m ON m.regierungsbezirk=f.regierungsbezirk AND m.kreis=f.kreis AND m.gemeinde=f.gemeinde
138WHERE f.gml_id= $1 AND f.endet IS NULL AND g.endet IS NULL AND m.endet IS NULL AND k.endet IS NULL AND r.endet IS NULL;";
139$v = array($gmlid); // mit gml_id suchen
140$res = pg_prepare("", $sql);
141$res = pg_execute("", $v);
142if (!$res) {
143        echo "\n<p class='err'>Fehler bei Flurstuecksdaten</p>";
144        if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = gml_id = '".$gmlid."'</p>";}
145}
146if ($row = pg_fetch_assoc($res)) {
147        $gemkname=htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8");
148        $gmkgnr=$row["gemarkungsnummer"];
149        $bezirk=$row["regierungsbezirk"];
150        $rbez=htmlentities($row["rbez"], ENT_QUOTES, "UTF-8");
151        $kreis=$row["kreis"];
152        $kbez=htmlentities($row["kbez"], ENT_QUOTES, "UTF-8");
153        $gemeinde=$row["gemeinde"];
154        $mbez=htmlentities($row["mbez"], ENT_QUOTES, "UTF-8");
155        $flurnummer=$row["flurnummer"];
156        $zaehler=$row["zaehler"];
157        $nenner=$row["nenner"];
158        $flstnummer=$zaehler;
159        if ($nenner > 0) {$flstnummer.="/".$nenner;} // BruchNr
160        $fsbuchflae=$row["amtlicheflaeche"]; // amtliche Fl. aus DB-Feld
161        $fsgeomflae=$row["fsgeomflae"]; // aus Geometrie ermittelte FlÀche
162        $the_Xfactor = $fsbuchflae / $fsgeomflae; // Multiplikator zur Umrechnung geometrische AbschnittsflÀchen in BuchflÀche
163        $fsbuchflaed=number_format($fsbuchflae,0,",",".") . " m&#178;"; // Display-Format dazu
164        $fsgeomflaed=number_format($fsgeomflae,0,",",".") . " m&#178;";
165        $entsteh=$row["zeitpunktderentstehung"];
166        $gml_buchungsstelle=$row["istgebucht"]; // wird erst im GB-Teil benötigt
167        $name=$row["name"]; // Fortfuehrungsnummer(n)
168        $arrn = explode(",", trim($name, "{}") ); // PHP-Array
169} else {
170        echo "\n<p class='err'>Fehler! Kein Treffer f&uuml;r Flurst&uuml;ck mit gml_id=".$gmlid."</p>";
171        if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = gml_id = '".$gmlid."'</p>";}
172        echo "\n</body>\n</html>";
173        return;
174}
175pg_free_result($res);
176
177if ($eig=="j") { // Balken
178        echo "<p class='fsei'>ALKIS Flurst&uuml;ck ".$gmkgnr."-".$flurnummer."-".$flstnummer."&nbsp;</p>"
179        ."\n\n<h2>Flurst&uuml;ck mit Eigent&uuml;mer</h2>";
180} else {
181        echo "<p class='fskennz'>ALKIS Flurst&uuml;ck ".$gmkgnr."-".$flurnummer."-".$flstnummer."&nbsp;</p>"
182        ."\n\n<h2>Flurst&uuml;ck</h2>";
183}
184
185// PrÃŒfung der Gebiets-Berechtigung bei gemeinsam genutzten Datenbanken (Kreis und Gemeinde)
186// FÃŒr das gkz (z.B. aus dem Mapfile-Namen) wird in der Konfiguration ein Filter gesetzt.
187if ( ($filtkreis != '' and $filtkreis != $kreis) or ($filtgem != '' and $filtgem != $gemeinde) ) {
188        // Einer der gesetzten Filter passt nicht
189        if ($debug > 2) { //++ Schönes Bild? Stop-Zeichen?
190                echo "\n<p class='err'>Filter Kreis='".$filtkreis."', Gemeinde='".$filtgem."'</p>"
191                ."\n<p class='err'>Flstk. Kreis='".$fskrs."', Gemeinde='".$fsgem."'</p>";
192        }
193        echo "\n<br><p class='stop1'>Zugriff nicht erlaubt</p>"
194        ."\n<br><p class='stop2'>Dies Flurst&uuml;ck liegt ausserhalb der zust&auml;ndigen Stadt oder Gemeinde.</p>\n</body>\n</html>";
195        exit;
196}
197
198echo "\n<table class='outer'>"
199        ."\n\t<tr>\n\t\t<td class='ll'><img src='ico/Flurstueck.png' width='16' height='16' alt=''> Kennzeichen:</td>" // Links
200        ."\n\t\t<td>" // Mitte
201        ."\n\t\t\t<table class='kennzfs' title='Flurst&uuml;ckskennzeichen'>\n\t\t\t\t<tr>" // darin Tabelle Kennzeichen
202                ."\n\t\t\t\t\t<td class='head'>Gemarkung</td>\n\t\t\t\t\t<td class='head'>Flur</td>\n\t\t\t\t\t<td class='head'>Flurst-Nr.</td>\n\t\t\t\t</tr>"
203                ."\n\t\t\t\t<tr>\n\t\t\t\t\t<td title='Gemarkung'>";
204                        if ($showkey) {echo "<span class='key'>".$gmkgnr."</span><br>";}
205                        echo $gemkname."&nbsp;</td>"
206                ."\n\t\t\t\t\t<td title='Flurnummer'>".$flurnummer."</td>"
207                ."\n\t\t\t\t\t<td title='Flurst&uuml;cksnummer (Z&auml;hler / Nenner)'><span class='wichtig'>".$flstnummer."</span></td>\n\t\t\t\t</tr>"
208        ."\n\t\t\t</table>"
209        ."\n\t\t</td>\n\t\t<td>" // Rechts
210        ."\n\t\t\t<table class='fsd'>" // FS-Daten 2 Spalten
211                ."\n\t\t\t\t<tr>\n\t\t\t\t\t<td>Entstehung</td>"
212                ."\n\t\t\t\t\t<td>".$entsteh."</td>\n\t\t\t\t</tr>"
213                ."\n\t\t\t\t<tr>"
214                        ."\n\t\t\t\t\t<td>letz. Fortf</td>"
215                        ."\n\t\t\t\t\t<td title='Jahrgang / Fortf&uuml;hrungsnummer - Fortf&uuml;hrungsart'>";
216                                foreach($arrn AS $val) { // Zeile f. jedes Element des Array
217                                        echo trim($val, '"')."<br>";
218                                }
219                        echo "</td>"
220                ."\n\t\t\t\t</tr>"
221        ."\n\t\t\t</table>"
222."\n\t\t</td>\n\t</tr>\n</table>";
223
224echo "\n<hr>\n<table class='fs'>"; // FS-Teil 6 Spalten
225echo "\n<tr>\n\t\t<td></td>\n\t\t<td></td>\n\t\t<td></td>\n\t\t<td></td>\n\t\t<td></td>" // 1-5 in erster Zeile kein "colspan" verwenden
226        ."\n\t\t<td>\n\t\t<p class='nwlink noprint'>weitere Auskunft:</p></td>" // 6
227."\n</tr>";
228
229echo "\n<tr>" // Zeile: G e b i e t s z u g e h o e r i g k e i t  Gemeinde / Kreis / Regierungsbezirk
230        ."\n\t<td class='ll'><img title='Im Gebiet von' src='ico/Gemeinde.png' width='16' height='16' alt=''> Gebiet:</td>" // 1
231        ."\n\t<td>Gemeinde<br>Kreis<br>Regierungsbezirk</td>" // 2
232        ."\n\t<td class='lr' colspan='3'>"; // 3-5
233                if ($showkey) {echo "<span class='key'>(".$gemeinde.")</span> ";}
234                echo $mbez."<br>";
235                if ($showkey) {echo "<span class='key'>(".$kreis.")</span> ";}
236                echo $kbez."<br>";
237                if ($showkey) {echo "<span class='key'>(".$bezirk.")</span> ";}
238                echo $rbez
239        ."</td>"
240        ."\n\t<td class='nwlink'>" // 5
241                ."\n\t\t<p class='nwlink noprint'>"
242                ."\n\t\t\t<a href='alkisfshist.php?gkz=".$gkz."&amp;gmlid=".$gmlid;
243                if ($showkey) {echo "&amp;showkey=j";}
244                echo "' title='Vorg&auml;nger-Flurst&uuml;cke'>Historie "
245                ."<img src='ico/Flurstueck_Historisch.png' width='16' height='16' alt=''>"
246                ."</a>"
247                ."\n\t\t</p>"
248        ."\n\t</td>" // 6
249."\n</tr>";
250
251// ** L a g e b e z e i c h n u n g **
252
253// Lagebezeichnung  M I T  Hausnummer
254// ax_flurstueck  >weistAuf>  AX_LagebezeichnungMitHausnummer
255$sql="SELECT DISTINCT l.gml_id, l.gemeinde, l.lage, l.hausnummer, s.bezeichnung, s.gml_id AS kgml
256FROM ax_flurstueck f JOIN ax_lagebezeichnungmithausnummer l ON l.gml_id=ANY(f.weistauf) 
257JOIN ax_lagebezeichnungkatalogeintrag s ON l.land=s.land AND l.regierungsbezirk=s.regierungsbezirk AND l.kreis=s.kreis AND l.gemeinde=s.gemeinde AND l.lage=s.lage
258WHERE f.gml_id= $1 AND f.endet IS NULL AND l.endet IS NULL AND s.endet IS NULL   
259ORDER BY l.gemeinde, l.lage, l.hausnummer;";
260
261$v = array($gmlid);
262$res = pg_prepare("", $sql);
263$res = pg_execute("", $v);
264
265if (!$res) {
266        echo "\n<p class='err'>Fehler bei Lagebezeichnung mit Hausnummer</p>";
267        if ($debug > 1) {
268                echo "\n<p class='dbg'>Fehler:".pg_last_error()."</p>";
269                if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = gml_id = '".$gmlid."'</p>";}
270        }
271} else {
272        $j=0;
273        $kgmlalt="";
274        while($row = pg_fetch_assoc($res)) {
275                $sname=htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8"); // Str.-Name
276                if (substr($sname, strlen($sname) -3, 3) == 'weg') { // Versuch fuer korrekten Satzbau
277                        $slink=" am ".$sname;
278                } else {
279                        $slink=" an der ".$sname;
280                }
281                $hsnr=$row["hausnummer"];
282                echo "\n<tr>";
283                        if ($j == 0) { // 1
284                                echo "\n\t<td class='ll'><img src='ico/Lage_mit_Haus.png' width='16' height='16' alt=''> Adresse:</td>";
285                        } else {
286                                echo "\n\t<td>&nbsp;</td>";
287                        }
288                        echo "\n\t<td>&nbsp;</td>" // 2
289                        ."\n\t<td class='lr' colspan='3'>"; // 3-5
290                                if ($showkey) {echo "<span class='key' title='Straßenschl&uuml;ssel'>(".$row["lage"].")</span>&nbsp;";}
291                                echo $sname."&nbsp;".$hsnr."</td>";
292                        echo "\n\t<td>\n\t\t<p class='nwlink noprint'>"; // 6
293
294                        // +++ davor auch Link "Straße"
295                        $kgml=$row["kgml"]; // Wiederholung vermeiden
296                        if ($kgml != $kgmlalt) { // NEUE Strasse vor Lage
297                                $kgmlalt=$kgml; // Katalog GML-ID
298                                echo "\n\t\t\t<a title='Flurst&uuml;cke mit oder ohne Hausnummer".$slink."' "
299                                ."href='alkisstrasse.php?gkz=".$gkz."&amp;gmlid=".$kgml."'>Stra&szlig;e "
300                                ."<img src='ico/Strassen.png' width='16' height='16' alt='STRA'></a> ";
301                        }
302
303                        echo "\n\t\t\t<a title='Flurst&uuml;cke und Geb&auml;ude mit Hausnummer ".$hsnr."' href='alkislage.php?gkz=".$gkz."&amp;ltyp=m&amp;gmlid=".$row["gml_id"];
304                                if ($showkey) {echo "&amp;showkey=j";}
305                                echo "'>Lage <img src='ico/Lage_mit_Haus.png' width='16' height='16' alt=''></a>"
306                        ."\n\t\t</p>\n\t</td>"  // 6
307                ."\n</tr>";
308                $j++;
309        }
310        $cnt_adressen=$j;
311        pg_free_result($res);
312}
313
314// Lagebezeichnung  O H N E  Hausnummer  (Gewanne oder nur Strasse)
315// ax_flurstueck  >zeigtAuf>  AX_LagebezeichnungOhneHausnummer
316$sql ="SELECT l.gml_id, l.unverschluesselt, l.gemeinde, l.lage, s.bezeichnung
317FROM ax_flurstueck f JOIN ax_lagebezeichnungohnehausnummer l ON l.gml_id=ANY(f.zeigtauf)
318LEFT JOIN ax_lagebezeichnungkatalogeintrag s ON l.land=s.land AND l.regierungsbezirk=s.regierungsbezirk AND l.kreis=s.kreis AND l.gemeinde=s.gemeinde AND l.lage=s.lage
319WHERE f.gml_id = $1 AND f.endet IS NULL AND l.endet IS NULL AND s.endet IS NULL;";
320
321$v = array($gmlid);
322$res = pg_prepare("", $sql);
323$res = pg_execute("", $v);
324if (!$res) {
325        echo "\n<p class='err'>Fehler bei Lagebezeichnung ohne Hausnummer</p>";
326        //if ($debug > 1) {echo "<p class='dbg'>Fehler:".pg_result_error($res)."</p>";}
327        if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = gml_id = '".$gmlid."'</p>";}
328}
329$j=0;
330while($row = pg_fetch_assoc($res)) {
331        $skey=$row["lage"]; // Strassenschl.
332        $lgml=$row["gml_id"]; // key der Lage
333        $gewann = htmlentities($row["unverschluesselt"], ENT_QUOTES, "UTF-8");
334        if ($gewann != "") {
335                echo "\n<tr>"
336                        ."\n\t<td class='ll' title='unverschl&uuml;sselte Lagebezeichnung'><img src='ico/Lage_Gewanne.png' width='16' height='16' alt=''> Gewanne:</td>" // 1
337                        ."\n\t<td></td>" // 2
338                        ."\n\t<td class='lr' colspan='3'>".$gewann."</td>" // 3-5
339                        ."\n\t<td>\n\t\t<p class='nwlink noprint'>" // 6
340                                ."\n\t\t\t<a title='Flurst&uuml;cke mit der Gewanne ".$gewann."' href='alkislage.php?gkz=".$gkz."&amp;ltyp=o&amp;gmlid=".$lgml;
341                                if ($showkey) {echo "&amp;showkey=j";}                         
342                                echo "'>\n\t\t\tLage <img src='ico/Lage_Gewanne.png' width='16' height='16' alt=''></a>"
343                        ."\n\t\t</p>\n\t</td>" // 6
344                ."\n</tr>";
345        } elseif ($skey > 0) {
346                $sname=htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8"); // Str.-Name
347                if (substr($sname, strlen($sname) -3, 3) == 'weg') { // Versuch fuer korrekten Satzbau
348                        $slink=" am ".$sname;
349                } else {
350                        $slink=" an der ".$sname;
351                }
352                echo "\n<tr>"
353                        ."\n\t<td class='ll'><img src='ico/Lage_an_Strasse.png' width='16' height='16' alt=''> Stra&szlig;e:</td>" // 1
354                        ."\n\t<td></td>" // 2
355                        ."\n\t<td class='lr' colspan='3'>"; // 3-5
356                                if ($showkey) {echo "<span class='key'>(".$skey.")</span>&nbsp;";}
357                                echo $sname."</td>";
358                        echo "\n\t<td>\n\t\t<p class='nwlink noprint'>" // 6
359                                ."\n\t\t\t<a title='FlurstÃŒcke ".$slink."' href='alkislage.php?gkz=".$gkz."&amp;ltyp=o&amp;gmlid=".$lgml;
360                                if ($showkey) {echo "&amp;showkey=j";}                         
361                                echo "'>\n\t\t\tLage <img src='ico/Lage_an_Strasse.png' width='16' height='16' alt=''>\n\t\t\t</a>"
362                        ."\n\t\t</p>\n\t</td>" // 6
363                ."\n</tr>";
364        }
365        $j++;
366}
367pg_free_result($res);
368
369/* Status "N u t z u n g":
370Die Classic-Tabelle "nutzung" ist eine Zusammenfassung aller Tabellen mit Nutzungs-FlÀchen
371Die Classic-Tabelle "nutzung_meta" zeigt die Kategorie und Gruppe des Nutzungs-Abschnitts an.
372
373Aus der norGIS-Struktur wird ersatzweise VORLÄUFIG die Tabelle "nutz_21" verwendet,
374die das alte ALB-Format der Nutzungs-Abschnitte von FlurstÃŒcken simuliert.
375Hier finden sich bereits verschnittene FlÀchen, aber die gml_id fehlt.
376
377Die EntschlÃŒsselung der Nutzungsart in den verschiedenen ALKIS-Varianten ist darin unterentwickelt.
378Diese ist eigentlich fÃŒr jede der getrennten Tabellen der Gruppe Nutzungsart individuell.
379Die Classic-Lösung mit 2 Zusatzfeldern war schon sehr pauschalisiert, aber
380durch die RÃŒck-Konvertierung in ALB-Strukturen in der norGIS-Version ist das zu stark vereinfacht.
381z.B. wird "WohnbauflÀche" mit der Zusatzeigenschaft "Art der Bebauung": 'Offen'
382nun zur Nutzungsart "Offen".
383Durch JOIN auf die "alkis_elemente" mit einem Teil des SchlÌssels wird das zur "WohnbauflÀche, Offen".
384Es sollte eine Tabellen-Struktur bereit gestellt werden, die auch aussagt, dass der Wert "Offen" zur
385Zusatz-Eigenschaft "Art der Bebauung" gehört. Dazu muss das PostProcessing erweitert werden. */
386
387$sql="SELECT e.definition, trim(both FROM n.nutzsl) AS nutzsl, trim(both FROM n.fl) AS fl, trim(both FROM s.nutzung) AS nutzung
388 FROM nutz_21 n JOIN nutz_shl s ON n.nutzsl = s.nutzshl
389 JOIN alkis_elemente e ON e.kennung = substring(n.nutzsl from 1 for 5)
390WHERE n.flsnr = $1 ORDER BY cast(n.fl AS integer) DESC;";
391// Flurstueckskennzeichen mit Trennzeichen im ALB-Format wie 'llgggg-fff-zzzzz/nnn'
392$fskennzalb=$defland.$gmkgnr."-".str_pad($flurnummer,3,"0",STR_PAD_LEFT)."-".str_pad($zaehler,5,"0",STR_PAD_LEFT)."/".str_pad($nenner,3,"0",STR_PAD_LEFT);
393$v = array($fskennzalb);
394$res = pg_prepare("", $sql);
395$res = pg_execute("", $v);
396if (!$res) {
397        echo "\n<p class='err'>Fehler bei Suche tats. Nutzung</p>";
398        if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = FS-Kennz = '".$fskennzalb."'</p>";}
399}
400$j=0;
401while($row = pg_fetch_assoc($res)) {
402        $flae=$row["fl"]; // BuchflÀche
403        $nutzsl=$row["nutzsl"]; // SchlÃŒssel
404        $nutzung=$row["nutzung"]; // Bezeichnung aus ALB-Tabelle, "fein"
405        $defi=$row["definition"]; // Langer Text mit Beschreibung
406        $title=htmlentities($defi, ENT_QUOTES, "UTF-8"); // .. fÃŒr Anzeige aufbereitet
407        echo "\n<tr>\n\t";
408                if ($j == 0) { // 1
409                        echo "<td class='ll' title='Abschnitt der tats&auml;chlichen Nutzung'><img src='ico/Abschnitt.png' width='16' height='16' alt=''> Nutzung:</td>";
410                } else {
411                        echo "<td>&nbsp;</td>";
412                }
413                $absflaebuch = number_format($flae,0,",",".") . " m&#178;"; // Formatierte Abschnitts-Buch-FlÀche
414                echo "\n\t<td></td>"; // 2
415                echo "\n\t<td class='fla' title='Buchfl&auml;che des Abschnitts'>".$absflaebuch."</td>"; // 3 - gleiche Spalte wie Fl. in BodenschÀtzg.
416                echo "\n\t<td></td>"; // 4
417                echo "\n\t<td class='lr' title='".$title."'>"; // 5 - gleiche Sp. wie Zustandsstufe usw.
418                        if ($showkey) {echo "<span class='key'>(".$nutzsl.")</span> ";}
419                        echo $nutzung
420                ."</td>"
421                ."\n\t<td>"; // 6
422/*              // Derzeit ist keine Gruppe zugeordnet
423                        switch ($grupp) { // Icon nach 4 Objektartengruppen
424                                case "Siedlung":   $ico = "Abschnitt.png"; break;
425                                case "Verkehr":    $ico = "Strassen_Klassifikation.png"; break;
426                                case "Vegetation": $ico = "Wald.png"; break;
427                                case "GewÀsser":   $ico = "Wasser.png";        break;
428                                default:        $ico = "Abschnitt.png"; break;
429                        }
430                        // Icon ist auch im Druck sichtbar, class='noprint' ?           
431                        echo "<p class='nwlink'><img title='".$title."' src='ico/".$ico."' width='16' height='16' alt='NUA'></p>"; */
432                echo "</td>" // 6
433        ."\n</tr>";
434        $j++;
435}
436pg_free_result($res);
437
438echo "\n<tr>" // FlÀchen-Summenzeile
439        ."\n\t<td class='re' title='amtliche Fl&auml;che (Buchfl&auml;che)'>Fl&auml;che:</td>" // 1
440        ."\n\t<td>&nbsp;</td>" // 2
441        ."\n\t<td class='fla sum'>" // 3 Flaeche
442                ."<span title='geometrisch berechnete Fl&auml;che = ".$fsgeomflaed."' class='flae'>".$fsbuchflaed."</span></td>"
443        ."\n\t<td>&nbsp;</td>" // 4
444        ."\n\t<td>&nbsp;</td>" // 5
445        ."\n\t<td>" // 6 Link auf GebÀude-Auswertung
446                ."\n\t\t<p class='nwlink noprint'>" // Gebaeude-Verschneidung
447                ."\n\t\t\t<a href='alkisgebaeudenw.php?gkz=".$gkz."&amp;gmlid=".$gmlid;
448                if ($showkey) {echo "&amp;showkey=j";}
449                if ($cnt_adressen > 0) { // wenn Adresse vorgekommen ist
450                        echo "' title='Geb&auml;ude auf oder an dem Flurst&uuml;ck'>Geb&auml;ude ";
451                } else { // GebÀude mit Adresse gibt es NICHT, das ist klar
452                        echo "' title='Suche Geb&auml;ude ohne Adresse auf dem Flurst&uuml;ck oder angrenzende Geb&auml;ude'>Suche ";
453                }
454                echo "<img src='ico/Haus.png' width='16' height='16' alt=''></a>"
455                ."\n\t\t</p>"
456        ."\n\t</td>" // 6
457        ."\n</tr>";
458
459// B o d e n s c h À t z u n g
460// ---------------------------
461// Tabelle "klas_3x" (norbit-ALB): Dort fehlen Bodenart und Zustandsstufe, es ist aber bereits auf BuchflÀche umgerechnet.
462
463// BodenschÀtzungs-Abschnitte mit FlurstÌcken verschneiden, Spalten entschlÌsseln
464$sql="SELECT kulturart.k AS kulturartk, kulturart.v AS kulturartv,
465 bodenart.k  AS bodenartk,  bodenart.v  AS bodenartv,
466 zustbod.v AS zustbodv,
467 b.entstehungsartoderklimastufewasserverhaeltnisse AS entsteh, b.sonstigeangaben,
468 b.bodenzahlodergruenlandgrundzahl as bodenzahl, b.ackerzahlodergruenlandzahl AS ackerzahl,
469 b.jahreszahl, st_area(st_intersection(b.wkb_geometry, f.wkb_geometry)) AS schnittflae
470FROM ax_flurstueck f
471JOIN ax_bodenschaetzung b ON st_intersects(b.wkb_geometry, f.wkb_geometry) AND st_area(st_intersection(b.wkb_geometry, f.wkb_geometry)) > 0.05
472LEFT JOIN alkis_wertearten AS bodenart  ON cast(b.bodenart  AS character varying) = bodenart.k  AND bodenart.element='ax_bodenschaetzung'  AND bodenart.bezeichnung='bodenart'
473LEFT JOIN alkis_wertearten AS kulturart ON cast(b.kulturart AS character varying) = kulturart.k AND kulturart.element='ax_bodenschaetzung' AND kulturart.bezeichnung='kulturart'
474LEFT JOIN alkis_wertearten AS zustbod   ON cast(b.zustandsstufeoderbodenstufe AS character varying) = zustbod.k AND zustbod.element='ax_bodenschaetzung' AND zustbod.bezeichnung='zustandsstufeoderbodenstufe'
475WHERE f.gml_id = $1 AND f.endet IS NULL AND b.endet IS NULL ORDER BY schnittflae DESC";
476
477$v = array($gmlid);
478$res = pg_prepare("", $sql);
479$res = pg_execute("", $v);
480if (!$res) {echo "\n<p class='err'>Fehler bei DB-Abfrage zur Klassifizierung Boden</p>\n";}
481$gesertragsmz = 0; // Gesamt-ErtragsMesszahl
482$klasflae = 0; // Summe klassifizierte FlÀche
483$j=0;
484if(!empty($res) && pg_num_rows($res) > 0) {
485        while ($row = pg_fetch_assoc($res)) {
486                $kulturartk=$row['kulturartk']; // Key  -
487                $kulturartv=$row['kulturartv']; //              - Value
488                // 1000="Ackerland (A)", 2000="Acker-GrÃŒnland (AGr)", 3000="GrÃŒnland (Gr)", 4000="GrÃŒnland-Acker (GrA)"             
489                if (substr($kulturartv, 0, 3) == 'Ack') { // A
490                        $kbez1="Bodenzahl";
491                        $kbez2="Ackerzahl";
492                } else { // Gr
493                        $kbez1="Gr&uuml;nlandgrundzahl";
494                        $kbez2="Gr&uuml;nlandzahl";
495                }
496                $absflae = $row['schnittflae'];
497                $absbuchflae = $absflae * $the_Xfactor;
498                $klasflae+=$absbuchflae;
499                $ertragszahl = intval($absbuchflae * $row['ackerzahl'] / 100);
500                $gesertragsmz+=$ertragszahl;
501        //      $absflaedis = number_format($absflae,0,",",".")." m&#178;";  // als Tool-Tip ?
502                $absbuchflaedis = number_format($absbuchflae,0,",",".")." m&#178;";
503                $boedenzahl=ltrim($row['bodenzahl'], '0');
504                $ackerzahl=ltrim($row['ackerzahl'], '0');
505                $jahr=$row['jahreszahl'];
506
507                // 2x Array mit SchlÃŒsseln. PostNAS fÃŒllt es nicht, wenn als "integer[]" definiert.
508                $entsteh=$row['entsteh'];
509                $sonst=$row['sonstigeangaben'];
510                if ($j == 0) { // 1
511                        echo "\n<tr>\n\t<td class='ll' title='Abschnitt Bodensch&auml;tzung'><img src='ico/Landwirt.png' width='16' height='16' alt=''> Bodensch&auml;tzung:</td>";
512                } else {
513                        echo "\n<tr>\n\t<td>&nbsp;</td>";
514                }
515                echo "\n\t<td class='fla' title='Ertragsmesszahl: Produkt von ".$kbez2."/100 und Fl&auml;che.'>EMZ ".$ertragszahl."</td>"; // 2
516                echo "\n\t<td class='re' title='Fl&auml;che des Sch&auml;tzungsabschnitts'>".$absbuchflaedis."</td>"; // 3
517                echo "\n\t<td class='lr'><span title='".$kbez1."'>".$boedenzahl."</span>/<span title='".$kbez2."'>".$ackerzahl."</span></td>"; // 4
518                echo "\n\t<td class='lr'>"; // 5
519
520                        if ($showkey) {echo "\n\t\t<span class='key'>(".$kulturartk.")</span> ";}
521                        echo "\n\t\t<span title='Kulturart'>".$kulturartv."</span> ";
522
523                        if ($showkey) {echo "\n\t\t<span class='key'>(".$row['bodenartk'].")</span> ";}
524                        echo "\n\t\t<span title='Bodenart'>".$row['bodenartv']."</span> ";
525
526                        echo "\n\t\t<span title='Zustandsstufe'>".$row['zustbodv']."</span> ";
527
528                        // ARRAYs auflösen ohne den SchÀtzungs-Abschnitt mehrfach aufzulisten
529                        if ($entsteh <> '') {
530                                $ent="'".str_replace(",", "','", trim($entsteh, "{}"))."'"; // als Liste fÃŒr SQL "WHERE IN ()"
531                                echo "\n\t\t <span title='Enststehungsart oder Klimastufe, Wasserverh&auml;ltnisse'>";
532                                        if ($showkey) {echo "\n\t\t <span class='key'>(".$ent.")</span> ";}
533                                        werteliste ('ax_bodenschaetzung', 'entstehungsartoderklimastufewasserverhaeltnisse', $ent);
534                                echo "</span>";
535                        }
536                        if ($sonst <> '') {
537                                $son="'".str_replace(",", "','", trim($sonst, "{}"))."'";
538                                echo "\n\t\t <span title='Sonstige Angaben'>";
539                                        if ($showkey) {echo "\n\t\t <span class='key'>(".$son.")</span> ";}
540                                        werteliste ('ax_bodenschaetzung', 'sonstigeangaben', $son);
541                                echo "</span>";
542                        }
543
544                        if ($jahr <> '') {
545                                echo "\n\t\t<span title='Jahreszahl'>".$jahr."</span>";
546                        }
547                echo "\n\t</td>"; // 5
548                echo "\n\t<td>&nbsp;</td>\n</tr>"; // 6
549                $j++;
550        }
551        // Summenzeile
552        $klasflaedis = number_format($klasflae,0,",",".")." m&#178;";
553        echo "\n<tr>\n\t<td class='re'>Ertragsmesszahl:</td>" // 1
554        ."\n\t<td class='fla sum' title='Summe der Ertragsmesszahlen f&uuml;r dies Flurst&uuml;ck'>".$gesertragsmz."</td>" // 2
555        ."\n\t<td class='re'>".$klasflaedis."</td>" // 3
556        ."\n\t<td colspan='3'>&nbsp;</td>\n</tr>"; // 4-6
557}
558
559// H i n w e i s  auf Bodenneuordnung oder eine strittige Grenze
560$sql_boden ="SELECT a.k AS wert, a.v AS art_verf, b.gml_id AS verf_gml, b.bezeichnung AS verf_bez,
561b.name AS verf_name, d.bezeichnung AS stelle_bez, d.stelle AS stelle_key
562FROM ax_bauraumoderbodenordnungsrecht b
563LEFT JOIN alkis_wertearten a ON cast(b.artderfestlegung AS character varying)=a.k AND a.element='ax_bauraumoderbodenordnungsrecht' AND a.bezeichnung='artderfestlegung'
564LEFT JOIN ax_dienststelle d ON b.stelle=d.stelle
565WHERE b.endet IS NULL AND d.endet IS NULL 
566AND (ST_Within((SELECT wkb_geometry FROM ax_flurstueck WHERE gml_id = $1 AND endet IS NULL ), wkb_geometry)
567 OR ST_Overlaps((SELECT wkb_geometry FROM ax_flurstueck WHERE gml_id = $1 AND endet IS NULL), wkb_geometry));";
568
569pg_prepare($con, "bodeneuordnung", $sql_boden);
570$res_bodeneuordnung = pg_execute($con, "bodeneuordnung", array($gmlid));
571if (!$res_bodeneuordnung) {
572        echo "\n<p class='err'>Fehler bei Bau-, Raum- oder Bodenordnungsrecht</p>";
573        if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".$sql_boden."<br>$1 = gml_id = '".$gmlid."'</p>";}
574}
575$sql_str="SELECT gml_id FROM ax_besondereflurstuecksgrenze WHERE endet IS NULL AND 1000 = ANY(artderflurstuecksgrenze)
576AND ST_touches((SELECT wkb_geometry FROM ax_flurstueck WHERE gml_id = $1 AND endet IS NULL),wkb_geometry);";
577
578pg_prepare($con, "strittigeGrenze", $sql_str);
579$res_strittigeGrenze = pg_execute($con, "strittigeGrenze", array($gmlid));
580if (!$res_strittigeGrenze) {
581        echo "\n<p class='err'>Fehler bei strittige Grenze</p>";
582        if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".$sql_str."<br>$1 = gml_id = '".$gmlid."'</p>";}
583}
584if (pg_num_rows($res_bodeneuordnung) > 0 OR pg_num_rows($res_strittigeGrenze) > 0) {
585        echo "\n<tr>"
586        ."\n\t<td title='Hinweise zum Flurst&uuml;ck'><h6><img src='ico/Hinweis.png' width='16' height='16' alt=''> " // 1
587        ."Hinweise:</h6></td>\n\t<td colspan='5'>&nbsp;</td>\n</tr>";// 2-6
588        if (pg_num_rows($res_bodeneuordnung) > 0) {
589                while ($row = pg_fetch_assoc($res_bodeneuordnung)) { // 3 Zeilen je Verfahren
590                        echo "\n<tr title='Bau-, Raum- oder Bodenordnungsrecht'>" // Zeile 1 - kommt immer, darum hier den Link
591                                ."\n\t<td>Bodenrecht</td>" // 1
592                                ."\n\t<td class='re'>Festlegung: </td>" // 2 "Art der Festlegung" zu lang
593                                ."\n\t<td colspan='3'>"; // 3-5
594                                        if ($showkey) {echo "<span class='key'>(".$row['wert'].")</span> ";}
595                                        echo $row['art_verf']
596                                ."</td>";
597                                echo "\n\t<td>" // 6 LINK:
598                                        ."\n\t\t<p class='nwlink noprint'>"
599                                        ."\n\t\t\t<a href='alkisbaurecht.php?gkz=".$gkz."&amp;gmlid=".$row['verf_gml'];
600                                        if ($showkey) {echo "&amp;showkey=j";}
601                                        echo "' title='Bau-, Raum- oder Bodenordnungsrecht'>Recht <img src='ico/Gericht.png' width='16' height='16' alt=''></a>"
602                                        ."\n\t\t</p>"           
603                                ."\n\t</td>"
604                        ."\n</tr>";
605                        $dstell=$row['stelle_key']; // Zeile 2
606                        if ($dstell != "") { // Kann auch leer sein
607                                echo "\n<tr title='Flurbereinigungsbeh&ouml;rde'>"
608                                        ."\n\t<td>&nbsp;</td>" // 1
609                                        ."\n\t<td class='re'>Dienststelle: </td>" // 2
610                                        ."\n\t<td colspan='3'>"; // 3-5
611                                                if ($showkey) {echo "<span class='key'>(".$dstell.")</span> ";}
612                                                echo $row['stelle_bez']
613                                        ."</td>"
614                                        ."\n\t<td>&nbsp;</td>" // 6
615                                ."\n</tr>";
616                        }
617                        $vbez=$row['verf_bez']; // Zeile 3, ist nicht immer gefÃŒllt
618                        $vnam=$row['verf_name']; // noch seltener
619                        if ($vbez != "") {
620                                echo "\n<tr title='Verfahrensbezeichnung'>"
621                                        ."\n\t<td>&nbsp;</td>"
622                                        ."\n\t<td class='re'>Verfahren: </td>"
623                                        ."\n\t<td colspan='3'>";
624                                                if ($vnam == "") {
625                                                        echo $vbez; // nur die Nummer
626                                                } else {        // Name oder beides
627                                                        if ($showkey) {echo "<span class='key'>(".$vbez.")</span> ";}
628                                                        echo $vnam;
629                                                }
630                                        echo "</td>"
631                                        ."\n\t<td>&nbsp;</td>"
632                                ."\n</tr>";
633                        }
634                }
635        }
636        if (pg_num_rows($res_strittigeGrenze) > 0) { // 1 Zeile
637                echo "\n<tr>\n<td>Strittige Grenze:</td>"
638                ."<td colspan=4>Mindestens eine Flurst&uuml;cksgrenze ist als <b>strittig</b> zu bezeichnen. Sie kann nicht festgestellt werden, weil die Beteiligten sich nicht &uuml;ber den Verlauf einigen. Nach sachverst&auml;ndigem Ermessen der Katasterbeh&ouml;rde ist anzunehmen, dass das Liegenschaftskataster nicht die rechtm&auml;&szlig;ige Grenze nachweist.</td>"
639                ."\n<td>&nbsp;</td>\n</tr>";
640        }
641}
642echo "\n</table>";
643
644// B U C H U N G S S T E L L E N  zum FS
645$bartgrp="";    // Buchungsart
646$barttypgrp=""; // Buchungsart Typ
647if ($gml_buchungsstelle == '') {echo "\n<p class='err'>Keine Buchungstelle zum Flurst&uuml;ck gefunden.</p>";}
648echo "\n<table class='outer'>"; // ALLE Buchungen und EigentÃŒmer in 4 Spalten EINER Tabelle ausgeben
649        $stufe=1; // SchleifenzÀhler Tiefe
650        $gezeigt=buchung_anzg($gml_buchungsstelle, $eig, false, $gmlid, 1); // die ("dienende") Buchung anzeigen, wenn nicht fiktiv. Liefert true/false
651
652        $anzber=ber_bs_zaehl($gml_buchungsstelle); // Anzahl berechtigte Buchungen (nÀchste Stufe) zu dieser Buchung ermitteln
653        $verf_next = array($gml_buchungsstelle); // Start Recursion mit einem Element
654        //if ($debug > 2) {echo "<p class='dbg'>Nach Stufe ".$stufe.", Anzahl: ". $anzber ."</p>";}
655
656        while ($anzber > 0 ) { // Stufe - recursiv in die Tiefe, solange es was zu verfolgen gibt
657                $verf_akt=$verf_next; // die nÀchste Stufe als aktuell ÃŒbernehmen ..
658                $verf_next=array(); // .. und zum AuffÃŒllen leeren
659                $stufe++;
660                $i=0; // SchleifenzÀhler Elemente
661                foreach($verf_akt as $gml_ber_bs) {
662                        $i++;
663                        if (ber_bs_zaehl($gml_ber_bs) > 0) {
664                                $verf_neu=ber_bs_anzg($gml_ber_bs, $eig, false, $gmlid, ""); // Anzeige ber. Buchungst., ggf. mit EigentÃŒmer.
665                                $anz_neu=count($verf_neu); // Das Ergebnis zÀhlen
666                        //      if ($debug > 2) {echo "<p class='dbg'>Weiter zu verfolgen: Stufe ".$stufe.", Element ".$i.", Anzahl: ".$anz_neu."</p>";}
667                                if ($anz_neu > 0) { // wenn neue geliefert
668                                        $verf_next=array_merge($verf_next, $verf_neu); // die neuen an die Sammlung heften
669                                }
670                        }
671                } // Ende Buchungs-Array in der Stufe
672                $anzber=count($verf_next); // Sammlung auf Stufe zÀhlen, Steuert die Schleife.
673                //if ($debug > 2) {echo "<p class='dbg'>Nach Stufe ".$stufe.", Anzahl: ". $anzber ."</p>";}
674        } // Ende Stufe
675echo "\n</table>\n\n";
676
677pg_close($con);
678echo <<<END
679<div class='buttonbereich noprint'>
680<hr>
681        <a title="zur&uuml;ck" href='javascript:history.back()'><img src="ico/zurueck.png" width="16" height="16" alt="zur&uuml;ck"></a>&nbsp;
682        <a title="Drucken" href='javascript:window.print()'><img src="ico/print.png" width="16" height="16" alt="Drucken"></a>&nbsp;
683END;
684echo "\n\t<a title='Export als CSV' href='javascript:ALKISexport(\"" . $gmlid . "\")'><img src='ico/download_fs.png' width='32' height='16' alt='Export'></a>&nbsp;\n</div>";
685
686footer($gmlid, $_SERVER['PHP_SELF']."?", "&amp;eig=".$eig);
687?>
688</body>
689</html>
Note: See TracBrowser for help on using the repository browser.