Index: trunk/info/info/alkisn/alkisfsnw.php
===================================================================
--- trunk/info/info/alkisn/alkisfsnw.php	(revision 399)
+++ trunk/info/info/alkisn/alkisfsnw.php	(revision 402)
@@ -18,24 +18,16 @@
 	2017-12-08 Planung (Kommentare) der Erweiterung fÃŒr Berechtigte GrundbÃŒcher
 	2017-12-20 Links auf Lagebezeichnung verbessert.
-
-+++	ToDo: +++
-	- Wenn nur 1 Buchung auf der nÃ€chsten Stufe "Recht an" vorliegt (z.B. Erbbaurecht), dann sofort anzeigen. $berbu=''
-	  Bei vielen Buchungen auf der nÃ€chsten Stufe (Miteigentumsanteil) nur die Anzahl, erst auf Anforderung (Parameter) &berbu='j' oder 2,3,4,fÃŒr maximale Stufen.
-      Anzahl weiterer "Rechte an" auf jeder Stufe anzeigen, auch wenn noch kein Link mÃ¶glich ist.
-	  MEHR: Alle "Rechte an" RÃŒckwÃ€rts auflisten analog View "buchungsrechte_3text". Bis zu 4 Buchungen weit.
-      Im Gegensatz zum "Bestandsnachweis" aber nur je eine BVNR weiter verfolgen, die auf dies eine FlurstÃŒck bezogen ist.
-      Dabei berechtigte Buchungen VOR dem Grundbuch anzeigen, also eine Berechtigungs-"Hierarchie" abbilden.
+	2018-04-11 Variable "gmlid" an Function "ALKISexport" ÃŒbergeben. Ist beim Schreiben des Headers noch unbekannt, wenn mit "&fskennz=" aufgerufen.
+	2018-04-23 Umfangreiche Ãberarbeitung der "Buchungsstellen"
+
+++ToDo:
+	- Buchung auf "fiktives Blatt" ist nur mit debug zu sehen: die <tr> in .css grau hinterlegen
+	- Umschalter (gleiches Modul) anders darstellen als Links zu anderen Nachweisen
 	- Parameter zum Umschalten mit/ohne BodenschÃ€tzung?
 	- Bessere Differenzierung bei den Nutzungsarten (Tabelle dafÃŒr aufbauen) 
 */
 session_start();
-
-// Var. aus Parameter initalisieren
-$eig="n";
-$berbu="n";
-$showkey="n";
-
-// alle Parameter in Variable umwandeln
-$cntget = extract($_GET);
+$eig="n"; $showkey="n"; $nodebug=""; // Var. initalisieren
+$cntget = extract($_GET); // alle Parameter in Variable umwandeln
 
 // strikte Validierung aller Parameter
@@ -53,7 +45,7 @@
 if (!isset($gkz) or !preg_match('#^[0-9]{3}$#', $gkz)) {die("Eingabefehler gkz");}
 if (!preg_match('#^[j|n]{0,1}$#', $eig)) {die("Eingabefehler eig");}
-if (!preg_match('#^[j|n]{0,1}$#', $berbu)) {die ("Eingabefehler berbu");}
 if (!preg_match('#^[j|n]{0,1}$#', $showkey)) {die ("Eingabefehler showkey");}
 if ($showkey == "j") {$showkey=true;} else {$showkey=false;} // "j"/"n" als boolean umwandeln, ist praktischer abzufragen, wird oft gebraucht
+if (!preg_match('#^j{0,1}$#', $nodebug)) {die("Eingabefehler nodebug");}
 
 require_once("alkis_conf_location.php");
@@ -69,7 +61,7 @@
 	<link rel="stylesheet" type="text/css" href="alkisauszug.css">
 	<link rel="shortcut icon" type="image/x-icon" href="ico/Flurstueck.ico">
-	<script type="text/javascript">
-		function ALKISexport() {
-			window.open(<?php echo "'alkisexport.php?gkz=".$gkz."&tabtyp=flurstueck&gmlid=".$gmlid."'"; ?>);
+	<script>
+		function ALKISexport(gmlid) {
+			window.open('alkisexport.php?gkz=<?php echo $gkz;?>&tabtyp=flurstueck&gmlid=' + gmlid);
 		}
 	</script>
@@ -77,16 +69,18 @@
 <body>
 <?php
-// S t a r t
+// Mit URL-Parameter "&nodebug=j" kann man die Entwicklungsumgebung (in Conf definiert) ausschalten. Blendet z.B. "fiktives Blatt" aus.
+// Manuell an die URL anfÃŒgen, wirkt nur temporÃ€r und wird nicht in Links weiter gereicht.
+if ($nodebug == "j") {$debug=0;} 
+
 $con = pg_connect($dbconn." options='--application_name=ALKIS-Auskunft_alkisfsnw.php'");
 if (!$con) echo "\n<p class='err'>Fehler beim Verbinden der DB</p>";
 
-// Ein (ALB- ?) FlurstÃŒcks-Kennzeichen wurde alternativ zur gml_id ÃŒbermittelt
+// Ein FlurstÃŒcks-Kennzeichen wurde alternativ zur gml_id ÃŒbermittelt
 if ($fskennz != '') {
-	// Ãbergabe Format z.B. "llgggg-fff-nnnn/zz.nn" oder "gggg-ff-nnn/zz"
-	$arr=explode("-", $fskennz, 4);
+	$arr=explode("-", $fskennz, 4); // zerlegen
 	$zgemkg=trim($arr[0]);
-	if (strlen($zgemkg) == 20 and !isset($arr[1])) { // Oh, ist wohl schon das Datenbank-Feldformat 
-		$fskzdb=$zgemkg;
-	} else { // NÃ¶, ist wohl eher ALB-Format
+	if (strlen($zgemkg) == 20 and !isset($arr[1])) {
+		$fskzdb=$zgemkg; // Datenbank-Feldformat
+	} else { // Format "llgggg-fff-nnnn/zz.nn" oder "gggg-ff-nnn/zz"
 		// Das Kennzeichen auseinander nehmen. 
 		if (strlen($zgemkg) == 6) {
@@ -121,5 +115,5 @@
 	$res = pg_prepare("", $sql);
 	$res = pg_execute("", $v);
-	if ($row = pg_fetch_array($res)) {
+	if ($row = pg_fetch_assoc($res)) {
 		$gmlid=$row["gml_id"];
 	} else {
@@ -132,24 +126,30 @@
 }
 
-// F L U R S T U E C K
+// F L U R S T U E C K  m. Gebiet
 $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, 
-to_char(cast(f.zeitpunktderentstehung AS date),'DD.MM.YYYY') AS zeitpunktderentstehung, g.gemarkungsnummer, g.bezeichnung 
-FROM ax_flurstueck f LEFT JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer 
-WHERE f.gml_id= $1 AND f.endet IS NULL AND g.endet IS NULL;";
-
+to_char(cast(f.zeitpunktderentstehung AS date),'DD.MM.YYYY') AS zeitpunktderentstehung, f.istgebucht, g.gemarkungsnummer, g.bezeichnung, 
+r.bezeichnung AS rbez, k.bezeichnung AS kbez, m.bezeichnung AS mbez 
+FROM ax_flurstueck f 
+LEFT JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer 
+LEFT JOIN ax_regierungsbezirk r ON f.regierungsbezirk=r.regierungsbezirk 
+LEFT JOIN ax_kreisregion k ON f.regierungsbezirk=k.regierungsbezirk AND f.kreis=k.kreis 
+LEFT JOIN ax_gemeinde m ON m.regierungsbezirk=f.regierungsbezirk AND m.kreis=f.kreis AND m.gemeinde=f.gemeinde
+WHERE 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;";
 $v = array($gmlid); // mit gml_id suchen
 $res = pg_prepare("", $sql);
 $res = pg_execute("", $v);
-
 if (!$res) {
 	echo "\n<p class='err'>Fehler bei Flurstuecksdaten</p>";
 	if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = gml_id = '".$gmlid."'</p>";}
 }
-if ($row = pg_fetch_array($res)) {
+if ($row = pg_fetch_assoc($res)) {
 	$gemkname=htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8");
 	$gmkgnr=$row["gemarkungsnummer"];
 	$bezirk=$row["regierungsbezirk"];
+	$rbez=htmlentities($row["rbez"], ENT_QUOTES, "UTF-8");
 	$kreis=$row["kreis"];
+	$kbez=htmlentities($row["kbez"], ENT_QUOTES, "UTF-8");
 	$gemeinde=$row["gemeinde"];
+	$mbez=htmlentities($row["mbez"], ENT_QUOTES, "UTF-8");
 	$flurnummer=$row["flurnummer"];
 	$zaehler=$row["zaehler"];
@@ -163,4 +163,5 @@
 	$fsgeomflaed=number_format($fsgeomflae,0,",",".") . " m&#178;";
 	$entsteh=$row["zeitpunktderentstehung"];
+	$gml_buchungsstelle=$row["istgebucht"]; // wird erst im GB-Teil benÃ¶tigt
 	$name=$row["name"]; // Fortfuehrungsnummer(n)
 	$arrn = explode(",", trim($name, "{}") ); // PHP-Array
@@ -173,11 +174,10 @@
 pg_free_result($res);
 
-// Balken
-if ($eig=="j") {
+if ($eig=="j") { // Balken
 	echo "<p class='fsei'>ALKIS Flurst&uuml;ck ".$gmkgnr."-".$flurnummer."-".$flstnummer."&nbsp;</p>"
-	."\n<h2><img src='ico/Flurstueck.png' width='16' height='16' alt=''> Flurst&uuml;ck mit Eigent&uuml;mer</h2>";
+	."\n\n<h2>Flurst&uuml;ck mit Eigent&uuml;mer</h2>";
 } else {
 	echo "<p class='fskennz'>ALKIS Flurst&uuml;ck ".$gmkgnr."-".$flurnummer."-".$flstnummer."&nbsp;</p>"
-	."\n<h2><img src='ico/Flurstueck.png' width='16' height='16' alt=''> Flurst&uuml;ck</h2>";
+	."\n\n<h2>Flurst&uuml;ck</h2>";
 }
 
@@ -186,6 +186,5 @@
 if ( ($filtkreis != '' and $filtkreis != $kreis) or ($filtgem != '' and $filtgem != $gemeinde) ) {
 	// Einer der gesetzten Filter passt nicht
-	if ($debug > 2) {
-	//++ SchÃ¶nes Bild? Stop-Zeichen?
+	if ($debug > 2) { //++ SchÃ¶nes Bild? Stop-Zeichen?
 		echo "\n<p class='err'>Filter Kreis='".$filtkreis."', Gemeinde='".$filtgem."'</p>"
 		."\n<p class='err'>Flstk. Kreis='".$fskrs."', Gemeinde='".$fsgem."'</p>";
@@ -196,104 +195,60 @@
 }
 
-echo "\n<table class='outer'>\n<tr>\n\t<td>" // linke Seite
-	."\n\t\t<table class='kennzfs' title='Flurst&uuml;ckskennzeichen'>\n\t\t<tr>" // darin Tabelle Kennzeichen
-		."\n\t\t\t<td class='head'>Gmkg</td>\n\t\t\t<td class='head'>Flur</td>\n\t\t\t<td class='head'>Flurst-Nr.</td>\n\t\t</tr>"
-		."\n\t\t<tr>\n\t\t\t<td title='Gemarkung'>";
-		if ($showkey) {
-			echo "<span class='key'>".$gmkgnr."</span><br>";
-		}
-		echo $gemkname."&nbsp;</td>"
-		."\n\t\t\t<td title='Flurnummer'>".$flurnummer."</td>"
-		."\n\t\t\t<td title='Flurst&uuml;cksnummer (Z&auml;hler / Nenner)'><span class='wichtig'>".$flstnummer."</span></td>\n\t\t</tr>"
-	."\n\t\t</table>"
-."\n\t</td>\n\t<td>" // rechte Seite
-	."\n\t\t<table class='fsd'>" // FS-Daten 2 Spalten
-		."\n\t\t<tr>\n\t\t\t<td>Entstehung</td>"
-		."\n\t\t\t<td>".$entsteh."</td>\n\t\t</tr>"
-		."\n\t\t<tr>"
-			."\n\t\t\t<td>letz. Fortf</td>"
-			."\n\t\t\t<td title='Jahrgang / Fortf&uuml;hrungsnummer - Fortf&uuml;hrungsart'>";
+echo "\n<table class='outer'>"
+	."\n\t<tr>\n\t\t<td class='ll'><img src='ico/Flurstueck.png' width='16' height='16' alt=''> Kennzeichen:</td>" // Links
+	."\n\t\t<td>" // Mitte
+	."\n\t\t\t<table class='kennzfs' title='Flurst&uuml;ckskennzeichen'>\n\t\t\t\t<tr>" // darin Tabelle Kennzeichen
+		."\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>"
+		."\n\t\t\t\t<tr>\n\t\t\t\t\t<td title='Gemarkung'>";
+			if ($showkey) {echo "<span class='key'>".$gmkgnr."</span><br>";}
+			echo $gemkname."&nbsp;</td>"
+		."\n\t\t\t\t\t<td title='Flurnummer'>".$flurnummer."</td>"
+		."\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>"
+	."\n\t\t\t</table>"
+	."\n\t\t</td>\n\t\t<td>" // Rechts
+	."\n\t\t\t<table class='fsd'>" // FS-Daten 2 Spalten
+		."\n\t\t\t\t<tr>\n\t\t\t\t\t<td>Entstehung</td>"
+		."\n\t\t\t\t\t<td>".$entsteh."</td>\n\t\t\t\t</tr>"
+		."\n\t\t\t\t<tr>"
+			."\n\t\t\t\t\t<td>letz. Fortf</td>"
+			."\n\t\t\t\t\t<td title='Jahrgang / Fortf&uuml;hrungsnummer - Fortf&uuml;hrungsart'>";
 				foreach($arrn AS $val) { // Zeile f. jedes Element des Array
 					echo trim($val, '"')."<br>";
 				}
 			echo "</td>"
-		."\n\t\t</tr>"
-	."\n\t\t</table>"
-."\n\t</td>\n</tr>\n</table>";
-//	echo "\n<tr>\n\t<td>Finanzamt</td>\n\t<td>".$finanzamt." ".$finame  . "</td>\n</tr>";
-// Ende Seitenkopf
-
-echo "\n<hr>"
-."\n<p class='nwlink noprint'>weitere Auskunft:</p>" // oben rechts von der Tabelle
-."\n<table class='fs'>";
-
-// ** G e b i e t s z u g e h o e r i g k e i t **
-// eine Tabellenzeile mit der Gebietszugehoerigkeit eines Flurstuecks wird ausgegeben
-// Schluessel "land" wird nicht verwendet, gibt es Bestaende wo das nicht einheitlich ist?
-echo "\n<tr>\n\t<td class='ll'><img title='Im Gebiet von' src='ico/Gemeinde.png' width='16' height='16' alt=''> Gebiet:</td>";
-
-// G e m e i n d e
-$sql="SELECT bezeichnung FROM ax_gemeinde WHERE regierungsbezirk= $1 AND kreis= $2 AND gemeinde= $3 AND endet IS NULL;"; 
-
-$v = array($bezirk,$kreis,$gemeinde);
-$res = pg_prepare("", $sql);
-$res = pg_execute("", $v);
-if (!$res) {
-	echo "\n<p class='err'>Fehler bei Gemeinde</p>";
-	if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."</p>";}
-}
-$row = pg_fetch_array($res);
-$gnam = htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8");
-echo "\n\t<td class='lr'>Gemeinde</td>\n\t<td class='lr' colspan='3'>";
-if ($showkey) {echo "<span class='key'>(".$gemeinde.")</span> ";}
-// Link zur FS-Historie (passt nicht ganz in die Zeile "Gemeinde", aber gut unter "weitere Auskunft")
-echo $gnam."</td>\n\t<td class='nwlink'>"
-	."\n\t\t<p class='nwlink noprint'>"
+		."\n\t\t\t\t</tr>"
+	."\n\t\t\t</table>"
+."\n\t\t</td>\n\t</tr>\n</table>";
+
+echo "\n<hr>\n<table class='fs'>"; // FS-Teil 6 Spalten
+echo "\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
+	."\n\t\t<td>\n\t\t<p class='nwlink noprint'>weitere Auskunft:</p></td>" // 6
+."\n</tr>";
+
+echo "\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
+	."\n\t<td class='ll'><img title='Im Gebiet von' src='ico/Gemeinde.png' width='16' height='16' alt=''> Gebiet:</td>" // 1
+	."\n\t<td>Gemeinde<br>Kreis<br>Regierungsbezirk</td>" // 2
+	."\n\t<td class='lr' colspan='3'>"; // 3-5
+		if ($showkey) {echo "<span class='key'>(".$gemeinde.")</span> ";}
+		echo $mbez."<br>";
+		if ($showkey) {echo "<span class='key'>(".$kreis.")</span> ";}
+		echo $kbez."<br>";
+		if ($showkey) {echo "<span class='key'>(".$bezirk.")</span> ";}
+		echo $rbez
+	."</td>"
+	."\n\t<td class='nwlink'>" // 5
+		."\n\t\t<p class='nwlink noprint'>"
 		."\n\t\t\t<a href='alkisfshist.php?gkz=".$gkz."&amp;gmlid=".$gmlid;
-			if ($showkey) {echo "&amp;showkey=j";}
-			echo "' title='Vorg&auml;nger-Flurst&uuml;cke'>Historie "
-			."<img src='ico/Flurstueck_Historisch.png' width='16' height='16' alt=''>"
+		if ($showkey) {echo "&amp;showkey=j";}
+		echo "' title='Vorg&auml;nger-Flurst&uuml;cke'>Historie "
+		."<img src='ico/Flurstueck_Historisch.png' width='16' height='16' alt=''>"
 		."</a>"
-	."\n\t\t</p>"
-. "\n\t</td>\n</tr>";
-pg_free_result($res);
-
-// K r e i s
-$sql="SELECT bezeichnung FROM ax_kreisregion WHERE regierungsbezirk= $1 AND kreis= $2 AND endet IS NULL;"; 
-$v = array($bezirk,$kreis);
-$res = pg_prepare("", $sql);
-$res = pg_execute("", $v);
-if (!$res) {
-	echo "\n<p class='err'>Fehler bei Kreis</p>";
-	if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."</p>";}
-}
-$row = pg_fetch_array($res);
-$knam = htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8");
-echo "\n<tr>\n\t<td>&nbsp;</td>\n\t<td>Kreis</td>\n\t<td class='lr' colspan='3'>";
-if ($showkey) {echo "<span class='key'>(".$kreis.")</span> ";}
-echo $knam."</td>\n\t<td>&nbsp;</td>\n</tr>";
-pg_free_result($res);
-
-// R e g - B e z
-$sql="SELECT bezeichnung FROM ax_regierungsbezirk WHERE regierungsbezirk= $1 AND endet IS NULL;";
-$v = array($bezirk);
-$res = pg_prepare("", $sql);
-$res = pg_execute("", $v);
-if (!$res) {
-	echo "\n<p class='err'>Fehler bei Regierungsbezirk</p>";
-	if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."</p>";}
-}
-$row=pg_fetch_array($res);
-$bnam=htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8");
-echo "\n<tr>\n\t<td>&nbsp;</td>\n\t<td>Regierungsbezirk</td>\n\t<td class='lr' colspan='3'>";
-if ($showkey) {echo "<span class='key'>(".$bezirk.")</span> ";}
-echo $bnam."</td>\n\t<td>&nbsp;</td>\n</tr>";
-pg_free_result($res);
-// ENDE G e b i e t s z u g e h o e r i g k e i t
+		."\n\t\t</p>"
+	."\n\t</td>" // 6
+."\n</tr>";
 
 // ** L a g e b e z e i c h n u n g **
 
 // Lagebezeichnung  M I T  Hausnummer
-
 // ax_flurstueck  >weistAuf>  AX_LagebezeichnungMitHausnummer
 $sql="SELECT DISTINCT l.gml_id, l.gemeinde, l.lage, l.hausnummer, s.bezeichnung, s.gml_id AS kgml
@@ -316,5 +271,5 @@
 	$j=0;
 	$kgmlalt="";
-	while($row = pg_fetch_array($res)) {
+	while($row = pg_fetch_assoc($res)) {
 		$sname=htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8"); // Str.-Name
 		if (substr($sname, strlen($sname) -3, 3) == 'weg') { // Versuch fuer korrekten Satzbau
@@ -324,19 +279,15 @@
 		}
 		$hsnr=$row["hausnummer"];
-		echo "\n<tr>\n\t";
-			if ($j == 0) {
+		echo "\n<tr>";
+			if ($j == 0) { // 1
 				echo "\n\t<td class='ll'><img src='ico/Lage_mit_Haus.png' width='16' height='16' alt=''> Adresse:</td>";
 			} else {
 				echo "\n\t<td>&nbsp;</td>";
 			}
-			echo "\n\t<td>&nbsp;</td>"
-			."\n\t<td class='lr' colspan='3'>";
-			if ($showkey) {
-				echo "<span class='key' title='StraÃenschl&uuml;ssel'>(".$row["lage"].")</span>&nbsp;";
-			}
-			echo $sname."&nbsp;".$hsnr."</td>";
-
-			// rechte Spalte
-			echo "\n\t<td>\n\t\t<p class='nwlink noprint'>";
+			echo "\n\t<td>&nbsp;</td>" // 2
+			."\n\t<td class='lr' colspan='3'>"; // 3-5
+				if ($showkey) {echo "<span class='key' title='StraÃenschl&uuml;ssel'>(".$row["lage"].")</span>&nbsp;";}
+				echo $sname."&nbsp;".$hsnr."</td>";
+			echo "\n\t<td>\n\t\t<p class='nwlink noprint'>"; // 6
 
 			// +++ davor auch Link "StraÃe"
@@ -352,5 +303,5 @@
 				if ($showkey) {echo "&amp;showkey=j";}
 				echo "'>Lage <img src='ico/Lage_mit_Haus.png' width='16' height='16' alt=''></a>"
-			."\n\t\t</p>\n\t</td>"
+			."\n\t\t</p>\n\t</td>"  // 6
 		."\n</tr>";
 		$j++;
@@ -359,8 +310,6 @@
 	pg_free_result($res);
 }
-// +++ Verbesserung: mehrere HsNr zur gleichen StraÃe als Liste?
 
 // Lagebezeichnung  O H N E  Hausnummer  (Gewanne oder nur Strasse)
-
 // ax_flurstueck  >zeigtAuf>  AX_LagebezeichnungOhneHausnummer
 $sql ="SELECT l.gml_id, l.unverschluesselt, l.gemeinde, l.lage, s.bezeichnung 
@@ -378,19 +327,18 @@
 }
 $j=0;
-while($row = pg_fetch_array($res)) {
+while($row = pg_fetch_assoc($res)) {
 	$skey=$row["lage"]; // Strassenschl.
 	$lgml=$row["gml_id"]; // key der Lage
 	$gewann = htmlentities($row["unverschluesselt"], ENT_QUOTES, "UTF-8");
-
 	if ($gewann != "") {
 		echo "\n<tr>"
-			."\n\t<td class='ll' title='unverschl&uuml;sselte Lagebezeichnung'><img src='ico/Lage_Gewanne.png' width='16' height='16' alt=''> Gewanne:</td>"
-			."\n\t<td></td>"
-			."\n\t<td class='lr' colspan='3'>".$gewann."</td>"
-			."\n\t<td>\n\t\t<p class='nwlink noprint'>"
+			."\n\t<td class='ll' title='unverschl&uuml;sselte Lagebezeichnung'><img src='ico/Lage_Gewanne.png' width='16' height='16' alt=''> Gewanne:</td>" // 1
+			."\n\t<td></td>" // 2
+			."\n\t<td class='lr' colspan='3'>".$gewann."</td>" // 3-5
+			."\n\t<td>\n\t\t<p class='nwlink noprint'>" // 6
 				."\n\t\t\t<a title='Flurst&uuml;cke mit der Gewanne ".$gewann."' href='alkislage.php?gkz=".$gkz."&amp;ltyp=o&amp;gmlid=".$lgml;
 				if ($showkey) {echo "&amp;showkey=j";}				
 				echo "'>\n\t\t\tLage <img src='ico/Lage_Gewanne.png' width='16' height='16' alt=''></a>"
-			."\n\t\t</p>\n\t</td>"
+			."\n\t\t</p>\n\t</td>" // 6
 		."\n</tr>";
 	} elseif ($skey > 0) {
@@ -402,16 +350,14 @@
 		}
 		echo "\n<tr>"
-			."\n\t<td class='ll'><img src='ico/Lage_an_Strasse.png' width='16' height='16' alt=''> Stra&szlig;e:</td>"
-			."\n\t<td></td>"
-			."\n\t<td class='lr' colspan='3'>";
-			if ($showkey) {echo "<span class='key'>(".$skey.")</span>&nbsp;";}
-			echo $sname."</td>";
-
-			// rechte Spalte
-			echo "\n\t<td>\n\t\t<p class='nwlink noprint'>"
+			."\n\t<td class='ll'><img src='ico/Lage_an_Strasse.png' width='16' height='16' alt=''> Stra&szlig;e:</td>" // 1
+			."\n\t<td></td>" // 2
+			."\n\t<td class='lr' colspan='3'>"; // 3-5
+				if ($showkey) {echo "<span class='key'>(".$skey.")</span>&nbsp;";}
+				echo $sname."</td>";
+			echo "\n\t<td>\n\t\t<p class='nwlink noprint'>" // 6
 				."\n\t\t\t<a title='FlurstÃŒcke ".$slink."' href='alkislage.php?gkz=".$gkz."&amp;ltyp=o&amp;gmlid=".$lgml;
 				if ($showkey) {echo "&amp;showkey=j";}				
 				echo "'>\n\t\t\tLage <img src='ico/Lage_an_Strasse.png' width='16' height='16' alt=''>\n\t\t\t</a>"
-			."\n\t\t</p>\n\t</td>"
+			."\n\t\t</p>\n\t</td>" // 6
 		."\n</tr>";
 	}
@@ -419,136 +365,22 @@
 }
 pg_free_result($res);
-// ENDE  L a g e b e z e i c h n u n g
-
-// ** N U T Z U N G ** Gemeinsame FlÃ€che von NUA und FS
-// Tabellenzeilen (3 Spalten) mit tats. Nutzung zu einem FS ausgeben
-
-/* N U T Z U N G   C l a s s i c (alt)
-$sql ="SELECT m.title, m.fldclass, m.fldinfo, n.gml_id, n.nutz_id, n.class, n.info, n.zustand, n.name, n.bezeichnung, m.gruppe, 
-st_area(st_intersection(n.wkb_geometry,f.wkb_geometry)) AS schnittflae, c.label, c.blabla 
-FROM ax_flurstueck f, nutzung n JOIN nutzung_meta m ON m.nutz_id=n.nutz_id 
-LEFT JOIN nutzung_class c ON c.nutz_id=n.nutz_id AND c.class=n.class 
-WHERE f.gml_id= $1 AND st_intersects(n.wkb_geometry,f.wkb_geometry) = true 
-AND st_area(st_intersection(n.wkb_geometry,f.wkb_geometry)) > 0.05 
-AND f.endet IS NULL ORDER BY schnittflae DESC;";
-
-$v = array($gmlid);
-$res = pg_prepare("", $sql);
-$res = pg_execute("", $v);
-if (!$res) {
-	echo "\n<p class='err'>Fehler bei Suche tats. Nutzung</p>";
-	if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = gml_id = '".$gmlid."'</p>";}
-}
-$the_Xfactor=$fsbuchflae / $fsgeomflae; // geom. ermittelte FlÃ€che auf amtl. BuchflÃ€che angleichen
-$j=0;
-while($row = pg_fetch_array($res)) {
-	$grupp=$row["gruppe"]; // 4 Gruppen
-	$nutzid=$row["nutz_id"]; // 27 Tabellen, num. Key
-	$title=htmlentities($row["title"], ENT_QUOTES, "UTF-8"); // Titel der 27 Tabellen
-	$fldclass=$row["fldclass"]; // Name 1. Zusatzfeld
-	$fldinfo= $row["fldinfo"];  // Name 2. Zus.
-	$gml=$row["gml_id"];
-	$class=$row["class"]; // 1. Zusatzfeld verschlÃŒsselt -> nutzung_class
-	$info=$row["info"]; // 2. Zus. verschlÃŒsselt (noch keine Info zum entschl.)
-	$schnittflae=$row["schnittflae"];
-	$label=$row["label"]; // Nutzungsart entschlÃŒsselt
-	$zus=$row["zustand"]; // im Bau
-	$nam=$row["name"]; // Eigenname
-	$bez=$row["bezeichnung"]; // weiterer Name (unverschl.)
-	$blabla=htmlentities($row["blabla"], ENT_QUOTES, "UTF-8");
-	$label=str_replace("/", "<br>", $label); // Ersetzt "/" durch html-Zeilenwechsel
-
-	echo "\n<tr>\n\t";
-		if ($j == 0) {
-			echo "<td class='ll' title='Abschnitt der tats&auml;chlichen Nutzung'><img src='ico/Abschnitt.png' width='16' height='16' alt=''> Nutzung:</td>";
-		} else {
-			echo "<td>&nbsp;</td>";
-		}
-		$absflaebuch = $schnittflae * $the_Xfactor; // angleichen geometrisch an amtliche FlÃ€che
-		$schnittflae = number_format($schnittflae,1,",",".") . " m&#178;"; // geometrisch
-		$absflaebuch = number_format($absflaebuch,0,",",".") . " m&#178;"; // Abschnitt an BuchflÃ€che angeglichen
-		echo "\n\t<td class='fla' title='geometrisch berechnet: ".$schnittflae."'>".$absflaebuch."</td>";
-
-		echo "\n\t<td class='lr' colspan='3'>";
-			if ($class == 0) {
-				if ($showkey) {echo "<span class='key'>(".$nutzid.")</span> ";}
-				echo $title; // Name der Tabelle
-			} elseif ( ($fldclass == "Funktion" OR $fldclass == "Vegetationsmerkmal") AND $label != "") { // Kurze Anzeige
-				if ($showkey) {echo "<span class='key' title='".$fldclass."'>(".$nutzid."-".$class.")</span> ";}
-				if ($blabla = "") {
-					echo $label;
-				} else {
-					echo "<span title='".$blabla."'>".$label."</span>";
-				}
-			} else { // ausfuehrlichere Anzeige
-				echo $title; // NUA-Tabelle
-				if ($class != "") { // NUA-SchlÃŒssel
-					echo ", ".$fldclass.": "; // Feldname
-					if ($showkey) {echo "<span class='key' title='".$fldclass."'>(".$nutzid."-".$class.")</span> ";}
-					if ($label != "") { // Bedeutung dazu wurde erfasst
-						if ($blabla = "") {
-							echo $label;
-						} else {
-							echo "<span title='".$blabla."'>".$label."</span>";
-						}
-					} else { // muss noch erfasst werden
-						echo $class." "; // SchlÃŒssel als Ersatz fÃŒr Bedeutung
-					}
-				}
-			}
-			if ($info != "") { // manchmal ein zweites Zusatzfeld (wie entschlÃŒsseln?)
-				echo ", ".$fldinfo."=".$info;
-			}
-			if ($zus != "") { // Zustand
-				echo "\n\t\t<br>";
-				if ($showkey) {echo "<span class='key'>(".$zus.")</span> ";}
-				echo "<span title='Zustand'>";				
-				switch ($zus) {
-					case 2100: echo "AuÃer Betrieb, stillgelegt, verlassen"; break;
-					case 4000: echo "Im Bau"; break;
-					case 8000: echo "Erweiterung, Neuansiedlung"; break;
-					default: echo "Zustand: ".$zus; break;
-				}
-				echo "</span>";
-			}
-			if ($nam != "") {echo "<br>Name: ".$nam;}
-			if ($bez != "") {echo "<br>Bezeichnung: ".$bez;}
-
-		echo "</td>";
-		echo "\n\t<td>";
-			switch ($grupp) { // Icon nach 4 Objektartengruppen
-				case "Siedlung":   $ico = "Abschnitt.png"; break;
-				case "Verkehr":	   $ico = "Strassen_Klassifikation.png"; break;
-				case "Vegetation": $ico = "Wald.png"; break;
-				case "GewÃ€sser":   $ico = "Wasser.png";	break;
-				default:	$ico = "Abschnitt.png";	break;
-			}
-			// Icon ist auch im Druck sichtbar, class='noprint' ?		
-			echo "<p class='nwlink'><img title='".$title."' src='ico/".$ico."' width='16' height='16' alt='NUA'></p>";
-		echo "</td>";
-	echo "\n</tr>";
-	$j++;
-}
-  E N D E   N U T Z U N G   C l a s s i c  */
-
-/* Status "Nutzung":
-
- Die Classic-Tabelle "nutzung" ist eine Zusammenfassung aller Tabellen mit Nutzungs-FlÃ€chen
- Die Classic-Tabelle "nutzung_meta" zeigt die Kategorie und Gruppe des Nutzungs-Abschnitts an.
-
- Aus der norGIS-Struktur wird ersatzweise VORLÃUFIG die Tabelle "nutz_21" verwendet,
- die das alte ALB-Format der Nutzungs-Abschnitte von FlurstÃŒcken simuliert.
- Hier finden sich bereits verschnittene FlÃ€chen, aber die gml_id fehlt.
-
- Die EntschlÃŒsselung der Nutzungsart in den verschiedenen ALKIS-Varianten ist darin unterentwickelt.
- Diese ist eigentlich fÃŒr jede der getrennten Tabellen der Gruppe Nutzungsart individuell.
- Die Classic-LÃ¶sung mit 2 Zusatzfeldern war schon sehr pauschalisiert, aber 
- durch die RÃŒck-Konvertierung in ALB-Strukturen in der norGIS-Version ist das zu stark vereinfacht.
- z.B. wird "WohnbauflÃ€che" mit der Zusatzeigenschaft "Art der Bebauung": 'Offen'
- nun zur Nutzungsart "Offen".
- Durch JOIN auf die "alkis_elemente" mit einem Teil des SchlÃŒssels wird das zur "WohnbauflÃ€che, Offen".
- Es sollte eine Tabellen-Struktur bereit gestellt werden, die auch aussagt, dass der Wert "Offen" zur
- Zusatz-Eigenschaft "Art der Bebauung" gehÃ¶rt. Dazu muss das PostProcessing erweitert werden. */
-
+
+/* Status "N u t z u n g":
+Die Classic-Tabelle "nutzung" ist eine Zusammenfassung aller Tabellen mit Nutzungs-FlÃ€chen
+Die Classic-Tabelle "nutzung_meta" zeigt die Kategorie und Gruppe des Nutzungs-Abschnitts an.
+
+Aus der norGIS-Struktur wird ersatzweise VORLÃUFIG die Tabelle "nutz_21" verwendet,
+die das alte ALB-Format der Nutzungs-Abschnitte von FlurstÃŒcken simuliert.
+Hier finden sich bereits verschnittene FlÃ€chen, aber die gml_id fehlt.
+
+Die EntschlÃŒsselung der Nutzungsart in den verschiedenen ALKIS-Varianten ist darin unterentwickelt.
+Diese ist eigentlich fÃŒr jede der getrennten Tabellen der Gruppe Nutzungsart individuell.
+Die Classic-LÃ¶sung mit 2 Zusatzfeldern war schon sehr pauschalisiert, aber 
+durch die RÃŒck-Konvertierung in ALB-Strukturen in der norGIS-Version ist das zu stark vereinfacht.
+z.B. wird "WohnbauflÃ€che" mit der Zusatzeigenschaft "Art der Bebauung": 'Offen'
+nun zur Nutzungsart "Offen".
+Durch JOIN auf die "alkis_elemente" mit einem Teil des SchlÃŒssels wird das zur "WohnbauflÃ€che, Offen".
+Es sollte eine Tabellen-Struktur bereit gestellt werden, die auch aussagt, dass der Wert "Offen" zur
+Zusatz-Eigenschaft "Art der Bebauung" gehÃ¶rt. Dazu muss das PostProcessing erweitert werden. */
 
 $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
@@ -565,7 +397,6 @@
 	if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = FS-Kennz = '".$fskennzalb."'</p>";}
 }
-
 $j=0;
-while($row = pg_fetch_array($res)) {
+while($row = pg_fetch_assoc($res)) {
 	$flae=$row["fl"]; // BuchflÃ€che
 	$nutzsl=$row["nutzsl"]; // SchlÃŒssel
@@ -573,7 +404,6 @@
 	$defi=$row["definition"]; // Langer Text mit Beschreibung
 	$title=htmlentities($defi, ENT_QUOTES, "UTF-8"); // .. fÃŒr Anzeige aufbereitet
-
 	echo "\n<tr>\n\t";
-		if ($j == 0) {
+		if ($j == 0) { // 1
 			echo "<td class='ll' title='Abschnitt der tats&auml;chlichen Nutzung'><img src='ico/Abschnitt.png' width='16' height='16' alt=''> Nutzung:</td>";
 		} else {
@@ -581,11 +411,12 @@
 		}
 		$absflaebuch = number_format($flae,0,",",".") . " m&#178;"; // Formatierte Abschnitts-Buch-FlÃ€che
-		echo "\n\t<td class='fla' title='Buchfl&auml;che des Abschnitts'>".$absflaebuch."</td>";
-
-		echo "\n\t<td class='lr' colspan='3' title='".$title."'>";
+		echo "\n\t<td></td>"; // 2
+		echo "\n\t<td class='fla' title='Buchfl&auml;che des Abschnitts'>".$absflaebuch."</td>"; // 3 - gleiche Spalte wie Fl. in BodenschÃ€tzg.
+		echo "\n\t<td></td>"; // 4
+		echo "\n\t<td class='lr' title='".$title."'>"; // 5 - gleiche Sp. wie Zustandsstufe usw.
 			if ($showkey) {echo "<span class='key'>(".$nutzsl.")</span> ";}
 			echo $nutzung
 		."</td>"
-		."\n\t<td>";
+		."\n\t<td>"; // 6
 /*		// Derzeit ist keine Gruppe zugeordnet
 			switch ($grupp) { // Icon nach 4 Objektartengruppen
@@ -597,7 +428,6 @@
 			}
 			// Icon ist auch im Druck sichtbar, class='noprint' ?		
-			echo "<p class='nwlink'><img title='".$title."' src='ico/".$ico."' width='16' height='16' alt='NUA'></p>";
-*/
-		echo "</td>"
+			echo "<p class='nwlink'><img title='".$title."' src='ico/".$ico."' width='16' height='16' alt='NUA'></p>"; */
+		echo "</td>" // 6
 	."\n</tr>";
 	$j++;
@@ -605,61 +435,24 @@
 pg_free_result($res);
 
-echo "\n<tr>" // Summenzeile
-	."\n\t<td class='re' title='amtliche Fl&auml;che (Buchfl&auml;che)'>Fl&auml;che:</td>"
-	."\n\t<td class='fla sum'>"
-	."<span title='geometrisch berechnete Fl&auml;che = ".$fsgeomflaed."' class='flae'>".$fsbuchflaed."</span></td>";
-
-	// Flaeche und Link auf GebÃ€ude-Auswertung
-	echo "\n\t<td colspan='3'>&nbsp;</td>\n\t<td>"
+echo "\n<tr>" // FlÃ€chen-Summenzeile
+	."\n\t<td class='re' title='amtliche Fl&auml;che (Buchfl&auml;che)'>Fl&auml;che:</td>" // 1
+	."\n\t<td>&nbsp;</td>" // 2
+	."\n\t<td class='fla sum'>" // 3 Flaeche
+		."<span title='geometrisch berechnete Fl&auml;che = ".$fsgeomflaed."' class='flae'>".$fsbuchflaed."</span></td>"
+	."\n\t<td>&nbsp;</td>" // 4
+	."\n\t<td>&nbsp;</td>" // 5
+	."\n\t<td>" // 6 Link auf GebÃ€ude-Auswertung
 		."\n\t\t<p class='nwlink noprint'>" // Gebaeude-Verschneidung
-			."\n\t\t\t<a href='alkisgebaeudenw.php?gkz=".$gkz."&amp;gmlid=".$gmlid;
-			if ($showkey) {echo "&amp;showkey=j";}
-			if ($cnt_adressen > 0) { // wenn Adresse vorgekommen ist
-				echo "' title='Geb&auml;ude auf oder an dem Flurst&uuml;ck'>Geb&auml;ude ";
-			} else { // GebÃ€ude mit Adresse gibt es NICHT, das ist klar
-				echo "' title='Suche Geb&auml;ude ohne Adresse auf dem Flurst&uuml;ck oder angrenzende Geb&auml;ude'>Suche ";
-			}
-			echo "<img src='ico/Haus.png' width='16' height='16' alt=''></a>"
+		."\n\t\t\t<a href='alkisgebaeudenw.php?gkz=".$gkz."&amp;gmlid=".$gmlid;
+		if ($showkey) {echo "&amp;showkey=j";}
+		if ($cnt_adressen > 0) { // wenn Adresse vorgekommen ist
+			echo "' title='Geb&auml;ude auf oder an dem Flurst&uuml;ck'>Geb&auml;ude ";
+		} else { // GebÃ€ude mit Adresse gibt es NICHT, das ist klar
+			echo "' title='Suche Geb&auml;ude ohne Adresse auf dem Flurst&uuml;ck oder angrenzende Geb&auml;ude'>Suche ";
+		}
+		echo "<img src='ico/Haus.png' width='16' height='16' alt=''></a>"
 		."\n\t\t</p>"
-	."\n\t</td>"
-."\n</tr>";
-// ENDE  N U T Z U N G
-
-
-// K L A S S I F I Z I E R U N G
-
-// Klassifizierung nach  W a s s e rrecht
-/* 
-	// Tabelle immer leer?
-$sql="SELECT h.v, w.artderfestlegung, st_area(st_intersection(w.wkb_geometry, f.wkb_geometry)) AS schnittflae, f.amtlicheflaeche, st_area(f.wkb_geometry) as fsgeomflae 
-FROM ax_flurstueck f
-JOIN ax_klassifizierungnachwasserrecht w
- ON st_intersects(w.wkb_geometry, f.wkb_geometry) AND st_area(st_intersection(w.wkb_geometry, f.wkb_geometry)) > 0.05
-LEFT JOIN alkis_wertearten h
- ON cast(w.artderfestlegung AS character varying) = h.k AND h.element='ax_klassifizierungnachwasserrecht' AND h.bezeichnung='artderfestlegung'
-WHERE f.gml_id = $1 AND f.endet IS NULL AND w.endet IS NULL ORDER BY schnittflae DESC";
-
-$v = array($gmlid);
-$res = pg_prepare("", $sql);
-$res = pg_execute("", $v);
-if (!$res) {echo "\n<p class='err'>Fehler bei DB-Abfrage zur Klassifizierung Wasser</p>\n";}
-
-if(!empty($res) && pg_num_rows($res) > 0) {
-	echo "\n<table>";
-	while($row = pg_fetch_array($res)) {
-		$fsbuchflae=$row["amtlicheflaeche"];
-		$fsgeomflae=$row["fsgeomflae"];
-		$the_Xfactor=$fsbuchflae / $fsgeomflae; // ++ nicht in Loop, ist konst. je FS
-		$absflaebuch = $row['schnittflae'] * $the_Xfactor;
-		echo"\n<tr><td></td><td></td></tr>"
-		."\n<tr><td><b>FlÃ€che</b></td><td class='klassifizerung'><span class=''>".number_format(intval($absflaebuch),0,",",".")." mÂ²</span></td></tr>"	
-		."\n<tr><td><b>Bezeichnung</b></td><td class='klassifizerung'><span class=''>".$row['v']."</span></td></tr>"
-		."\n<tr><td></td><td></td></tr>";	
-	}
-	echo "</table>";
-}
-// Klassifizierung nach  S t r a Ã e n recht
-	// Tabelle immer leer?
-*/
+	."\n\t</td>" // 6
+	."\n</tr>";
 
 // B o d e n s c h Ã€ t z u n g
@@ -668,10 +461,9 @@
 
 // BodenschÃ€tzungs-Abschnitte mit FlurstÃŒcken verschneiden, Spalten entschlÃŒsseln
-$sql="SELECT 
- kulturart.k AS kulturartk, kulturart.v AS kulturartv, 
- bodenart.k  AS bodenartk,  bodenart.v  AS bodenartv, 
+$sql="SELECT kulturart.k AS kulturartk, kulturart.v AS kulturartv,
+ bodenart.k  AS bodenartk,  bodenart.v  AS bodenartv,
  zustbod.v AS zustbodv,
  b.entstehungsartoderklimastufewasserverhaeltnisse AS entsteh, b.sonstigeangaben,
- b.bodenzahlodergruenlandgrundzahl as bodenzahl, b.ackerzahlodergruenlandzahl AS ackerzahl, 
+ b.bodenzahlodergruenlandgrundzahl as bodenzahl, b.ackerzahlodergruenlandzahl AS ackerzahl,
  b.jahreszahl, st_area(st_intersection(b.wkb_geometry, f.wkb_geometry)) AS schnittflae 
 FROM ax_flurstueck f
@@ -686,12 +478,9 @@
 $res = pg_execute("", $v);
 if (!$res) {echo "\n<p class='err'>Fehler bei DB-Abfrage zur Klassifizierung Boden</p>\n";}
-
 $gesertragsmz = 0; // Gesamt-ErtragsMesszahl
 $klasflae = 0; // Summe klassifizierte FlÃ€che
 $j=0;
-
 if(!empty($res) && pg_num_rows($res) > 0) {
-
-	while ($row = pg_fetch_array($res)) {
+	while ($row = pg_fetch_assoc($res)) {
 		$kulturartk=$row['kulturartk']; // Key	-
 		$kulturartv=$row['kulturartv']; //		- Value
@@ -718,19 +507,13 @@
 		$entsteh=$row['entsteh'];
 		$sonst=$row['sonstigeangaben'];
-
-		// Sp. 1/4
-		if ($j == 0) {
+		if ($j == 0) { // 1
 			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>";
 		} else {
 			echo "\n<tr>\n\t<td>&nbsp;</td>";
 		}
-
-		// Sp. 2/4
-		echo "\n\t<td class='fla' title='Ertragsmesszahl: Produkt von ".$kbez2."/100 und Fl&auml;che.'>EMZ ".$ertragszahl."</td>";
-
-		// Sp. 3/4 - unterteilt in 3 Sp.
-		echo "\n\t<td class='re' title='Fl&auml;che des Sch&auml;tzungsabschnitts'>".$absbuchflaedis."</td>";
-		echo "\n\t<td class='lr'><span title='".$kbez1."'>".$boedenzahl."</span>/<span title='".$kbez2."'>".$ackerzahl."</span></td>";
-		echo "\n\t<td class='lr'>";
+		echo "\n\t<td class='fla' title='Ertragsmesszahl: Produkt von ".$kbez2."/100 und Fl&auml;che.'>EMZ ".$ertragszahl."</td>"; // 2
+		echo "\n\t<td class='re' title='Fl&auml;che des Sch&auml;tzungsabschnitts'>".$absbuchflaedis."</td>"; // 3
+		echo "\n\t<td class='lr'><span title='".$kbez1."'>".$boedenzahl."</span>/<span title='".$kbez2."'>".$ackerzahl."</span></td>"; // 4
+		echo "\n\t<td class='lr'>"; // 5
 
 			if ($showkey) {echo "\n\t\t<span class='key'>(".$kulturartk.")</span> ";}
@@ -761,16 +544,14 @@
 				echo "\n\t\t<span title='Jahreszahl'>".$jahr."</span>";
 			}
-		echo "\n\t</td>";
-
-		// Sp. 4/4 - leer, keine Links
-		echo "\n\t<td>&nbsp;</td>\n</tr>";
+		echo "\n\t</td>"; // 5
+		echo "\n\t<td>&nbsp;</td>\n</tr>"; // 6
 		$j++;
 	}
-
 	// Summenzeile
 	$klasflaedis = number_format($klasflae,0,",",".")." m&#178;";
-	echo "\n<tr>\n\t<td class='re'>Ertragsmesszahl:</td>"
-	."\n\t<td class='fla sum' title='Summe der Ertragsmesszahlen f&uuml;r dies Flurst&uuml;ck'>".$gesertragsmz."</td>"
-	."\n\t<td class='re'>".$klasflaedis."</td>\n\t<td colspan='3'>&nbsp;</td>\n</tr>";
+	echo "\n<tr>\n\t<td class='re'>Ertragsmesszahl:</td>" // 1
+	."\n\t<td class='fla sum' title='Summe der Ertragsmesszahlen f&uuml;r dies Flurst&uuml;ck'>".$gesertragsmz."</td>" // 2
+	."\n\t<td class='re'>".$klasflaedis."</td>" // 3
+	."\n\t<td colspan='3'>&nbsp;</td>\n</tr>"; // 4-6
 }
 
@@ -791,5 +572,4 @@
 	if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".$sql_boden."<br>$1 = gml_id = '".$gmlid."'</p>";}
 }
-
 $sql_str="SELECT gml_id FROM ax_besondereflurstuecksgrenze WHERE endet IS NULL AND 1000 = ANY(artderflurstuecksgrenze) 
 AND ST_touches((SELECT wkb_geometry FROM ax_flurstueck WHERE gml_id = $1 AND endet IS NULL),wkb_geometry);";
@@ -801,25 +581,18 @@
 	if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".$sql_str."<br>$1 = gml_id = '".$gmlid."'</p>";}
 }
-
 if (pg_num_rows($res_bodeneuordnung) > 0 OR pg_num_rows($res_strittigeGrenze) > 0) {
 	echo "\n<tr>"
-	."\n\t<td title='Hinweise zum Flurst&uuml;ck'><h6><img src='ico/Hinweis.png' width='16' height='16' alt=''> "
-	."Hinweise:</h6></td>\n\t<td colspan='5'>&nbsp;</td>"
-	."\n</tr>";
-
+	."\n\t<td title='Hinweise zum Flurst&uuml;ck'><h6><img src='ico/Hinweis.png' width='16' height='16' alt=''> " // 1
+	."Hinweise:</h6></td>\n\t<td colspan='5'>&nbsp;</td>\n</tr>";// 2-6
 	if (pg_num_rows($res_bodeneuordnung) > 0) {
-
-		while ($row = pg_fetch_array($res_bodeneuordnung)) { // 3 Zeilen je Verfahren
-
-			// Zeile 1 - kommt immer, darum hier den Link
-			echo "\n<tr title='Bau-, Raum- oder Bodenordnungsrecht'>"
-				."\n\t<td>Bodenrecht</td>"
-				."\n\t<td class='re'>Festlegung: </td>" // "Art der Festlegung" zu lang
-				."\n\t<td colspan='3'>";
+		while ($row = pg_fetch_assoc($res_bodeneuordnung)) { // 3 Zeilen je Verfahren
+			echo "\n<tr title='Bau-, Raum- oder Bodenordnungsrecht'>" // Zeile 1 - kommt immer, darum hier den Link
+				."\n\t<td>Bodenrecht</td>" // 1
+				."\n\t<td class='re'>Festlegung: </td>" // 2 "Art der Festlegung" zu lang
+				."\n\t<td colspan='3'>"; // 3-5
 					if ($showkey) {echo "<span class='key'>(".$row['wert'].")</span> ";}
 					echo $row['art_verf']
 				."</td>";
-				// LINK:
-				echo "\n\t<td>"
+				echo "\n\t<td>" // 6 LINK:
 					."\n\t\t<p class='nwlink noprint'>"
 					."\n\t\t\t<a href='alkisbaurecht.php?gkz=".$gkz."&amp;gmlid=".$row['verf_gml'];
@@ -829,21 +602,17 @@
 				."\n\t</td>"
 			."\n</tr>";
-
-			// Zeile 2
-			$dstell=$row['stelle_key'];
+			$dstell=$row['stelle_key']; // Zeile 2
 			if ($dstell != "") { // Kann auch leer sein
 				echo "\n<tr title='Flurbereinigungsbeh&ouml;rde'>"
-					."\n\t<td>&nbsp;</td>"
-					."\n\t<td class='re'>Dienststelle: </td>"
-					."\n\t<td colspan='3'>";
+					."\n\t<td>&nbsp;</td>" // 1
+					."\n\t<td class='re'>Dienststelle: </td>" // 2
+					."\n\t<td colspan='3'>"; // 3-5
 						if ($showkey) {echo "<span class='key'>(".$dstell.")</span> ";}
 						echo $row['stelle_bez']
 					."</td>"
-					."\n\t<td>&nbsp;</td>"
+					."\n\t<td>&nbsp;</td>" // 6
 				."\n</tr>";
 			}
-
-			// Zeile 3
-			$vbez=$row['verf_bez']; // ist nicht immer gefÃŒllt
+			$vbez=$row['verf_bez']; // Zeile 3, ist nicht immer gefÃŒllt
 			$vnam=$row['verf_name']; // noch seltener
 			if ($vbez != "") {
@@ -872,174 +641,60 @@
 echo "\n</table>";
 
-// G R U N D B U C H
-echo "\n\n<table class='outer'>"
-	."\n<tr>"
-		."\n\t<td>"
-			."\n\t\t<h3 id='gb'><img src='ico/Grundbuch_zu.png' width='16' height='16' alt=''> Grundb&uuml;cher</h3>"
-		."\n\t</td>"
-		."\n\t<td>"
-			."\n\t\t<p class='nwlink noprint'>"
-				."\n\t\t\t<a href='".$_SERVER['PHP_SELF']. "?gkz=".$gkz."&amp;gmlid=".$gmlid."&amp;berbu=".$berbu;
-				if ($showkey) {echo "&amp;showkey=j";}
-
-				// Umschalter: FS-Nachweis ruft sich selbst mit geaendertem Parameter auf. Positionierung auf Marke "#gb"
-				if ($eig=="j") {
-					echo "&amp;eig=n#gb' title='Umschalter: Flurst&uuml;cksnachweis'>ohne Eigent&uuml;mer</a>";
-				} else {
-					echo "&amp;eig=j#gb' title='Umschalter: Flurst&uuml;cks- und Eigent&uuml;mernachweis'>mit Eigent&uuml;mer "
-					."<img src='ico/EigentuemerGBzeile.png' width='16' height='16' alt=''></a>";
+// B U C H U N G S S T E L L E N  zum FS
+$bartgrp="";	// Buchungsart
+$barttypgrp="";	// Buchungsart Typ
+if ($gml_buchungsstelle == '') {echo "\n<p class='err'>Keine Buchungstelle zum Flurst&uuml;ck gefunden.</p>";}
+echo "\n<table class='outer'>"; // ALLE Buchungen und EigentÃŒmer in 4 Spalten EINER Tabelle ausgeben
+	$stufe=1; // SchleifenzÃ€hler Tiefe
+	$gezeigt=buchung_anzg($gml_buchungsstelle, $eig, false, $gmlid); // die ("dienende") Buchung anzeigen, wenn nicht fiktiv. Liefert true/false
+
+	$anzber=ber_bs_zaehl($gml_buchungsstelle); // Anzahl berechtigte Buchungen (nÃ€chste Stufe) zu dieser Buchung ermitteln
+	$verf_next = array($gml_buchungsstelle); // Start Recursion mit einem Element
+	//if ($debug > 2) {echo "<p class='dbg'>Nach Stufe ".$stufe.", Anzahl: ". $anzber ."</p>";}
+
+	while ($anzber > 0 ) { // Stufe - recursiv in die Tiefe, solange es was zu verfolgen gibt
+		$verf_akt=$verf_next; // die nÃ€chste Stufe als aktuell ÃŒbernehmen ..
+		$verf_next=array(); // .. und zum AuffÃŒllen leeren
+ 		$stufe++;
+		$i=0; // SchleifenzÃ€hler Elemente
+		foreach($verf_akt as $gml_ber_bs) {
+			$i++;
+			if (ber_bs_zaehl($gml_ber_bs) > 0) {
+				$verf_neu=ber_bs_anzg($gml_ber_bs, $eig, $gmlid); // Anzeige ber. Buchungst., ggf. mit EigentÃŒmer.
+				$anz_neu=count($verf_neu); // Das Ergebnis zÃ€hlen
+			//	if ($debug > 2) {echo "<p class='dbg'>Weiter zu verfolgen: Stufe ".$stufe.", Element ".$i.", Anzahl: ".$anz_neu."</p>";}
+				if ($anz_neu > 0) { // wenn neue geliefert
+					$verf_next=array_merge($verf_next, $verf_neu); // die neuen an die Sammlung heften
 				}
-			echo "\n\t\t</p>"
-		."\n\t</td>"
-	."\n</tr>"
-."\n</table>";
-
-// B U C H U N G S S T E L L E N  zum FS (istGebucht)
-$sql ="SELECT s.gml_id, s.buchungsart, s.laufendenummer as lfd, s.zaehler, s.nenner, s.nummerimaufteilungsplan as nrpl, s.beschreibungdessondereigentums as sond, b.v AS bart, b.d AS barttitle
-FROM ax_flurstueck f JOIN ax_buchungsstelle s ON s.gml_id=f.istgebucht 
-LEFT JOIN alkis_wertearten b ON cast(s.buchungsart AS character varying)=b.k AND b.element='ax_buchungsstelle' AND b.bezeichnung='buchungsart'
-WHERE f.gml_id= $1 AND f.endet IS NULL AND s.endet IS NULL ORDER BY s.laufendenummer;";
-
-$v = array($gmlid);
-$ress = pg_prepare("", $sql);
-$ress = pg_execute("", $v);
-if (!$ress) {
-	echo "\n<p class='err'>Keine Buchungsstelle.</p>";
-	if ($debug > 1) {
-		echo "<p class='dbg'>Fehler:".pg_result_error($ress)."</p>";
-		if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = gml_id = '".$gmlid."'</p>";}
-	}
-}
-$bs=0; // Z.BuchungsStelle
-while($rows = pg_fetch_array($ress)) {  // Schleife Buchungs-Stelle
-	$gmls=$rows["gml_id"]; // gml b-Stelle
-	$lfd=$rows["lfd"]; // BVNR
-	$barttitle=htmlentities($rows["barttitle"], ENT_QUOTES, "UTF-8"); // .. fÃŒr Anzeige aufbereitet
-
-	// B U C H U N G S B L A T T  zur Buchungsstelle (istBestandteilVon)
-	$sql="SELECT b.gml_id, b.bezirk, b.buchungsblattnummermitbuchstabenerweiterung as blatt, b.blattart, wb.v AS blattartv, wb.d AS blattartd, z.bezeichnung 
-	FROM ax_buchungsstelle s JOIN ax_buchungsblatt b ON b.gml_id=s.istbestandteilvon 
-	LEFT JOIN ax_buchungsblattbezirk z ON z.land=b.land AND z.bezirk=b.bezirk 
-	LEFT JOIN alkis_wertearten wb ON cast(b.blattart AS character varying)=wb.k AND wb.element='ax_buchungsblatt' AND wb.bezeichnung='blattart' 
-	WHERE s.gml_id = $1 AND s.endet IS NULL AND b.endet IS NULL AND z.endet IS NULL
-	ORDER BY b.bezirk, b.buchungsblattnummermitbuchstabenerweiterung ;";
-
-	$v=array($gmls);
-	$resg=pg_prepare("", $sql);
-	$resg=pg_execute("", $v);
-	if (!$resg) {
-		echo "\n<p class='err'>Kein Buchungsblatt.</p>";
-		if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = gml_id = '".$gmls."'</p>";}
-	}
-	$bl=0; // Z.Blatt
-	while($rowg = pg_fetch_array($resg)) {
-		$gmlg=$rowg["gml_id"];
-		$beznam=$rowg["bezeichnung"];
-		$blattkeyg=$rowg["blattart"]; // Key
-		$blattartg=$rowg["blattartv"]; // Value
-		$blatt=$rowg["blatt"];
-		echo "\n<hr>"
-		."\n<table class='outer'>"
-		."\n<tr>"; // 1 row only
-			echo "\n\t<td>"; // Outer linke Spalte:
-
-				// Rahmen mit GB-Kennz
-				if ($blattkeyg == 1000) {
-					echo "\n\t\t<table class='kennzgb' title='Bestandskennzeichen'>";
-				}else {
-					echo "\n\t\t<table class='kennzgbf' title='Bestandskennzeichen'>"; // GB fiktiv = Rahmen dotted
-				}
-					echo "\n\t\t<tr>\n\t\t\t<td class='head'>Bezirk</td>"
-						."\n\t\t\t<td class='head' title='".$rowg["blattartd"]."'>";
-						if ($showkey) {echo "<span class='key'>".$blattkeyg."</span>&nbsp;";}
-						echo $blattartg."</td>"
-						."\n\t\t\t<td class='head'>Lfd-Nr.</td>"
-						."\n\t\t\t<td class='head'>Buchungsart</td>"
-					."\n\t\t</tr>"
-					."\n\t\t<tr>"
-						."\n\t\t\t<td title='Grundbuchbezirk'>";
-						if ($showkey) {echo "<span class='key'>".$rowg["bezirk"]."</span><br>";}
-						echo $beznam."&nbsp;</td>"
-						."\n\t\t\t<td title='Grundbuch-Blatt'><span class='wichtig'>".$blatt."</span></td>"
-						."\n\t\t\t<td title='Bestandsverzeichnis-Nummer (BVNR, Grundst&uuml;ck)'>".$lfd."</td>"
-						."\n\t\t\t<td title='".$barttitle."'>";
-						if ($showkey) {echo "<span class='key'>".$rows["buchungsart"]."</span><br>";}
-						echo $rows["bart"]."</td>"
-					."\n\t\t</tr>"
-				."\n\t\t</table>";
-
-				// Miteigentumsanteil
-				if ($rows["zaehler"] <> "") {
-					echo "\n<p class='ant'>".$rows["zaehler"]."/".$rows["nenner"]."&nbsp;Anteil am Flurst&uuml;ck</p>";
-				}
-			echo "\n\t</td>\n\t<td>"; // Outer rechte Spalte: NW-Links
-
-				echo "\n\t\t<p class='nwlink noprint'>weitere Auskunft:<br>";
-					if ($showkey) {echo "<span class='key'>".$blattkeyg."</span> ";}
-					echo "\n\t\t\t<a href='alkisbestnw.php?gkz=".$gkz."&amp;gmlid=".$gmlg;
-						if ($showkey) {echo "&amp;showkey=j";}
-						echo "#bvnr".$lfd; // Die # hinter die &-Paramter
-						if ($blattkeyg == 1000) {
-							echo "' title='Grundbuchnachweis mit kompletter Eigent&uuml;merangabe'>";
-						} else {
-							echo "' title='Grundbuchnachweis'>";
-						}
-						echo $blattartg." <img src='ico/GBBlatt_link.png' width='16' height='16' alt=''>"
-					."</a>"
-				."\n\t\t</p>";
-
-				// berechtigte Buchungstellen (im rechten Teil der Ã€uÃeren Tab.
-				$cnt_ber = ber_bs_hinw($gmls, $gmlid); // Hinweis ausgeben, zÃ€hlen
-
-			echo "\n\t</td>" // ende aussen rechts
-		."\n</tr>"
-		."\n</table>";
-
-		// +++ Weitere Felder ausgeben? BeschreibungDesUmfangsDerBuchung
-		if ($rows["sond"] != "") {
-			echo "\n<p class='sond' title='Sondereigentum'>Verbunden mit dem Sondereigentum<br>".$rows["sond"]."</p>";
-		}
-		if ($rows["nrpl"] != "") {
-			echo "\n<p class='nrap' title='Nummer im Aufteilungsplan'>Nummer <span class='wichtig'>".$rows["nrpl"]."</span> im Aufteilungsplan.</p>";
-		}
-
-		// E I G E N T U E M E R, zum GB
-		// Person <-benennt< AX_Namensnummer  >istBestandteilVon-> AX_Buchungsblatt
-		if ($eig=="j") { // Wahlweise mit/ohne EigentÃŒmer
-			$n = eigentuemer($gmlg, false, ""); // hier ohne Adresse
- 			if ($n == 0) {
-				if ($blattkeyg == 1000) {
-					echo "\n<p class='err'>Keine Namensnummer gefunden.</p>";
-				} else {
-					echo "\n<p>ohne Eigent&uuml;mer.</p>";
-				}
-			}
-		}
-
-		// B e r e c h t i g t e   B u c h u n g e n  ... zu dieser Buchungs-Stelle. Optional.
-		if ($berbu=="j") { // Wahlweise anzeigen
-			echo "\n<hr>\n<h3 id='berbu'><img src='ico/Grundbuch.png' width='16' height='16' alt=''> Berechtigte Buchungen</h3>"
-			."\n<p>".$cnt_ber." Buchungen mit Rechten an der Buchung ".$lfd." auf ".$blattartg." ".$blatt." von ".$beznam.":</p>";
-			ber_bs_anz($gmls, $eig); // berechtigte Buchungstellen und GB-BlÃ€tter Anzeigen, und ggf. auch mit EigentÃŒmer
-		}
-		$bl++; // ZÃ€hl Blatt
-	}
-	if ($bl == 0) {echo "\n<p class='err'>Kein Buchungsblatt zur Buchungstelle gefunden.</p>";}
-	$bs++; // ZÃ€hl Buchungs-Stelle
-}
-
-pg_free_result($resg);
-if ($bs == 0) {echo "\n<p class='err'>Keine Buchungstelle zum Flurst&uuml;ck gefunden.</p>";}
+			}
+		} // Ende Buchungs-Array in der Stufe
+		$anzber=count($verf_next); // Sammlung auf Stufe zÃ€hlen, Steuert die Schleife.
+		//if ($debug > 2) {echo "<p class='dbg'>Nach Stufe ".$stufe.", Anzahl: ". $anzber ."</p>";}
+	} // Ende Stufe
+// Diese aufwÃ€ndige Analyse mit Arrays geht davon aus, dass es Verzweigungen auf oberen Stufen geben kÃ¶nnte,
+// so dass mehrere Zweige parallel weiter zu verfolgen sind. In der Praxis ist eine Verzweigung bisher nur in der letzten Stufe vorgekommen.
+// Eine weniger aufwÃ€ndige LÃ¶sung (ohne Arrays) wÃŒrde reichen, wenn das immer so wÃ€re:
+/*  Alte Version (einfacher):
+	$gezeigt = buchung_anzg($gml_buchungsstelle, $eig, false, $gmlid);
+	$anzber = ber_bs_zaehl($gml_buchungsstelle);
+	if ($anzber > 0 ) {
+		$verfolg = ber_bs_anzg($gml_buchungsstelle, $eig, $gmlid);
+		while ($verfolg != "") {
+			$valt=$verfolg;
+			$verfolg = ber_bs_anzg($valt, $eig, $gmlid);
+		}
+	} */
+echo "\n</table>\n\n";
+
 pg_close($con);
 echo <<<END
-
 <div class='buttonbereich noprint'>
 <hr>
 	<a title="zur&uuml;ck" href='javascript:history.back()'><img src="ico/zurueck.png" width="16" height="16" alt="zur&uuml;ck"></a>&nbsp;
 	<a title="Drucken" href='javascript:window.print()'><img src="ico/print.png" width="16" height="16" alt="Drucken"></a>&nbsp;
-	<a title="Export als CSV" href='javascript:ALKISexport()'><img src="ico/download_fs.png" width="32" height="16" alt="Export"></a>&nbsp;
-</div>
 END;
-footer($gmlid, $_SERVER['PHP_SELF']."?", "&amp;eig=".$eig."&amp;berbu=".$berbu);
+echo "\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>";
+
+footer($gmlid, $_SERVER['PHP_SELF']."?", "&amp;eig=".$eig);
 ?>
 </body>
