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

Revision 412, 33.2 KB checked in by frank.jaeger, 5 years ago (diff)

Anpassung der ALKIS-Auskunft (PHP) an die Full-Schema-Version des ALKIS-Importers 3.0

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