Index: trunk/info/info/alkisn/alkisfshist.php
===================================================================
--- trunk/info/info/alkisn/alkisfshist.php	(revision 400)
+++ trunk/info/info/alkisn/alkisfshist.php	(revision 402)
@@ -11,4 +11,5 @@
 	2017-10-17 Deutsches Datumsformat fÃŒr Zeitpunkt der Entstehung
 	2018-03-16 NULL-Werte in gemeinde und kreis in ax_historischesflurstueck berÃŒcksichtigen
+	2018-04-23 &nodebug
 */
 
@@ -54,5 +55,5 @@
 	if (!$res) {echo "\n<p class='err'>Fehler bei Gemarkung.</p>";}
 	$zgmk=0;
-	while($row = pg_fetch_array($res)) { // eigentlich nur EINE
+	while($row = pg_fetch_assoc($res)) { // eigentlich nur EINE
 		$gmkg=$row["bezeichnung"];
 		$zgmk++;
@@ -84,5 +85,5 @@
 	}
 	$zv=0;
-	while($rowv = pg_fetch_array($resv)) {
+	while($rowv = pg_fetch_assoc($resv)) {
 		$ftyp=$rowv["ftyp"];
 		$gmlv=$rowv["gml_id"];
@@ -102,10 +103,6 @@
 }
 
-// START //
-
 session_start();
-
-$showkey="n"; // Var. aus Parameter initalisieren
-
+$showkey="n"; $nodebug=""; // Var. aus Parameter initalisieren
 $cntget = extract($_GET); // alle Parameter in Variable umwandeln
 
@@ -125,10 +122,10 @@
 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");
 if ($auth == "mapbender") {require_once($mapbender);}
 include("alkisfkt.php");
-
-?>
+echo <<<END
 <!doctype html>
 <html lang="de">
@@ -141,5 +138,9 @@
 </head>
 <body>
-<?php
+END;
+// Mit URL-Parameter "&nodebug=j" kann man die Entwicklungsumgebung (in Conf definiert) ausschalten.
+// 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_alkisfshist.php'");
 if (!$con) echo "\n<p class='err'>Fehler beim Verbinden der DB</p>";
@@ -182,5 +183,5 @@
 	$resu = pg_prepare("", $sqlu);
 	$resu = pg_execute("", $v);
-	if ($rowu = pg_fetch_array($resu)) {
+	if ($rowu = pg_fetch_assoc($resu)) {
 		$ftyp=$rowu["ftyp"];
 		$gmkgnr=$rowu["gemarkungsnummer"];
@@ -236,8 +237,8 @@
 echo "\n<h2><img src='ico/".$ico."' width='16' height='16' alt=''> Flurst&uuml;ck Historie</h2>";
 
-echo "\n<table class='outer'>\n<tr>\n\t<td>"; // linke Seite
+echo "\n<table class='outer'>\n<tr>\n\t<td>";
 	// darin Tabelle Kennzeichen
 	echo "\n\t<table class='".$cls."' title='Flurst&uuml;ckskennzeichen'>\n\t<tr>"
-		."\n\t\t<td class='head'>Gmkg</td>\n\t\t<td class='head'>Flur</td>\n\t\t<td class='head'>Flurst-Nr.</td>\n\t</tr>"
+		."\n\t\t<td class='head'>Gemarkung</td>\n\t\t<td class='head'>Flur</td>\n\t\t<td class='head'>Flurst-Nr.</td>\n\t</tr>"
 		."\n\t<tr>\n\t\t<td title='Gemarkung'>";
 		if ($showkey) {echo "<span class='key'>".$gmkgnr."</span><br>";}
@@ -246,5 +247,5 @@
 		."\n\t\t<td title='Flurst&uuml;cksnummer (Z&auml;hler / Nenner)'><span class='wichtig'>".$flstnummer."</span></td>\n\t</tr>"
 	."\n\t</table>"
-."\n\t</td>\n\t<td>"; // rechte Seite
+."\n\t</td>\n\t<td>";
 	// FS-Daten 2 Spalten
 	echo "\n\t<table class='fsd'>"
@@ -311,5 +312,5 @@
 if ($debug > 1) {
 	$z=1;
-	while($rowu = pg_fetch_array($resu)) {
+	while($rowu = pg_fetch_assoc($resu)) {
 		$ftyp=$rowu["ftyp"];
 		echo "<p class='dbg'>Mehr als EIN Eintrag gefunden: '".$ftyp."' (".$z.")</p>";
Index: trunk/info/info/alkisn/alkishaus.php
===================================================================
--- trunk/info/info/alkisn/alkishaus.php	(revision 400)
+++ trunk/info/info/alkisn/alkishaus.php	(revision 402)
@@ -10,4 +10,5 @@
 	2017-06-09 Tool-Tip GebÃ€udefunktion, ErklÃ€rung 2 getrennte p.Styles
 	2017-10-09 Sauber filtern auf endet IS NULL
+	2018-04-23 &nodebug
 
 	ToDo:
@@ -22,6 +23,5 @@
 */
 session_start();
-
-$allfld = "n"; $showkey="n"; // Var. aus Parameter initalisieren
+$allfld = "n"; $showkey="n"; $nodebug=""; // Var. aus Parameter initalisieren
 $cntget = extract($_GET); // Parameter in Variable umwandeln
 
@@ -31,12 +31,12 @@
 if (!preg_match('#^[j|n]{0,1}$#', $showkey)) {die ("Eingabefehler showkey");}
 if ($showkey == "j") {$showkey=true;} else {$showkey=false;}
-
 if (!preg_match('#^[j|n]{0,1}$#', $allfld)) {die ("Eingabefehler allfld");}
 if ($allfld == "j") {$allefelder=true;} else {$allefelder=false;}
+if (!preg_match('#^j{0,1}$#', $nodebug)) {die("Eingabefehler nodebug");}
 
 require_once("alkis_conf_location.php");
 if ($auth == "mapbender") {require_once($mapbender);}
 include("alkisfkt.php");
-?>
+echo <<<END
 <!doctype html>
 <html lang="de">
@@ -50,5 +50,8 @@
 </head>
 <body>
-<?php
+END;
+// Mit URL-Parameter "&nodebug=j" kann man die Entwicklungsumgebung (in Conf definiert) ausschalten.
+// 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_alkishaus.php'");
@@ -98,5 +101,5 @@
 $gebnr = 0;
 
-while($rowg = pg_fetch_array($resg)) { // Schleife, kann aber nur EIN Haus sein.
+while($rowg = pg_fetch_assoc($resg)) { // Schleife, kann aber nur EIN Haus sein.
 	$gebnr++;
 	echo "\n<table class='geb'>"
@@ -183,5 +186,5 @@
 	}
 	$zhsnr=0;
-	while($rowl = pg_fetch_array($resl)) { // LOOP: Lagezeilen
+	while($rowl = pg_fetch_assoc($resl)) { // LOOP: Lagezeilen
 		$zhsnr++;
 		$ltyp=$rowl["ltyp"]; // Lagezeilen-Typ
@@ -329,5 +332,5 @@
 				}
 				$zw=0;
-				while($roww = pg_fetch_array($resw)) { // LOOP: w.Funktion
+				while($roww = pg_fetch_assoc($resw)) { // LOOP: w.Funktion
 					if ($zw > 0) {echo "<br>";}
 					if ($showkey) {echo "<span class='key'>".$roww["k"]."</span>&nbsp;";}
Index: trunk/info/info/alkisn/alkisinlayausk.php
===================================================================
--- trunk/info/info/alkisn/alkisinlayausk.php	(revision 400)
+++ trunk/info/info/alkisn/alkisinlayausk.php	(revision 402)
@@ -16,7 +16,7 @@
 	2017-10-09 Sauber filtern auf endet IS NULL
 	2017-12-20 Fehlerkorrektur: Link StraÃe ohne gml_id, Bessere Title fÃŒr Links, Icon an Lage.
+	2018-04-23 FÃŒr GB-Teil Function benutzen.
 */
 session_start();
-
 $cntget = extract($_GET); // Parameter in Variable umwandeln
 
@@ -38,9 +38,9 @@
 	<link rel="shortcut icon" type="image/x-icon" href="ico/Flurstueck.ico">
 	<title>ALKIS-Auskunft</title>
-	<script type="text/javascript">
-	function imFenster(dieURL) {
-		var link = encodeURI(dieURL);
-		window.open(link,'','left=10,top=10,width=680,height=800,resizable=yes,menubar=no,toolbar=no,location=no,status=no,scrollbars=yes');
-	}
+	<script>
+		function imFenster(dieURL) {
+			var link = encodeURI(dieURL);
+			window.open(link,'','left=10,top=10,width=750,height=840,resizable=yes,menubar=no,toolbar=no,location=no,status=no,scrollbars=yes');
+		}
 	</script>
 </head>
@@ -51,8 +51,7 @@
 
 // *** F L U R S T U E C K ***
-$sql ="SELECT f.flurnummer, f.zaehler, f.nenner, f.amtlicheflaeche, g.gemarkungsnummer, g.bezeichnung, f.regierungsbezirk, f.kreis, f.gemeinde
+$sql ="SELECT f.flurnummer, f.zaehler, f.nenner, f.amtlicheflaeche, g.gemarkungsnummer, g.bezeichnung, f.regierungsbezirk, f.kreis, f.gemeinde, f.istgebucht
 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 ;";
-// Weiter joinen: g.stelle -> ax_dienststelle "Katasteramt"
+WHERE f.gml_id= $1 AND f.endet IS NULL AND g.endet IS NULL;";
 $v = array($gmlid);
 $res = pg_prepare("", $sql);
@@ -63,5 +62,5 @@
 }
 
-if ($row = pg_fetch_array($res)) {
+if ($row = pg_fetch_assoc($res)) {
 	$gemkname=htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8");
 	$gmkgnr=$row["gemarkungsnummer"];
@@ -75,4 +74,5 @@
 	$fskrs=$row["kreis"];
 	$fsgem=$row["gemeinde"];
+	$gml_buchungsstelle=$row["istgebucht"];
 } else {
 	echo "\n<p class='err'>Kein Treffer fuer gml_id=".$gmlid."</p>";
@@ -93,35 +93,33 @@
 }
 
-echo "\n<h2><img src='ico/Flurstueck.png' width='16' height='16' alt=''> Flurst&uuml;ck - &Uuml;bersicht</h2>";
-
-echo "\n<table class='outer'>\n<tr>\n<td>"
-	."\n\t<table class='kennzfs' title='Flurst&uuml;ckskennzeichen'>\n\t<tr>"
-	."\n\t\t<td class='head'>Gmkg</td>\n\t\t<td class='head'>Flur</td>\n\t\t<td class='head'>Flurst-Nr.</td>\n\t</tr>"
-	."\n\t<tr>\n\t\t<td title='Gemarkung'>".$gemkname."</td>"
-	."\n\t\t<td title='Flurnummer'>".$flurnummer."</td>"
-	."\n\t\t<td title='Flurst&uuml;cksnummer (Z&auml;hler / Nenner)'><span class='wichtig'>".$flstnummer."</span></td>\n\t</tr>"
-	."\n\t</table>"
-."\n</td>\n<td>"
-."\n\t<p class='nwlink'>weitere Auskunft:<br>";
-
+//echo "\n<h2><img src='ico/Flurstueck.png' width='16' height='16' alt=''> Flurst&uuml;ck - &Uuml;bersicht</h2>";
+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>"
+		."\n\t\t<td>"
+		."\n\t\t\t<table class='kennzfs' title='Flurst&uuml;ckskennzeichen'>\n\t\t\t\t<tr>"
+			."\n\t\t\t\t\t<td class='head'>Gmkg</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'>".$gemkname."</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>"
+	."\n\t\t\t<p class='nwlink'>weitere Auskunft:<br>";
 // FlurstÃŒcksnachweis (mit EigentÃŒmer)
-echo "\n\t\t<a href='javascript:imFenster(\"alkisfsnw.php?gkz=".$gkz."&amp;gmlid=".$gmlid."&amp;eig=j\")' "
+echo "\n\t\t\t\t<a href='javascript:imFenster(\"alkisfsnw.php?gkz=".$gkz."&amp;gmlid=".$gmlid."&amp;eig=j\")' "
 	."title='Flurst&uuml;cksnachweis'>Flurst&uuml;ck&nbsp;"
 	."<img src='ico/Flurstueck_Link.png' width='16' height='16' alt=''>"
 ."</a><br>";
-
 // FS-Historie
-echo "\n\t\t<a href='javascript:imFenster(\"alkisfshist.php?gkz=".$gkz."&amp;gmlid=".$gmlid."\")' "
+echo "\n\t\t\t\t<a href='javascript:imFenster(\"alkisfshist.php?gkz=".$gkz."&amp;gmlid=".$gmlid."\")' "
 	."title='Vorg&auml;nger des Flurst&uuml;cks'>Historie&nbsp;"
 	."<img src='ico/Flurstueck_Historisch.png' width='16' height='16' alt=''>"
 ."</a><br>";
-
 // Gebaeude-NW zum FS
-echo "\n\t\t<a href='javascript:imFenster(\"alkisgebaeudenw.php?gkz=".$gkz."&amp;gmlid=".$gmlid."\")' "
+echo "\n\t\t\t\t<a href='javascript:imFenster(\"alkisgebaeudenw.php?gkz=".$gkz."&amp;gmlid=".$gmlid."\")' "
 	."title='Geb&auml;udenachweis'>Geb&auml;ude&nbsp;"
 	."<img src='ico/Haus.png' width='16' height='16' alt=''>"
 ."</a>";
-
-echo "\n\t</p>\n</td>";
+echo "\n\t\t\t</p>\n\t\t</td>\n\t</tr>";
 pg_free_result($res);
 
@@ -132,5 +130,4 @@
 WHERE f.gml_id= $1 AND f.endet IS NULL AND l.endet IS NULL AND s.endet IS NULL 
 ORDER BY s.bezeichnung, l.hausnummer;";
-
 $v=array($gmlid); // id FS
 $res=pg_prepare("", $sql);
@@ -142,5 +139,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
@@ -150,22 +147,19 @@
 	}
 	$hsnr=$row["hausnummer"];
-
-	// linke Spalte
-	echo "\n<tr>\n\t\n\t<td class='lr'><img src='ico/Lage_mit_Haus.png' width='16' height='16' alt='MIT'>&nbsp;".$sname."&nbsp;".$hsnr."</td>";
-
-	// rechte Spalte
-	echo "\n\t<td>\n\t\t<p class='nwlink noprint'>";
+	echo "\n\t<tr>"
+		."\n\t\t<td class='ll'><img src='ico/Lage_mit_Haus.png' width='16' height='16' alt='MIT'> Lage:</td>"
+		."\n\t\t<td class='lr'>".$sname."&nbsp;".$hsnr."</td>"
+		."\n\t\t<td>\n\t\t\t<p class='nwlink noprint'>";
 	$kgml=$row["kgml"]; // Wiederholung vermeiden
-
 	if ($kgml != $kgmlalt) { // NEUE Strasse vor Lage
 		$kgmlalt=$kgml; // Katalog GML-ID
-		echo "\n\t\t\t<a title='Flurst&uuml;cke mit oder ohne Hausnummer".$slink."' "
+		echo "\n\t\t\t\t<a title='Flurst&uuml;cke mit oder ohne Hausnummer".$slink."' "
 		."href='javascript:imFenster(\"alkisstrasse.php?gkz=".$gkz."&amp;gmlid=".$kgml."\")'>Stra&szlig;e "
 		."<img src='ico/Strassen.png' width='16' height='16' alt='STRA'></a>";
 	}
-	echo "\n\t\t\t<a title='Flurst&uuml;cke und Geb&auml;ude mit Hausnummer ".$hsnr."' "
+	echo "\n\t\t\t\t<a title='Flurst&uuml;cke und Geb&auml;ude mit Hausnummer ".$hsnr."' "
 		."href='javascript:imFenster(\"alkislage.php?gkz=".$gkz."&amp;ltyp=m&amp;gmlid=".$row["gml_id"]."\")'>Lage "
 		."<img src='ico/Lage_mit_Haus.png' width='16' height='16' alt='HAUS'></a>&nbsp;"
-	."\n\t\t</p>\n\t</td>\n</tr>";
+	."\n\t\t\t</p>\n\t\t</td>\n\t</tr>";
 	$j++;
 }
@@ -177,5 +171,4 @@
 	."LEFT JOIN ax_lagebezeichnungkatalogeintrag s ON l.kreis=s.kreis AND l.gemeinde=s.gemeinde AND l.lage=s.lage "
 	."WHERE f.gml_id= $1 AND f.endet IS NULL AND l.endet IS NULL AND s.endet IS NULL ORDER BY s.bezeichnung;";
-
 $v=array($gmlid);
 $res=pg_prepare("", $sql);
@@ -186,5 +179,5 @@
 }
 $kgmlalt='';
-while($row = pg_fetch_array($res)) {
+while($row = pg_fetch_assoc($res)) {
 	$sname=htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8"); // Str.-Name
 
@@ -195,19 +188,16 @@
 	}
 
-
 	$gewann=htmlentities($row["unverschluesselt"], ENT_QUOTES, "UTF-8");
-	echo "\n<tr>";
-
-	// linke Spalte
+	echo "\n\t<tr>";
 	if ($sname != "") { // Typ=Strasse
 		$ico="Lage_an_Strasse.png";
-		echo "\n\t<td class='lr' title='An Stra&szlig;e aber ohne Hausnummer'><img src='ico/".$ico."' width='16' height='16' alt='OHNE'> ".$sname."&nbsp;</td>";
+		echo "\n\t\t<td class='ll'><img src='ico/".$ico."' width='16' height='16' alt='OHNE'> Stra&szlig;e:</td>";
+		echo "\n\t\t<td class='lr' title='An Stra&szlig;e aber ohne Hausnummer'>".$sname."&nbsp;</td>";
 	} else {
 		$ico="Lage_Gewanne.png";
-		echo "\n\t<td class='lr' title='Gewanne'><img src='ico/".$ico."' width='16' height='16' alt='Gewanne'> ".$gewann."&nbsp;</td>";
-	}
-
-	// rechte Spalte
-	echo "\n\t<td>\n\t\t<p class='nwlink noprint'>";
+		echo "\n\t\t<td class='ll'><img src='ico/".$ico."' width='16' height='16' alt='Gewanne'> Gewanne:</td>";
+		echo "\n\t\t<td class='lr' title='Gewanne'>".$gewann."&nbsp;</td>";
+	}
+	echo "\n\t\t<td>\n\t\t\t<p class='nwlink noprint'>";
 	if ($sname != "") { // Typ=Strasse
 		$kgml=$row["kgml"]; // Wiederholung vermeiden
@@ -226,84 +216,29 @@
 		."href='javascript:imFenster(\"alkislage.php?gkz=".$gkz."&amp;ltyp=o&amp;gmlid=".$row["gml_id"]."\")'>Gewanne "
 		."<img src='ico/".$ico."' width='16' height='16' alt='Gewanne'></a>&nbsp;"
-		."\n\t\t</p>\n\t</td>\n</tr>";
+		."\n\t\t</p>\n\t\t</td>\n\t</tr>";
 	}
 }
 pg_free_result($res);
-
-echo "\n</table>";
-
-// Flurstuecksflaeche
+echo "\n</table>\n";
 echo "\n<p class='fsd'>Flurst&uuml;cksfl&auml;che: <b>".$flae."</b></p>";
 
-// *** G R U N D B U C H ***
-echo "\n<h2><img src='ico/Grundbuch_zu.png' width='16' height='16' alt='GB'> Grundbuch</h2>";
-
-// FS >istgebucht> GS >istbestandteilvon> GB.
-$sql ="SELECT b.gml_id, b.bezirk, b.buchungsblattnummermitbuchstabenerweiterung as blatt, b.blattart, 
-s.gml_id AS s_gml, s.buchungsart, s.laufendenummer, s.zaehler, s.nenner, z.bezeichnung, wa.v AS blattartv, wb.v AS bart 
-FROM ax_flurstueck f 
-JOIN ax_buchungsstelle s ON f.istgebucht=s.gml_id 
-JOIN ax_buchungsblatt b ON s.istbestandteilvon=b.gml_id
-LEFT JOIN ax_buchungsblattbezirk z ON z.land=b.land AND z.bezirk=b.bezirk 
-LEFT JOIN alkis_wertearten wa ON cast(b.blattart AS character varying)=wa.k AND wa.element='ax_buchungsblatt' AND wa.bezeichnung='blattart'
-LEFT JOIN alkis_wertearten wb ON cast(s.buchungsart AS character varying)=wb.k AND wb.element='ax_buchungsstelle' AND wb.bezeichnung='buchungsart'
-WHERE f.gml_id= $1 AND f.endet IS NULL AND s.endet IS NULL AND b.endet IS NULL AND z.endet IS NULL 
-ORDER BY b.bezirk, b.buchungsblattnummermitbuchstabenerweiterung, s.laufendenummer;";
-
-$v=array($gmlid);
-$resg=pg_prepare("", $sql);
-$resg=pg_execute("", $v);
-if (!$resg) {
-	echo "\n<p class='err'>Keine Buchungen.</p>";
-	if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = gml_id = '".$gmlid."'</p>";}
-}
-while($rowg = pg_fetch_array($resg)) {
-	$beznam=$rowg["bezeichnung"];
-	echo "\n<table class='outer'>\n<tr>\n<td>";
-		$blattkey=$rowg["blattart"]; // Key
-		$blattart=$rowg["blattartv"]; // Value
-
-		if ($blattkey == 1000) {
-			echo "\n\t<table class='kennzgb' title='Bestandskennzeichen'>";
+// 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\n<table class='outer'>";
+	$gezeigt = buchung_anzg($gml_buchungsstelle, 'j', true, ""); // direkte Buchung anzeigen wenn nicht fiktiv, Eigent. ja, mit JS "imFenster"
+	$anzber = ber_bs_zaehl($gml_buchungsstelle); // Berechtigte Buchungen, nur Anzahl
+	if ($anzber > 0 ) {
+		if ($gezeigt) {
+			echo "\n\t<tr>\n\t\t<td colspan='4'><span class='wichtig'>Berechtigte Buchungen siehe Flurst&uuml;cksnachweis.</span></td>\n\t</tr>";
 		} else {
-			echo "\n\t<table class='kennzgbf' title='Bestandskennzeichen'>"; // dotted
-		}
-			echo "\n\t<tr>"
-				."\n\t\t<td class='head'>Bezirk</td>"
-				."\n\t\t<td class='head'>".$blattart."</td>"
-				."\n\t\t<td class='head'>Lfd-Nr,</td>"
-				."\n\t\t<td class='head'>Buchungsart</td>"
-			."\n\t</tr>\n\t<tr>"
-				."\n\t\t<td title='Grundbuchbezirk'>".$beznam."</td>"
-				."\n\t\t<td title='Grundbuch-Blatt'><span class='wichtig'>".$rowg["blatt"]."</span></td>"
-				."\n\t\t<td title='Bestandsverzeichnis-Nummer (BVNR, Grundst&uuml;ck)'>".$rowg["laufendenummer"]."</td>"
-				."\n\t\t<td title='Buchungsart'>".$rowg["bart"]."</td>"
-			."\n\t</tr>"
-		."\n\t</table>";
-
-		if ($rowg["zaehler"] <> "") {
-			echo "\n<p class='ant'>".$rowg["zaehler"]."/".$rowg["nenner"]."&nbsp;Anteil am Flurst&uuml;ck</p>";
-		}
-		echo "\n</td>\n<td>"
-		."\n\t<p class='nwlink'>weitere Auskunft:<br>"
-			."\n\t\t<a href='javascript:imFenster(\"alkisbestnw.php?gkz=".$gkz."&amp;gmlid=".$rowg[0]."\")' "
-				."title='Grundbuchnachweis'>".$blattart." <img src='ico/GBBlatt_link.png' width='16' height='16' alt=''>"
-			."</a>"
-		."\n\t</p>"
-	."\n</td>\n</tr>\n</table>";
-
-	// E I G E N T U E M E R
-	if ($blattkey == 5000) { // kein Eigent. bei fiktiv. Blatt
-		echo "\n<p>Keine Angaben zum Eigentum bei fiktivem Blatt</p>\n"
-		."\n<p>Siehe weitere Grundbuchbl&auml;tter mit Rechten an dem fiktiven Blatt.</p>";
-	} else { // Ausgabe Name in Function
-		$n = eigentuemer($rowg["gml_id"], false, "imFenster"); // ohne Adressen
-		if ($n == 0) { // keine NamensNr, kein Eigentuemer
-			echo "\n<p class='err'>Keine Eigent&uuml;mer gefunden.</p>"
-			."\n<p class='err'>Bezirk ".$rowg["bezirk"]." Blatt ".$rowg["blatt"]." Blattart ".$blattkey." (".$blattart.")</p>";
-		}
-	}
-}
-pg_free_result($resg);
+			$nochmehr = ber_bs_anzg($gml_buchungsstelle, "j", ""); // wenigstens eine Buchg. zeigen
+			if ($nochmehr != "") { // keine Verfolgung
+				echo "\n\t<tr>\n\t\t<td colspan='4'><span class='wichtig'>Weitere berechtigte Buchungen siehe Flurst&uuml;cksnachweis.</span></td>\n\t</tr>";
+			}
+		} 
+	}
+echo "\n</table>\n";
 
 ?>
Index: trunk/info/info/alkisn/alkisbestnw.php
===================================================================
--- trunk/info/info/alkisn/alkisbestnw.php	(revision 400)
+++ trunk/info/info/alkisn/alkisbestnw.php	(revision 402)
@@ -11,8 +11,8 @@
 	2017-06-08 Validierung Eingabeparameter, Farbwechsel der Tabelle je GrundstÃŒck, Feinschliff und HTML-Profilierung
 	2017-10-09 SchlÃŒssel der Blattart bei berechtigten BlÃ€ttern, sauber filtern auf endet IS NULL
+	2018-04-23 Blatt und EigentÃŒmer in eine Tabelle.
 */
 session_start();
-
-$showkey="n"; // Var. initalisieren
+$showkey="n"; $nodebug=""; // Var. initalisieren
 $cntget = extract($_GET); // Parameter in Variable umwandeln
 
@@ -22,4 +22,5 @@
 if (!preg_match('#^[j|n]{0,1}$#', $showkey)) {die ("Eingabefehler showkey");}
 if ($showkey == "j") {$showkey=true;} else {$showkey=false;}
+if (!preg_match('#^j{0,1}$#', $nodebug)) {die("Eingabefehler nodebug");}
 
 require_once("alkis_conf_location.php");
@@ -43,11 +44,14 @@
 <body>
 <?php
+// Mit URL-Parameter "&nodebug=j" kann man die Entwicklungsumgebung (in Conf definiert) ausschalten.
+// 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_alkisbestnw.php'");
 if (!$con) echo "\n<p class='err'>Fehler beim Verbinden der DB</p>";
 
 // G R U N D B U C H
-$sql="SELECT g.gml_id, g.bezirk, g.buchungsblattnummermitbuchstabenerweiterung AS nr, g.blattart, wb.v AS blattartv, wb.d AS blattartd, 
-b.gml_id, b.bezirk, b.bezeichnung AS beznam, d.gml_id, d.land, d.bezeichnung, d.stelle, d.stellenart, wd.v AS stellev 
-FROM ax_buchungsblatt g 
+$sql="SELECT g.gml_id, g.bezirk, g.buchungsblattnummermitbuchstabenerweiterung AS blatt, g.blattart, wb.v AS blattartv, wb.d AS blattartd, 
+b.gml_id, b.bezirk, b.bezeichnung AS beznam, d.gml_id, d.land, d.bezeichnung, d.stelle, d.stellenart, wd.v AS stellev FROM ax_buchungsblatt g 
 LEFT JOIN ax_buchungsblattbezirk b ON g.land=b.land AND g.bezirk=b.bezirk 
 LEFT JOIN ax_dienststelle d ON b.land=d.land AND b.stelle=d.stelle 
@@ -64,11 +68,14 @@
 	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)) {
 	$blattkey=$row["blattart"];
 	$blattart=$row["blattartv"];
-
-	echo "<p class='gbkennz'>ALKIS Bestand ".$row["bezirk"]." - ".$row["nr"]."&nbsp;</p>"; // Balken
-	echo "\n<h2><img src='ico/Grundbuch.png' width='16' height='16' alt=''> Grundbuch</h2>"
-	."\n<table class='outer'>\n<tr>\n\t<td>"; // Kennz. im Rahmen
+	$blatt=ltrim($row["blatt"], "0");
+
+	echo "<p class='gbkennz'>ALKIS Bestand ".$row["bezirk"]." - ".$blatt."&nbsp;</p>"; // Balken
+	echo "\n<h2>Grundbuch</h2>";
+	echo "\n<table class='outer'>" // Blatt UND Eigent.
+		."\n<tr>\n\t<td class='ll'><img src='ico/Grundbuch.png' width='16' height='16' alt=''> Blatt:</td>"  // outer Links
+		."\n\t<td colspan='2'>"; // Outer Mitte, Kennz. im Rahmen
 		if ($blattkey == 1000) {
 			echo "\n\t\t<table class='kennzgb' title='Bestandskennzeichen'>";
@@ -91,9 +98,9 @@
 				if ($showkey) {echo "<span class='key'>".$row["bezirk"]."</span><br>";}
 				echo htmlentities($row["beznam"], ENT_QUOTES, "UTF-8")."</td>"
-				."\n\t\t\t<td title='Grundbuch-Blatt'><span class='wichtig'>".$row["nr"]."</span></td>"
+				."\n\t\t\t<td title='Grundbuch-Blatt'><span class='wichtig'>".$blatt."</span></td>"
 			."\n\t\t</tr>"
 		."\n\t\t</table>"
 		."\n\t</td>\n\t<td>&nbsp;"
-	."\n\t</td>\n</tr>\n</table>";
+	."\n\t</td>\n</tr>";
 }
 
@@ -105,7 +112,8 @@
 	if ($n == 0) { // keine NamensNr, kein Eigentuemer
 		echo "\n<p class='err'>Keine Namensnummer gefunden.</p>"
-		."\n<p>Bezirk: ".$row["bezirk"].", Blatt: ".$row["nr"].", Blattart ".$blattkey." (".$blattart.")</p>";
-	}
-}
+		."\n<p>Bezirk: ".$row["bezirk"].", Blatt: ".$blatt.", Blattart ".$blattkey." (".$blattart.")</p>";
+	}
+}
+echo "\n</table>";
 
 // Vorab pruefen, ob der Fall "Rechte an .." vorliegt.
@@ -115,5 +123,4 @@
 // - Rechte und FlurstÃŒcke
 // - FlurstÃŒcke
-// +++ Herrschend/Dienend per "title" auf den Ãberschriften ("Rechte" / "Berechtigte GrundbÃŒcher") erlÃ€utern
 
 // GB-Blatt  <istBestandteilVon<  sh=herrschend  >an/zu>  sd=dienend
@@ -126,5 +133,5 @@
 $res=pg_execute("", $v);
 if (!$res) echo "\n<p class='err'>Fehler bei Suche nach Buchungen.</p>";
-$row=pg_fetch_array($res);
+$row=pg_fetch_assoc($res);
 $anz=$row["anzahl"];
 
@@ -132,5 +139,4 @@
 if ($anz > 0) { // auch "Rechte an"
 	echo " Rechte und Flurst&uuml;cke</h3>\n<table class='fs'>";
-
 	// zusaetzliche Kopfzeile "Rechte"
 	echo "\n<tr>" 
@@ -144,5 +150,5 @@
 		."\n\t<td>&nbsp;</td>"
 	."\n</tr>";
-} else { // keine Rechte an .., nur FlurstÃŒcke gebucht
+} else { // keine Rechte an, nur FlurstÃŒcke gebucht
 	echo " Flurst&uuml;cke</h3>\n<table class='fs'>";
 }
@@ -177,5 +183,5 @@
 $fscnt=0;
 $zpaar=false;
-while($row = pg_fetch_array($res)) { // Loop Buchungsstelle (GrundstÃŒck)
+while($row = pg_fetch_assoc($res)) { // Loop Buchungsstelle (GrundstÃŒck)
 	$lfdnr=$row["lfd"];
 	$bvnr=str_pad($lfdnr, 4, "0", STR_PAD_LEFT);
@@ -230,8 +236,8 @@
 		$a=0; // count
 		$altbvnr=""; // Gruppenwechsel
-		while($rowan= pg_fetch_array($resan)) {
+		while($rowan= pg_fetch_assoc($resan)) {
 			$lfdnran=$rowan["lfd"];	// BVNR an
 			$gml_bsan=$rowan["gml_id"];	// id der buchungsstelle an
-			$baan=$rowan["bart"];  	// Buchungsart an, entschluesselt
+			$baan=$rowan["bart"];	// Buchungsart an, entschluesselt
 			$anzu=$rowan["anzu"];	// Welche Relation? Recht an oder Recht zu ?
 
@@ -251,10 +257,10 @@
 			}
 			$b=0;
-			while($fbrow = pg_fetch_array($fbres)) { // genau 1
+			while($fbrow = pg_fetch_assoc($fbres)) { // genau 1
 				$fbgml=$fbrow["gml_id"];
 				$fbland=$fbrow["land"];
 				$fbbez=$fbrow["bezirk"];
 				$beznam=$fbrow["beznam"];
-				$fbblatt=$fbrow["blatt"];
+				$fbblatt=ltrim($fbrow["blatt"], "0");
 				$fbbartkey=$fbrow["blattart"]; // Key
 				$fbbart=$fbrow["blattartv"];  // Value
@@ -307,5 +313,4 @@
 			$aj = bnw_fsdaten($con, $lfdnran, $gml_bsan, "", $anteil, false, "", ""); // return=Anz.FS
 			$fscnt=$fscnt + $aj;
-			// +++ Gibt es Sondereigentum beim fiktiven Blatt?
 			if ($rowan["nrap"] != "") {
 				echo "\n<tr>"
@@ -375,5 +380,5 @@
 $b=0; // count: Buchungen / BlÃ€tter
 $zpaar=false;
-while($rowb = pg_fetch_array($resb)) {
+while($rowb = pg_fetch_assoc($resb)) {
 	if ($b == 0) { // Ueberschrift und Tabelle nur ausgeben, wenn etwas gefunden wurde
 		echo "\n\n<h3><img src='ico/Grundbuch_zu.png' width='16' height='16' alt=''> Berechtigte Grundb&uuml;cher</h3>"
@@ -399,4 +404,5 @@
 	$bart=$rowb["bart"];		// BA entschl.
 	$lfdnr=$rowb["lfdnr"];		// BVNR ber.
+	$blatt=ltrim($rowb["blatt"], "0");
 	$bvnr=str_pad($lfdnr, 4, "0", STR_PAD_LEFT);
 
@@ -415,5 +421,5 @@
 			echo htmlentities($rowb["beznam"], ENT_QUOTES, "UTF-8")
 		."</td>"
-		."\n\t<td><span class='wichtig'>".$rowb["blatt"]."</span></td>"
+		."\n\t<td><span class='wichtig'>".$blatt."</span></td>"
 		."\n\t<td>".$bvnr."</td>"
 		."\n\t<td title='".htmlentities($rowb["bartd"], ENT_QUOTES, "UTF-8")."'>";
Index: trunk/info/info/alkisn/alkisnamstruk.php
===================================================================
--- trunk/info/info/alkisn/alkisnamstruk.php	(revision 400)
+++ trunk/info/info/alkisn/alkisnamstruk.php	(revision 402)
@@ -12,8 +12,8 @@
 	2017-10-17 Deutsches Datumsformat im Geburtsdatum
 	2017-12-20 Anlass und Datum zur Adresse ausgeben, wenn es mehrere gibt oder SchlÃŒssel angefordert werden
+	2018-04-23 &nodebug
 */
 session_start();
-
-$multiadress="n"; $showkey="n"; // Var. aus Parameter initalisieren
+$multiadress="n"; $showkey="n"; $nodebug=""; // Var. aus Parameter initalisieren
 $cntget = extract($_GET); // Parameter in Variable umwandeln
 
@@ -24,4 +24,5 @@
 if ($showkey == "j") {$showkey=true;} else {$showkey=false;}
 if (!preg_match('#^[j|n]{0,1}$#', $multiadress)) {die ("Eingabefehler multiadress");}
+if (!preg_match('#^j{0,1}$#', $nodebug)) {die("Eingabefehler nodebug");}
 
 require_once("alkis_conf_location.php");
@@ -47,7 +48,9 @@
 
 <?php
-
-// Balken
-echo "<p class='nakennz'>ALKIS Name id=".$gmlid."&nbsp;</p>\n"
+// Mit URL-Parameter "&nodebug=j" kann man die Entwicklungsumgebung (in Conf definiert) ausschalten.
+// Manuell an die URL anfÃŒgen, wirkt nur temporÃ€r und wird nicht in Links weiter gereicht.
+if ($nodebug == "j") {$debug=0;} 
+
+echo "<p class='nakennz'>ALKIS Name id=".$gmlid."&nbsp;</p>\n" // Balken
 ."\n<h2><img src='ico/Eigentuemer.png' width='16' height='16' alt=''> Person</h2>";
 $con = pg_connect($dbconn." options='--application_name=ALKIS-Auskunft_alkisnamstruk.php'");
@@ -66,5 +69,5 @@
 	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)) {
 	$vor=htmlentities($row["vorname"], ENT_QUOTES, "UTF-8");
 	$nam=htmlentities($row["nachnameoderfirma"], ENT_QUOTES, "UTF-8");
@@ -108,5 +111,5 @@
 	$j=0;
 	// Parameter $multiadress = j zeigt ALLE Adressen an
-	while($rowa = pg_fetch_array($resa)) {
+	while($rowa = pg_fetch_assoc($resa)) {
 		$j++;
 		if ($multiadress == "j" OR $j == 1) {
@@ -196,5 +199,5 @@
 	$i=0;
 	$zpaar=false;
-	while($rowg = pg_fetch_array($resg)) {
+	while($rowg = pg_fetch_assoc($resg)) {
 		$gmln=$rowg["gml_n"];
 		$gmlg=$rowg["gml_g"];
Index: trunk/info/info/alkisn/alkisgebaeudenw.php
===================================================================
--- trunk/info/info/alkisn/alkisgebaeudenw.php	(revision 400)
+++ trunk/info/info/alkisn/alkisgebaeudenw.php	(revision 402)
@@ -9,8 +9,8 @@
 	2017-06-08 Validierung Eingabeparameter, Feinkorrekturen
 	2017-06-19 Tool-Tip GebÃ€udefunktion
+	2018-04-23 Kennzeichen eingerÃŒckt, &nodebug
 */
 session_start();
-
-$showkey="n"; // Var. aus Parameter initalisieren
+$showkey="n"; $nodebug=""; // Var. aus Parameter initalisieren
 $cntget = extract($_GET); // Parameter in Variable umwandeln
 
@@ -20,9 +20,10 @@
 if (!preg_match('#^[j|n]{0,1}$#', $showkey)) {die ("Eingabefehler showkey");}
 if ($showkey == "j") {$showkey=true;} else {$showkey=false;}
+if (!preg_match('#^j{0,1}$#', $nodebug)) {die("Eingabefehler nodebug");}
 
 require_once("alkis_conf_location.php");
 if ($auth == "mapbender") {require_once($mapbender);}
 include("alkisfkt.php");
-?>
+echo <<<END
 <!doctype html>
 <html lang="de">
@@ -35,10 +36,14 @@
 </head>
 <body>
-<?php
+END;
+// Mit URL-Parameter "&nodebug=j" kann man die Entwicklungsumgebung (in Conf definiert) ausschalten.
+// 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_alkisgebaeudenw.php'");
 if (!$con) echo "\n<p class='err'>Fehler beim Verbinden der DB</p>";
 
 // Flurstueck
-$sqlf ="SELECT f.name, f.flurnummer, f.zaehler, f.nenner, f.amtlicheflaeche, f.zeitpunktderentstehung, g.gemarkungsnummer, g.bezeichnung 
+$sqlf="SELECT f.name, f.flurnummer, f.zaehler, f.nenner, f.amtlicheflaeche, f.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;";
@@ -50,6 +55,5 @@
 	if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".$sqlf."<br>$1 = gml_id = '".$gmlid."'</p>";}
 }
-
-if ($rowf = pg_fetch_array($resf)) {
+if ($rowf = pg_fetch_assoc($resf)) {
 	$gemkname=htmlentities($rowf["bezeichnung"], ENT_QUOTES, "UTF-8");
 	$gmkgnr=$rowf["gemarkungsnummer"];
@@ -64,35 +68,34 @@
 	echo "\n<p class='err'>Fehler! Kein Treffer fuer gml_id=".$gmlid."</p>";
 }
-
-// Balken
-echo "<p class='geb'>ALKIS Flurst&uuml;ck (Geb&auml;ude) ".$gmkgnr."-".$flurnummer."-".$flstnummer."&nbsp;</p>";
-
-echo "\n<h2><img src='ico/Flurstueck.png' width='16' height='16' alt=''> Flurst&uuml;ck (Geb&auml;ude)</h2>";
-
-// Kennzeichen in Rahmen
-echo "\n<table class='outer'>\n<tr>\n<td>"
-	."\n\t<table class='kennzfs' title='Flurst&uuml;ckskennzeichen'>"
-    ."\n\t<tr>"
-        ."\n\t\t<td class='head'>Gmkg</td>"
-        ."\n\t\t<td class='head'>Flur</td>"
-        ."\n\t\t<td class='head'>Flurst-Nr.</td>"
-    ."\n\t</tr>\n\t<tr>"
-        ."\n\t\t<td title='Gemarkung'>";
-        if  ($showkey) {echo "<span class='key'>".$gmkgnr."</span><br>";}
-        echo $gemkname."&nbsp;</td>"
-        ."\n\t\t<td title='Flurnummer'>".$flurnummer."</td>"
-        ."\n\t\t<td title='Flurst&uuml;cksnummer (Z&auml;hler / Nenner)'><span class='wichtig'>".$flstnummer."</span></td>"
-    ."\n\t</tr>"
-	."\n\t</table>"
-."\n</td>\n<td>";
-
-// Links zu anderem Nachweis
-echo "\n\t<p class='nwlink noprint'>"
-	."\n\t\t<a href='alkisfsnw.php?gkz=".$gkz."&amp;gmlid=".$gmlid;
-	if ($showkey) {echo "&amp;showkey=j";}
-	echo "&amp;eig=n' title='Flurst&uuml;cksnachweis'>Flurst&uuml;ck <img src='ico/Flurstueck_Link.png' width='16' height='16' alt=''></a>"
-."\n\t</p>"
-."\n\t</td>\n</tr>\n</table>";
-// Ende Seitenkopf
+echo "<p class='geb'>ALKIS Flurst&uuml;ck (Geb&auml;ude) ".$gmkgnr."-".$flurnummer."-".$flstnummer."&nbsp;</p>"; // Balken
+echo "\n<h2>Flurst&uuml;ck (Geb&auml;ude)</h2>";
+echo "\n<table class='outer'>" // Kopf
+	."\n<tr>"
+		."\n\t<td>"
+		."\n\t<td class='ll'><img src='ico/Flurstueck.png' width='16' height='16' alt=''> Kennzeichen:</td>"
+		."\n\t<td>"
+			."\n\t\t<table class='kennzfs' title='Flurst&uuml;ckskennzeichen'>" // Kennzeichen in Rahmen
+				."\n\t\t<tr>"
+					."\n\t\t\t<td class='head'>Gemarkung</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>"
+			."\n\t\t<p class='nwlink noprint'>" // Links zu anderem Nachweis
+				."\n\t\t\t<a href='alkisfsnw.php?gkz=".$gkz."&amp;gmlid=".$gmlid;
+				if ($showkey) {echo "&amp;showkey=j";}
+				echo "&amp;eig=n' title='Flurst&uuml;cksnachweis'>Flurst&uuml;ck <img src='ico/Flurstueck_Link.png' width='16' height='16' alt=''></a>"
+			."\n\t\t</p>"
+		."\n\t</td>"
+	."\n</tr>"
+."\n</table>";
 
 echo "\n<p class='fsd'>Flurst&uuml;cksfl&auml;che: <b>".number_format($flstflaeche,0,",",".") . " m&#178;</b></p>";
@@ -129,6 +132,5 @@
 $gebflsum=0;
 echo "\n<hr>\n<table class='geb'>";
-	// T-Header
-	echo "\n<tr>\n"
+	echo "\n<tr>" // T-Header
 		."\n\t<td class='head' title='ggf. Geb&auml;udename'>Name</td>"
 		."\n\t<td class='heads fla' title='Schnittfl&auml;che zwischen Flurst&uuml;ck und Geb&auml;ude'><img src='ico/sortd.png' width='10' height='10' alt='' title='Sortierung (absteigend)'>Fl&auml;che</td>"
@@ -140,11 +142,10 @@
 		."\n\t<td class='head nwlink' title='Link zu den kompletten Hausdaten'>Haus</td>"
 	."\n</tr>";
-	// T-Body
-	while($rowg = pg_fetch_array($resg)) {
+	while($rowg = pg_fetch_assoc($resg)) { // T-Body
 		$gebnr = $gebnr + 1;
 		$ggml=$rowg["gml_id"];
 		$gebflsum=$gebflsum + $rowg["schnittflae"];
-		$gnam= trim(trim($rowg["name"], "{}"), '"'); // Gebaeude-Name ist ein Array in der DB: '{"A","B"}'
-		// Mehrfachbelegung nur theoretisch. Entklammern reicht. Mal mit und mal ohne "" drum !?
+		$gnam=trim(trim($rowg["name"], "{}"), '"'); // Gebaeude-Name ist ein Array in der DB: '{"A","B"}'
+		// Mehrfachbelegung nur theoretisch. Entklammern reicht. Mal mit und mal ohne "" drum!?
 		/* SELECT name FROM ax_gebaeude WHERE NOT name IS NULL AND array_length(name, 1) > 1; */
 		$gfktk=htmlentities($rowg["gebaeudefunktion"], ENT_QUOTES, "UTF-8");  // Geb.-Funktion Key
@@ -174,5 +175,5 @@
 			."\n\t<td class='".$gstyle."'>"; // Sp. 1 Name
 			if ($gnam != "") {echo "<span title='Geb&auml;udename'>".$gnam."</span><br>";}
-			echo "\n\t</td>";
+			echo "</td>";
 
 			echo "\n\t<td class='fla'>".$f1."</td>" // Sp. 2
@@ -191,7 +192,8 @@
 			echo $gzustand."&nbsp;</td>";
 
-			echo "\n\t<td class='nwlink noprint'>";
-			// 0 bis N Lagebezeichnungen mit Haus- oder Pseudo-Nummer, alle in ein TD zu EINEM GebÃ€ude
-
+			// 2 Spalten mit Links zu anderen Nachweisen: 1. Lage, 2. GebÃ€ude
+			echo "\n\t<td class='nwlink noprint'>"; // Link Lage
+
+			// Zu EINEM GebÃ€ude mehrere Lagebezeichnungen mit Haus- oder Pseudo-Nummer mÃ¶glich, alle in ein TD 
 			// HAUPTgebÃ€ude  Geb >zeigtAuf> lage (mehrere)
 			$sqll="SELECT 'm' AS ltyp, l.gml_id AS lgml, s.lage, s.bezeichnung, l.hausnummer, '' AS laufendenummer "
@@ -200,5 +202,5 @@
 			."WHERE g.gml_id= $1 AND g.endet IS NULL AND l.endet IS NULL AND s.endet IS NULL ";
 
-			// oder NEBENgebÃ€ude  Geb >hat> Pseudo
+			// UNION - oder NEBENgebÃ€ude  Geb >hat> Pseudo
 			$sqll.="UNION SELECT 'p' AS ltyp, l.gml_id AS lgml, s.lage, s.bezeichnung, l.pseudonummer AS hausnummer, l.laufendenummer "
 			."FROM ax_gebaeude g JOIN ax_lagebezeichnungmitpseudonummer l ON l.gml_id=g.hat "
@@ -207,5 +209,4 @@
 		
 			$sqll.="ORDER BY bezeichnung, hausnummer;";
-
 			$v = array($ggml);
 			$resl = pg_prepare("", $sqll);
@@ -215,5 +216,5 @@
 				if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".$sqll."<br>$1 = gml_id = '".$gmlid."'</p>";}
 			}
-			while($rowl = pg_fetch_array($resl)) { // LOOP: Lagezeilen
+			while($rowl = pg_fetch_assoc($resl)) { // LOOP: Lagezeilen
 				$ltyp=$rowl["ltyp"]; // Lagezeilen-Typ
 				$skey=$rowl["lage"]; // Str.-Schluessel
@@ -229,21 +230,21 @@
 					$lagetxt=$snam."&nbsp;".$hsnr;
 				}
-				echo "\n\t\t<img src='ico/Lage_mit_Haus.png' width='16' height='16' alt=''>&nbsp;";
-				if ($showkey) {echo "<span class='key'>(".$skey.")</span>&nbsp;";}			
 				echo "\n\t\t<a title='".$lagetitl."' href='alkislage.php?gkz=".$gkz."&amp;gmlid=".$gmllag."&amp;ltyp=".$ltyp;
-					if ($showkey)   {echo "&amp;showkey=j";}
-				echo "'>".$lagetxt."</a>";
-				echo "<br>";
+					if ($showkey) {echo "&amp;showkey=j";}
+					echo "'>";
+					if ($showkey) {echo "<span class='key'>(".$skey.")</span>&nbsp;";}
+				echo $lagetxt."&nbsp;<img src='ico/Lage_mit_Haus.png' width='16' height='16' alt=''></a><br>";
 			} // Ende Loop Lage m.H.
             pg_free_result($resl);
 			echo "\n\t</td>";
 
-			echo "\n\t<td class='nwlink noprint'>"
+			echo "\n\t<td class='nwlink noprint'>" // Link Haus
 				."\n\t\t<a title='Daten zum Geb&auml;ude-Objekt' href='alkishaus.php?gkz=".$gkz."&amp;gmlid=".$ggml;
 				if ($showkey) {echo "&amp;showkey=j";}
-				echo "'><img src='ico/Haus.png' width='16' height='16' alt=''></a>"
+				echo "'>Haus&nbsp;<img src='ico/Haus.png' width='16' height='16' alt=''></a>"
 			."\n\t</td>"
 		."\n</tr>";
-	}
+	} // Ende GebÃ€ude
+
 	// Footer
 	if ($gebnr == 0) {
@@ -258,11 +259,11 @@
 	."\n</table>";
 	$unbebaut = number_format(($flstflaeche - $gebflsum),0,",",".") . " m&#178;";
-	echo "\n<p><br>Flurst&uuml;cksfl&auml;che abz&uuml;glich Geb&auml;udefl&auml;che: <b>".$unbebaut."</b></p><br>";
+	echo "\n<p>\n<br>Flurst&uuml;cksfl&auml;che abz&uuml;glich Geb&auml;udefl&auml;che: <b>".$unbebaut."</b></p>\n<br>";
 }
 pg_free_result($resg);
 ?>
-
+ 
 <div class='buttonbereich noprint'>
-<hr>
+	<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>
Index: trunk/info/info/alkisn/alkislage.php
===================================================================
--- trunk/info/info/alkisn/alkislage.php	(revision 400)
+++ trunk/info/info/alkisn/alkislage.php	(revision 402)
@@ -11,4 +11,5 @@
 	2017-06-08 Validierung Eingabeparameter, gestreifte Tabelle, Feinkorrekturen
 	2017-10-09 Sauber filtern auf endet IS NULL
+	2018-04-23 &nodebug
 
 	ToDo:
@@ -19,6 +20,5 @@
 */
 session_start();
-
-$showkey="n"; // Var. aus Parameter initalisieren
+$showkey="n"; $nodebug=""; // Var. aus Parameter initalisieren
 $cntget = extract($_GET); // Parameter in Variable umwandeln
 
@@ -29,4 +29,5 @@
 if ($showkey == "j") {$showkey=true;} else {$showkey=false;}
 if (!preg_match('#^[m|p|o]{1}$#', $ltyp)) {die ("Eingabefehler ltyp");}
+if (!preg_match('#^j{0,1}$#', $nodebug)) {die("Eingabefehler nodebug");}
 
 require_once("alkis_conf_location.php");
@@ -45,5 +46,5 @@
 		$tnam = "ax_lagebezeichnungmithausnummer"; break;
 }
-?>
+echo <<<END
 <!doctype html>
 <html lang="de">
@@ -56,5 +57,9 @@
 </head>
 <body>
-<?php
+END;
+// Mit URL-Parameter "&nodebug=j" kann man die Entwicklungsumgebung (in Conf definiert) ausschalten.
+// 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_alkislage.php'");
 if (!$con) echo "\n<p class='err'>Fehler beim Verbinden der DB</p>";
@@ -91,5 +96,5 @@
 }
 
-if ($row = pg_fetch_array($res)) {
+if ($row = pg_fetch_assoc($res)) {
 	$strgml=$row["strgml"]; // gml_id des Katalogeintrag StraÃe
 	$land =$row["land"];
@@ -147,9 +152,7 @@
 }
 
-echo "\n<h2><img src='ico/Lage_mit_Haus.png' width='16' height='16' alt='HAUS'> Lagebezeichnung</h2>\n"
-."<p>Typ: ".$untertitel."</p>";
-
+echo "\n<h2>Lagebezeichnung</h2>\n<p>Typ: ".$untertitel."</p>";
 echo "\n<table class='outer'>\n<tr>\n\t<td>"; 	// Tab. Kennz.
-	// ToDo: !! kleiner, wenn ltyp=0 und die Schluesselfelder leer sind
+	// ToDo: kleiner, wenn ltyp=0 und die Schluesselfelder leer sind
 	echo "\n\t\t<table class='kennzla' title='Lage'>"
 		."\n\t\t<tr>";
@@ -269,5 +272,5 @@
 	$j=0;
 	$zpaar=false;
-	while($rowf = pg_fetch_array($resf)) {
+	while($rowf = pg_fetch_assoc($resf)) {
 		$flur=str_pad($rowf["flurnummer"], 3, "0", STR_PAD_LEFT);
 		$fskenn=$rowf["zaehler"]; // Bruchnummer
@@ -323,5 +326,5 @@
 			}
 			$neb=0;
-			while($row = pg_fetch_array($res)) {
+			while($row = pg_fetch_assoc($res)) {
 				echo "\n\t<a href='".$url.$row["gml_id"]."&amp;ltyp=p'>lfd.-Nr ".$row["laufendenummer"]."</a>&nbsp;&nbsp;";
 				$neb++;
@@ -341,5 +344,5 @@
 			if (!$res) {echo "\n<p class='err'>Fehler bei Hauptgeb&auml;ude.<br>".$sql."</p>";}
 			$hg=0;
-			while($row = pg_fetch_array($res)) {
+			while($row = pg_fetch_assoc($res)) {
 				echo "\n\t<a href='".$url.$row["gml_id"]."&amp;ltyp=m'>Haus-Nr ".$pseu."</a>&nbsp;&nbsp;";
 				$hg++;
@@ -359,5 +362,5 @@
 			}
 			$neb=0;
-			while($row = pg_fetch_array($res)) {
+			while($row = pg_fetch_assoc($res)) {
 				echo "\n\t<a href='".$url.$row["gml_id"]."&amp;ltyp=p'>lfd.-Nr ".$row["laufendenummer"]."</a>&nbsp;&nbsp;";
 				$neb++;
@@ -404,5 +407,5 @@
 	."\n</tr>";
 	$i=0;
-	while($row = pg_fetch_array($res)) {
+	while($row = pg_fetch_assoc($res)) {
 		$ggml=$row["gml_id"];
 		$gfla=$row["flaeche"];
Index: trunk/info/info/alkisn/alkisfsnw.php
===================================================================
--- trunk/info/info/alkisn/alkisfsnw.php	(revision 400)
+++ 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>
Index: trunk/info/info/alkisn/alkisauszug.css
===================================================================
--- trunk/info/info/alkisn/alkisauszug.css	(revision 400)
+++ trunk/info/info/alkisn/alkisauszug.css	(revision 402)
@@ -19,5 +19,6 @@
 	2017-10-11	BodenschÃ€tzung
 	2017-10-17	td.nwlink min-width
-	2017-12-20 td.dbg
+	2017-12-20	td.dbg
+	2018-04-23	Spaltenbreiten
 */
 body	{background-color: #FEFFFE;}
@@ -44,5 +45,5 @@
 p.zus		{margin: 2pt; padding: 2pt; border:1px dotted maroon; background: white;} /* Zusatz zum Eigent., gerahmt */
 p.avh		{font-style: italic; color: navy;}	/* Anteilsverhaeltnis */
-p.ant		{font-style: italic; position: relative;left: 12px;} /* Anteil am FS */
+p.ant		{font-style: italic; position: relative;} /* Anteil am FS  left: 12px;*/
 p.geig		{color: navy;}		/* GB-Nachw. Eigentuemer Name */
 p.gadr		{color: maroon; margin-top: 1pt;}	/* GB-Nachw. Eigentuemer Adresse */
@@ -104,5 +105,5 @@
 td.emz	{width: 45px; padding-right: 4px; padding-left: 4px; text-align: right;} */
 td.kurz	{width: 26px; padding-left: 4px;}
-td.nanu	{width: 80px;}				/* Namensnummer */
+td.nanu	{width: 50px;}				/* Namensnummer */
 td.sond, p.sond	{font-size: 9pt; font-style: italic; background-color: white;
 		border: 1px dotted silver; padding: 6px;}	/* Sondereigentumsbeschreibung */
Index: trunk/info/info/alkisn/alkisexport.php
===================================================================
--- trunk/info/info/alkisn/alkisexport.php	(revision 400)
+++ trunk/info/info/alkisn/alkisexport.php	(revision 402)
@@ -30,4 +30,5 @@
 
 	ToDo:
+	- Abruf FlurstÃŒck sollte auch mit "fskennz" (ggg-ff-zzz/nn) statt "gml-id" mÃ¶glich sein
 	- In Dateiname den StraÃennamen statt der gmlid verwenden? (Umlaute?)
 	- in alkislage.php fÃŒr den Typ "ohne Haunummer" den Export mit strasse und haus=o verlinken
@@ -50,5 +51,5 @@
 	$lagehsnr="";
 	$salt="";
-	while($row = pg_fetch_array($res)) {
+	while($row = pg_fetch_assoc($res)) {
 		if ($j > 0) {$lagehsnr.=", ";}
 		$sneu=$row["bezeichnung"];
@@ -202,5 +203,5 @@
 
 // Datenfelder auslesen
-while($row = pg_fetch_array($res)) {
+while($row = pg_fetch_assoc($res)) {
 	$i++; // Zeile der Tabelle
 	$rechnen=true; // Formel in letzte Spalte?
Index: trunk/info/info/alkisn/alkisstrasse.php
===================================================================
--- trunk/info/info/alkisn/alkisstrasse.php	(revision 400)
+++ trunk/info/info/alkisn/alkisstrasse.php	(revision 402)
@@ -12,8 +12,8 @@
 	2017-06-08 Validierung Eingabeparameter, gestreifte Tabelle, Feinkorrekturen
 	2017-10-09 Sauber filtern auf endet IS NULL
+	2018-04-23 &nodebug
 */
 session_start();
-
-$showkey="n"; // Var. aus Parameter initalisieren
+$showkey="n"; $nodebug=""; // Var. aus Parameter initalisieren
 $cntget = extract($_GET); // Parameter in Variable umwandeln
 
@@ -23,4 +23,5 @@
 if (!preg_match('#^[j|n]{0,1}$#', $showkey)) {die ("Eingabefehler showkey");}
 if ($showkey == "j") {$showkey=true;} else {$showkey=false;}
+if (!preg_match('#^j{0,1}$#', $nodebug)) {die("Eingabefehler nodebug");}
 
 require_once("alkis_conf_location.php");
@@ -45,4 +46,8 @@
 <body>
 <?php
+// Mit URL-Parameter "&nodebug=j" kann man die Entwicklungsumgebung (in Conf definiert) ausschalten.
+// 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_alkisstrasse.php'");
 if (!$con) echo "\n<p class='err'>Fehler beim Verbinden der DB</p>";
@@ -65,47 +70,47 @@
 	if ($debug > 2) {echo "\n<p class='err'>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)) {
 	$lage=$row["lage"]; // Strassenschluessel
 	$snam=$row["snam"]; // Strassenname
 	$gem=$row["gemeinde"];
-	// Balken
 	$kennz=$gem."-".$lage." (".$snam.")"; // Schluessel als Sucheingabe in NAV brauchbar?
-	echo "\n<p class='strasse'>ALKIS Stra&szlig;e ".$kennz."&nbsp;</p>";
+	echo "\n<p class='strasse'>ALKIS Stra&szlig;e ".$kennz."&nbsp;</p>"; // Balken
 } else {
 	echo "\n<p class='err'>Kein Treffer bei Lagebezeichnungskatalogeintrag.</p>";
 }
 
-echo "\n<h2><img src='ico/Strassen.png' width='16' height='16' alt=''> Stra&szlig;e</h2>";
+echo "\n<h2>Stra&szlig;e</h2>";
 
 // Tabelle Kennzeichen
-echo "\n<table class='outer'>\n<tr>\n\t<td>"
-."\n\t<table class='kennzstra' title='Lage'>"
-	."\n\t<tr>"
-		."\n\t\t<td class='head'>Land</td>"
-		."\n\t\t<td class='head'>Reg.-Bez.</td>"
-		."\n\t\t<td class='head'>Kreis</td>"
-		."\n\t\t<td class='head'>Gemeinde</td>"
-		."\n\t\t<td class='head'>Stra&szlig;e</td>"
-	."\n\t</tr>"
-	."\n\t<tr>";
-		echo "\n\t\t<td title='Bundesland'>";
-		if ($showkey) {echo "<span class='key'>".$row["land"]."</span><br>";}
-		echo $row["bnam"]."&nbsp;</td>"
-		."\n\t\t<td title='Regierungsbezirk'>";
-		if ($showkey) {echo "<span class='key'>".$row["regierungsbezirk"]."</span><br>";}
-		echo $row["rnam"]."&nbsp;</td>"
-		."\n\t\t<td title='Kreis'>";
-		if ($showkey) {echo "<span class='key'>".$row["kreis"]."</span><br>";}
-		echo $row["knam"]."&nbsp;</td>"
-		."\n\t\t<td title='Gemeinde'>";
-		if ($showkey) {echo "<span class='key'>".$gem."</span><br>";}
-		echo $row["gnam"]."&nbsp;</td>"
-		. "\n\t\t<td title='Stra&szlig;e'>";
-		if ($showkey) {echo "<span class='key'>".$lage."</span><br>";}
-		echo "<span class='wichtig'>".$snam."</span>"
-		. "&nbsp;</td>"
-	."\n\t</tr>"
-."\n\t</table>";
-
+echo "\n<table class='outer'>\n<tr>"
+."\n\t<td class='ll'><img src='ico/Strassen.png' width='16' height='16' alt=''> Stra&szligenname:</td>"
+."\n\t<td>"
+	."\n\t\t<table class='kennzstra' title='Lage'>"
+		."\n\t\t<tr>"
+			."\n\t\t\t<td class='head'>Land</td>"
+			."\n\t\t\t<td class='head'>Reg.-Bez.</td>"
+			."\n\t\t\t<td class='head'>Kreis</td>"
+			."\n\t\t\t<td class='head'>Gemeinde</td>"
+			."\n\t\t<td class='head'>Stra&szlig;e</td>"
+		."\n\t\t</tr>"
+		."\n\t\t<tr>";
+			echo "\n\t\t\t<td title='Bundesland'>";
+			if ($showkey) {echo "<span class='key'>".$row["land"]."</span><br>";}
+			echo $row["bnam"]."&nbsp;</td>"
+			."\n\t\t\t<td title='Regierungsbezirk'>";
+			if ($showkey) {echo "<span class='key'>".$row["regierungsbezirk"]."</span><br>";}
+			echo $row["rnam"]."&nbsp;</td>"
+			."\n\t\t\t<td title='Kreis'>";
+			if ($showkey) {echo "<span class='key'>".$row["kreis"]."</span><br>";}
+			echo $row["knam"]."&nbsp;</td>"
+			."\n\t\t\t<td title='Gemeinde'>";
+			if ($showkey) {echo "<span class='key'>".$gem."</span><br>";}
+			echo $row["gnam"]."&nbsp;</td>"
+			. "\n\t\t\t<td title='Stra&szlig;e'>";
+			if ($showkey) {echo "<span class='key'>".$lage."</span><br>";}
+			echo "<span class='wichtig'>".$snam."</span>"
+			. "&nbsp;</td>"
+		."\n\t\t</tr>"
+	."\n\t\t</table>";
 echo "\n\t</td>\n\t<td>";
 
@@ -119,5 +124,4 @@
 	."\n\t\t</p>";
 }
-
 echo "\n\t</td>\n</tr>\n</table>";
 pg_free_result($res);
@@ -168,5 +172,5 @@
 
 $zpaar=false; // Zeilen-Farbwechsel
-while($rowf = pg_fetch_array($resf)) {
+while($rowf = pg_fetch_assoc($resf)) {
 	$gmkg=$rowf["bezeichnung"];
 	$flur=str_pad($rowf["flurnummer"], 3, "0", STR_PAD_LEFT);
Index: trunk/info/info/alkisn/alkisfkt.php
===================================================================
--- trunk/info/info/alkisn/alkisfkt.php	(revision 400)
+++ trunk/info/info/alkisn/alkisfkt.php	(revision 402)
@@ -14,4 +14,8 @@
 	2017-11-03 neue function werteliste()
 	2017-12-20 Default Anzeigewert "EigentÃŒmer" im Link fÃŒr leere EigentÃŒmerart, JÃŒngste Adresse zur Person verwenden.
+	2018-04-23 Berechtigte Buchungen im FS-Nachw. verbessern. Neue Spalte statt Ãberschriften fÃŒr "EigentÃŒmer" und "Berechtigte Buchungen".
+
+++ ToDo:
+ ++ Parameter $lnkclass in eigentuemer() und $jfenster in buchung_anzg() vereinheitlichen
 */
 
@@ -21,5 +25,5 @@
 	// Den URL-Parameter "&showkey=j/n" umschalten lassen.
 	// $append wird angehaengt wenn gefuellt. Anwendung: &eig=j bei FS-NW, &ltyp=m/p/o bei Lage
-	global $gkz, $showkey, $hilfeurl, $auth;
+	global $gkz, $showkey, $hilfeurl, $auth, $debug;
 
 	// S c r e e n - Foot
@@ -38,9 +42,12 @@
 	echo "\n\t\t<td title='Konfiguration'>";
 		$mylink ="\n\t\t\t<a class='keyswitch' href='".$link."gkz=".$gkz."&amp;gmlid=".$gmlid.$append;
-
 		if ($showkey) { // Umschalten SchlÃŒssel ein/aus
 			echo $mylink."&amp;showkey=n' title='Verschl&uuml;sselungen ausblenden'>Schl&uuml;ssel aus</a>";
 		} else {
 			echo $mylink."&amp;showkey=j' title='Verschl&uuml;sselungen anzeigen'>Schl&uuml;ssel ein</a>";
+		}
+		// TemporÃ€r eine Ansicht ohne Entwicklungsumgebung
+		if ($debug > 0) {
+			echo "&nbsp;|&nbsp;".$mylink."&amp;nodebug=j' title='Debug-Ausgaben tempor&auml;r abschalten'>Ansicht ohne Testausgaben</a>";
 		}
 	echo "\n\t\t</td>";
@@ -57,94 +64,185 @@
 		echo "\n<p class='onlyprint'><i>Mapbender-Benutzer:&nbsp;".$customer."</i></p>";
 	}
-
 	return 0;
 }
 
-function ber_bs_hinw($gmls, $gmlf) {
-	// Berechtigte Buchungs-Stellen - Hinweis.
-	// Unter dem Grundbuch-Link den Hinweis auf "berechtigte Buchungssstellen" anzeigen und einen Umschalter.
-	global $gkz, $debug, $showkey, $berbu, $eig;
+function ber_bs_zaehl($gmls) {
+	// Berechtigte Buchungs-Stellen zaehlen.
 
 	// Buchungstelle dienend <(Recht)an< Buchungstelle herrschend
-	$sql ="SELECT count(sh.gml_id) AS anz, sh.buchungsart, a.v "
-	."FROM ax_buchungsstelle sd JOIN ax_buchungsstelle sh ON sd.gml_id=ANY(sh.an) " 
-	."LEFT JOIN alkis_wertearten a ON sh.buchungsart=cast(a.k AS integer) " 
-	."WHERE sd.gml_id= $1 AND sh.endet IS NULL AND sd.endet IS NULL AND a.element='ax_buchungsstelle' and a.bezeichnung='buchungsart' "
-	."GROUP BY sh.buchungsart, a.v;";
-
+	$sql ="SELECT count(sh.gml_id) AS anz FROM ax_buchungsstelle sd JOIN ax_buchungsstelle sh ON sd.gml_id=ANY(sh.an) " 
+	."WHERE sd.gml_id= $1 AND sh.endet IS NULL AND sd.endet IS NULL;";
 	$v = array($gmls); // GML dienende Buchungs-Stelle
 	$resan = pg_prepare("", $sql);
 	$resan = pg_execute("", $v);
-	if (!$resan) {
-		echo "\n<p class='err'>Fehler bei 'berechtigte Buchungsstellen'.</p>";
-		if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = gml_id = '".$gmls."'</p>";}
-	}
-	$zeile=0; // Vesrchiedene Arten
-	$cnt=0; // Summe der Buchugen
-	while($rowan = pg_fetch_array($resan)) {
-		$anz=$rowan["anz"];
-
-		// Einleitung
-		if ($zeile == 0) { // vor. 1. Zeile
-			// Diese Hinweise sollen mit gedruckt werden. Also KEIN "noprint"!
-			echo "\n\t\t<br>\n\t\t<p class='nwlink' title='Andere Grundst&uuml;cke mit Rechten an diesem.'>\n\t\t\tBerechtigte Buchungen ";
-			if ($berbu=="j") { // wechselndes Symbol
-				echo "<img src='ico/Grundbuch_zu.png' width='16' height='16' alt=''>";
-			} else {
-				echo "<img src='ico/Grundbuch.png' width='16' height='16' alt=''>";
-			}
-			echo "\n\t\t\t<b>";
-		}
-
-		// Eine Zeile je Buchungs-Typ
-		echo "<br>".$anz." ".htmlentities($rowan["v"], ENT_QUOTES, "UTF-8");
-		if ($showkey) {echo " <span class='key'>(".$rowan["buchungsart"].")</span>";}
-		$zeile++;
-		$cnt = $cnt + $anz;
-	} // Ende Result
+	if (!$resan) {echo "\n<p class='err'>Fehler bei 'berechtigte Buchungsstellen zaehlen'.</p>";}
+	$rowan = pg_fetch_assoc($resan);
+	$anz=$rowan["anz"];
 	pg_free_result($resan);
-
-	// Ergebnis
-	if ($zeile == 0) { // kein Schleifen-Durchlauf
-		echo "\n\t<p class='nwlink' title='Kein anderes Grundst&uuml;ck hat ein Recht an diesem.'>Keine berechtigte Buchung</p>";
-	} else { // Schleife wurde durchlaufen,
-		echo "</b>\n\t\t</p>";
-
-		// Umschalter nicht drucken
-		echo "\n\t\t<p class='nwlink noprint'>"
-		."\n\t\t\t<a href='".$_SERVER['PHP_SELF']."?gkz=".$gkz."&amp;gmlid=".$gmlf."&eig=".$eig; // GML FlurstÃŒck
-		if ($showkey) {echo "&amp;showkey=j";}
-		// Der FS-Nachweis ruft sich selbst mit geaendertem Parameter auf.
-		if ($berbu=="j") {
-			echo "&amp;berbu=n' title='ohne berechtigte Buchungen'>nicht Anzeigen"; // Position: Top
-		} else {
-			echo "&amp;berbu=j#berbu' title='mit berechtigten Buchungen'>Anzeigen"; // Positionierung auf Marke #berbu
-		}
-		echo "</a>\n\t\t</p>";
-	}
-	return $cnt; // Funktionswert = Anzahl der berechtigten Buchungen
-}
-
-function ber_bs_anz($gmls, $eig) {
-	// Berechtigte Buchungsstellen (+ BlÃ€tter, EigentÃŒmer) anzeigen innerhalb eines FS-Nachw.
-	// Im FS-Nachweis werden auch die berechtigten GrundbÃŒcher mit ihren EigentÃŒmern angezeigt.
-	// Also z.B. zu einem "fiktiven Blatt" auch die GrundbuÃŒcher mit dem "Wohnungs-/Teileigentum"
-	global $gkz, $debug, $showkey, $idanzeige;
-
-	// Herrschende (berechtigte) Buchungsstellen ausgeben - Beginn
-	// sd=Buchungstelle herrschend >(Recht)an> sd=Buchungstelle dienend >istBestandteilVon> BLATT -> Bezirk
-	$sql="SELECT sd.gml_id AS s_gml, "  // Buchungs-Stelle dienend
-	."sh.buchungsart, sh.laufendenummer as lfd, sh.zaehler, sh.nenner, sh.nummerimaufteilungsplan as nrpl, sh.beschreibungdessondereigentums as sond, " // Buchungs-Stelle herrschend
-	."b.gml_id AS g_gml, b.bezirk, b.buchungsblattnummermitbuchstabenerweiterung as blatt, b.blattart, z.bezeichnung, a.v AS bart, w.v AS blattartv "
-	."FROM ax_buchungsstelle sd "
-	."JOIN ax_buchungsstelle sh ON sd.gml_id=ANY(sh.an) "
+	return $anz; // Funktionswert = Anzahl der berechtigten Buchungen
+}
+
+function buchung_anzg($gmlbs, $eig, $jsfenster, $gml_fs) {
+	// In einem FS-Nachw. EINE Buchungsstelle anzeigen.
+	// Parameter:
+	//  $gmlbs: GML-ID der anzuzeigenden Buchungs-Stelle
+	//  $eig: EigentÃŒmer ausgeben j/n
+	//  $jsfenster: Javascript-Funktion zum Verlassen des Feature-Info-Fensters verwenden (bool)
+	//  $gml_fs: GML-ID des FlurstÃŒcke (nur bei erstem Aufruf in einem FS-Nachweis notwendig)
+	global $gkz, $debug, $showkey, $bartgrp, $barttypgrp, $stufe;
+
+	$sqlbs="SELECT sh.gml_id AS hgml, sh.buchungsart, sh.laufendenummer as lfd, sh.zaehler, sh.nenner, sh.nummerimaufteilungsplan as nrpl, sh.beschreibungdessondereigentums as sond, " // Buchungs-Stelle herrschend
+	."b.gml_id AS g_gml, b.bezirk, b.buchungsblattnummermitbuchstabenerweiterung as blatt, b.blattart, z.bezeichnung, a.v AS bart, a.d AS barttitle, w.v AS blattartv "
+	."FROM ax_buchungsstelle sh "
 	."JOIN ax_buchungsblatt b ON b.gml_id=sh.istbestandteilvon "
 	."LEFT JOIN ax_buchungsblattbezirk z ON z.land=b.land AND z.bezirk=b.bezirk "
-	."LEFT JOIN alkis_wertearten a ON sh.buchungsart=cast(a.k AS integer) AND a.element='ax_buchungsstelle' and a.bezeichnung='buchungsart' " // entschlÃŒsseln Buchungsart
-	."LEFT JOIN alkis_wertearten w ON b.blattart=w.k AND w.element='ax_buchungsblatt' and w.bezeichnung='blattart' " // entschlÃŒsseln Blatt-Art
-	."WHERE sd.gml_id= $1 AND sd.endet IS NULL AND sh.endet IS NULL AND b.endet IS NULL AND z.endet IS NULL "
-	."ORDER BY b.bezirk, b.buchungsblattnummermitbuchstabenerweiterung;";
-
-	$v = array($gmls); // id dienende Buchungsstelle
+	."LEFT JOIN alkis_wertearten a ON sh.buchungsart=cast(a.k AS integer) AND a.element='ax_buchungsstelle' and a.bezeichnung='buchungsart' " // entschl. Buchungsart
+	."LEFT JOIN alkis_wertearten w ON b.blattart=w.k AND w.element='ax_buchungsblatt' and w.bezeichnung='blattart' " // entschl. Blatt-Art
+	."WHERE sh.gml_id= $1 AND sh.endet IS NULL AND b.endet IS NULL AND z.endet IS NULL;";
+
+	$v = array($gmlbs); // ID dienende Buchungs-Stelle
+	$resbs = pg_prepare("", $sqlbs);
+	$resbs = pg_execute("", $v);
+	if (!$resbs) {
+		echo "\n<p class='err'>Fehler bei 'Buchungsstelle ausgeben'.</p>";
+		if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities($sqlbs, ENT_QUOTES, "UTF-8")."<br>$1 = gml_id = '".$gmlbs."'</p>";}
+	}
+	$gezeigt=false; // Funktionswert
+	if ($rowbs = pg_fetch_assoc($resbs)) { // ein Treffer
+		$blattkeyber=$rowbs["blattart"]; // Schluessel von Blatt-Art des GB
+		if ($blattkeyber != '5000' or $debug > 1) { // "Fiktives Blatt" nur bei Entwicklung anzeigen
+			$gezeigt=true; // Funktionswert
+			$hgml=$rowbs["hgml"]; // GML-ID der (herrschenden) BuchungsStelle
+			$bartkey=$rowbs["buchungsart"]; // Buchungsart SchlÃŒssel
+			$beznam=$rowbs["bezeichnung"]; // Bezirk
+			$blattartber=$rowbs["blattartv"]; // Wert von Blatt-Art des GB
+			$nrpl=$rowbs["nrpl"]; // Nr im Auft.plan
+			$sond=$rowbs["sond"]; // Beschr. d.Sondereigentums
+			$gbgml=$rowbs["g_gml"]; // GML-ID des Grundbuch-Blattes
+			$blatt=ltrim($rowbs["blatt"], "0");
+			$lfd=ltrim($rowbs["lfd"], "0");
+			if ($bartkey != $bartgrp) { // Wechsel der Buchungsart
+				$bart=$rowbs["bart"]; // Buchungsart Text
+				$barttitle=$rowbs["barttitle"]; // Buchungsart ErklÃ€rung
+				switch (true) { // Die Buchungsart einem Typ (Gruppierung) zuweisen
+					case ($bartkey <= 1999): $barttyp = "E"; break; // Eigentum/GrundstÃŒck
+					case ($bartkey >= 2000): $barttyp = "R"; break; // GrundstÃŒcksgleiches Recht, z.B. 2101 "Erbbaurecht"
+					default: $barttyp = "E"; break;
+				}
+				if ($barttypgrp != $barttyp) { // Wenn der Typ wechselt, neue Ãberschrift in Tabelle
+					switch ($barttyp) { // Text der Ãberschrift
+						case "E":
+							if ($eig == 'j') {$h3txt = "Buchung und Eigentum";} 
+							else {$h3txt = "Buchung";}
+						break;
+						case "R": $h3txt = "Grundst&uuml;cksgleiche Rechte"; break;
+					}
+					if ($barttypgrp == "" and $gml_fs != "") { // die erste Ãberschrift mit ID und Umschalter
+						echo "\n\t<tr>\n\t\t<td colspan='3'>\n\t\t\t<h3 id='gb'>".$h3txt."</h3>\n\t\t</td>"; // 1-3
+						echo "\n\t\t<td>\n\t\t\t<p class='nwlink noprint'>" // 4
+							."\n\t\t\t\t<a href='".$_SERVER['PHP_SELF']. "?gkz=".$gkz."&amp;gmlid=".$gml_fs;
+							if ($showkey) {echo "&amp;showkey=j";}
+							if ($eig=="j") { // Umschalter: FS-Nachweis ruft sich selbst mit geaendertem Parameter auf. Positionierung auf Marke "#gb"
+								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>";
+							}
+						echo "\n\t\t\t</p>\n\t\t</td>";
+					} else {
+						echo "\n\t<tr>\n\t\t<td colspan='3'>\n\t\t\t<h3>".$h3txt."</h3>\n\t\t</td>\n\t\t<td>&nbsp;</td>"; // 1-4
+					}
+					echo "\n\t</tr>";
+					$barttypgrp = $barttyp;
+				}
+
+				// +++ mehr Abstand oben zur Zeile in .css, oder farbig hinterlegen?
+				echo "\n\t<tr>" // Buchungsart als Zwischenzeile
+					."\n\t\t<td class='ll'><img src='ico/Grundbuch.png' width='16' height='16' alt=''> Buchungsart:</td>" // 1
+					."\n\t\t<td colspan='2' title='".$barttitle."'>"; // 2-3
+						if ($showkey) {echo "<span class='key'>(".$bartkey.")</span> ";}
+						echo "<span class='wichtig'>".$bart."</span>"
+					."</td>"
+					."\n\t\t<td></td>" // 4
+				."\n\t</tr>";
+				$bartgrp=$bartkey; // Gruppe merken
+			} // Ende Wechsel der Buchungsart
+
+			echo "\n\t<tr>" // Tabelle mit 4 Spalten fÃŒr Buchung und EigentÃŒmer
+				."\n\t\t<td class='ll'><img src='ico/Grundbuch_zu.png' width='16' height='16' alt=''> Buchung:"; // 1
+			if ($showkey and $debug > 2) {echo "<br><span class='key'>Stufe ".$stufe."<br>".$hgml."</span> ";}
+			echo "</td>\n\t\t<td colspan='2'>"; // 2-3
+
+					// innere Tabelle: Rahmen mit GB-Kennz.
+					if ($blattkeyber == 1000) {
+						echo "\n\t\t\t<table class='kennzgb' title='Bestandskennzeichen'>";
+					} else {
+						echo "\n\t\t\t<table class='kennzgbf' title='Bestandskennzeichen'>"; // dotted
+					}
+					echo "\n\t\t\t<tr>"
+						."\n\t\t\t\t<td class='head'>Bezirk</td>"
+						."\n\t\t\t\t<td class='head'>";
+						if ($showkey) {echo "<span class='key'>".$blattkeyber."</span> ";}
+						echo $blattartber."</td>"
+						."\n\t\t\t\t<td class='head'>Lfd-Nr</td>"
+					."\n\t\t\t</tr>";
+					echo "\n\t\t\t<tr>"
+						."\n\t\t\t\t<td title='Grundbuchbezirk'>";
+						if ($showkey) {echo "<span class='key'>".$rowbs["bezirk"]."</span><br>";}
+						echo $beznam."</td>"
+						."\n\t\t\t\t<td title='Grundbuch-Blatt'><span class='wichtig'>".$blatt."</span></td>"
+						."\n\t\t\t\t<td title='Bestandsverzeichnis-Nummer (BVNR, Grundst&uuml;ck)'>".$lfd."</td>"
+					."\n\t\t\t</tr>"
+					."\n\t\t\t</table>";
+
+					if ($rowbs["zaehler"] <> "") {
+						echo "\n\t\t\t<p class='ant'>".$rowbs["zaehler"]."/".$rowbs["nenner"]."&nbsp;Anteil am Flurst&uuml;ck</p>";
+					}
+					if ($nrpl != "") {
+						echo "\n\t\t\t<p class='nrap' title='Nummer im Aufteilungsplan'>Nummer <span class='wichtig'>".$nrpl."</span> im Aufteilungsplan.</p>";
+					}
+					if ($sond != "") {
+						echo "\n\t\t\t<p class='sond' title='Sondereigentum'>Verbunden mit dem Sondereigentum: ".$sond."</p>";
+					}
+				echo "\n\t\t</td>"; // 2-3
+
+				echo "\n\t\t<td>"; // 4
+					echo "\n\t\t\t<p class='nwlink noprint'>";
+						if ($showkey) {echo "<span class='key'>".$blattkeyber."</span> ";}
+						$url="alkisbestnw.php?gkz=".$gkz."&amp;gmlid=".$gbgml;
+						if ($showkey) {$url.="&amp;showkey=j";}
+						if ($jsfenster) {$url="javascript:imFenster(\"".$url."\")";} // Sonderfall "Inlay" aus Feature-Info
+						echo "\n\t\t\t\t<a href='".$url."' title='Grundbuchnachweis mit Eigent&uuml;merangabe'>".$blattartber
+							." <img src='ico/GBBlatt_link.png' width='16' height='16' alt=''>"
+						."</a>";
+					//	if ($showkey and $debug > 2) {echo "<br><span class='key'>GML-ID = ".$gbgml."</span> ";}
+					echo "\n\t\t\t</p>"
+				."\n\t\t</td>" // 4
+			."\n\t</tr>";
+			if ($eig == "j") {
+				if ($jsfenster) {$lnkclass = "imFenster";} else {$lnkclass = "";} 
+				$n = eigentuemer($gbgml, true, $lnkclass); // mit Adresse
+			}
+		}
+	}
+	pg_free_result($resbs);
+	return $gezeigt; // true wenn eine Buchung ausgegeben wurde
+}
+
+function ber_bs_anzg($gmls, $eig, $gml_fs) {
+	// In einem FS-Nachw. die berechtigten (herrschenden) Buchungsstellen anzeigen z.B. "Wohnungs-/Teileigentum".
+	// Parameter: 
+	//  $gmls: GML-ID der dienenden Buchungs-Stelle. Im ersten Durchlauf also, die BS auf der das FS gebucht ist.
+	//  $eig: EigentÃŒmer ausgeben j/n
+	global $debug, $stufe;
+
+	// sh=Buchungstelle herrschend >(Recht)an> sd=Buchungstelle dienend >istBestandteilVon> BLATT -> Bezirk
+	$sql="SELECT sh.gml_id AS hgml, sh.buchungsart, sh.laufendenummer as lfd, sh.zaehler, sh.nenner, sh.nummerimaufteilungsplan as nrpl, sh.beschreibungdessondereigentums as sond, "
+	."b.gml_id AS g_gml, b.bezirk, b.buchungsblattnummermitbuchstabenerweiterung as blatt, b.blattart "
+	."FROM ax_buchungsstelle sh JOIN ax_buchungsblatt b ON b.gml_id=sh.istbestandteilvon "
+	."WHERE $1 = ANY(sh.an) AND sh.endet IS NULL AND b.endet IS NULL "
+	."ORDER BY b.bezirk, b.buchungsblattnummermitbuchstabenerweiterung, sh.laufendenummer;";
+
+	$v = array($gmls); // ID dienende BuchungsStelle
 	$resber = pg_prepare("", $sql);
 	$resber = pg_execute("", $v);
@@ -153,87 +251,26 @@
 		if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = gml_id = '".$gmls."'</p>";}
 	}
-
 	$an=0;
-	while($rowan = pg_fetch_array($resber)) {
-		$beznam=$rowan["bezeichnung"];
-		$bart=$rowan["bart"]; // Buchungsart
-		$blattkeyber=$rowan["blattart"];  // Schluessel von Blatt-Art des berechtigten GB
-		$blattartber=$rowan["blattartv"]; // Wert von Blatt-Art des berechtigten GB
-		$nrpl=$rowan["nrpl"]; // Nummer im Aufteilungsplan
-		$sond=$rowan["sond"]; // Beschreibung des Sondereigentums
-
-		echo "\n<table class='outer'>" // \n<hr>
-		."\n<tr>" // 1 row only
-			."\n<td>"; // outer linke Spalte - Daten
-				// Rahmen mit Kennzeichen GB
-				if ($blattkeyber == 1000) {
-					echo "\n\t<table class='kennzgb' title='Bestandskennzeichen'>";
-				} else {
-					echo "\n\t<table class='kennzgbf' title='Bestandskennzeichen'>"; // dotted
-				}
-				echo "\n\t<tr>"
-					."\n\t\t<td class='head'>Bezirk</td>"
-					."\n\t\t<td class='head'>".$blattartber."</td>"
-					."\n\t\t<td class='head'>Lfd-Nr,</td>"
-					."\n\t\t<td class='head'>Buchungsart</td>"
-				."\n\t</tr>";
-				echo "\n\t<tr>"
-					."\n\t\t<td title='Grundbuchbezirk'>";
-					if ($showkey) {echo "<span class='key'>".$rowan["bezirk"]."</span><br>";}
-					echo $beznam."</td>"
-					."\n\t\t<td title='Grundbuch-Blatt'><span class='wichtig'>".$rowan["blatt"]."</span></td>"
-					."\n\t\t<td title='Bestandsverzeichnis-Nummer (BVNR, Grundst&uuml;ck)'>".$rowan["lfd"]."</td>"
-					."\n\t\t<td title='Buchungsart'>";
-						if ($showkey) {echo "<span class='key'>".$rowan["buchungsart"]."</span><br>";}
-						echo $rowan["bart"]
-					."</td>"
-				."\n\t</tr>"
-				."\n\t</table>";
-				if ($rowan["zaehler"] <> "") {
-					echo "\n\t<p class='ant'>".$rowan["zaehler"]."/".$rowan["nenner"]."&nbsp;Anteil am Flurst&uuml;ck</p>";
-				}
-			echo "\n</td>";
-
-			echo "\n<td>"; // outer rechte Spalte
-				if ($idanzeige) {
-					linkgml($gkz, $rowan["s_gml"], "Buchungsstelle", "ax_buchungsstelle");
-					echo "<br>";
-					linkgml($gkz, $rowan["g_gml"], "Buchungsblatt", "");
-				}
-				echo "\n\t<br>"
-				."\n\t<p class='nwlink noprint'>";
-					if ($showkey) {echo "<span class='key'>".$blattkeyber."</span> ";}
-					echo "\n\t\t<a href='alkisbestnw.php?gkz=".$gkz."&amp;gmlid=".$rowan["g_gml"];
-						if ($idanzeige) {echo "&amp;id=j";}
-						if ($showkey)   {echo "&amp;showkey=j";}
-						echo "' title='Grundbuchnachweis mit Eigent&uuml;merangabe'>".$blattartber
-						." <img src='ico/GBBlatt_link.png' width='16' height='16' alt=''>"
-					."</a>";
-				echo "\n\t</p>"
-			."\n\t</td>"
-		."\n</tr>"
-		."\n</table>";
-
-		if ($blattkeyber != 1000) {
-			echo "\n<p>Blattart: ".$blattartber." (".$blattkeyber.").<br>"; 
-		}
-
-		if ($nrpl != "") {
-			echo "\n<p class='nrap' title='Nummer im Aufteilungsplan'>Nummer <span class='wichtig'>".$nrpl."</span> im Aufteilungsplan.</p>";
-		}
-
-		if ($sond != "") {
-			echo "\n<p class='sond' title='Sondereigentum'>Verbunden mit dem Sondereigentum<br>".$sond."</p>";
-		}
-
-		if ($eig == "j") {
-			$n = eigentuemer($rowan["g_gml"], true, ""); // mit Adresse
-		}
-		$an++;	
+	$verfolg=array(); // Ein (zunÃ€chst leeres) Array fÃŒr weitere GML-IDs anlegen
+	while($rowan = pg_fetch_assoc($resber)) { // Loop durch Result von berechtigte BS
+		$hgml=$rowan["hgml"]; // GML-ID der berechtigten Buchungs-Stelle
+		$gezeigt = buchung_anzg($hgml, $eig, false, $gml_fs); // Die herrschende Buchung anzeigen wenn nicht fiktiv
+		$an++;
+
+		$weitere=ber_bs_zaehl($hgml); 
+		if ($weitere > 0) { // gibt es WEITERE berechtigte Buchungen dazu?
+		//	if ($debug > 2) {echo "<p class='dbg'>Weitere ".$weitere." zu verfolgende Buchungen gefunden. F&uuml;ge an:<br>Vorher ".count($verfolg)."</p>";}
+
+			$verfolg[] = $hgml; // neuen Wert fÃŒr weitere Verfolgung in Array anfÃŒgen
+
+		//	if ($debug > 2) {echo "<p class='dbg'>Nachher ".count($verfolg)."</p>";}
+
+	//	} else {
+	//		if ($debug > 2) {echo "<p class='dbg'>Auf Stufe ".$stufe." untersucht. Keine weitere abhÃ€ngigen Buchungen zu ".$hgml.".</p>";}
+		}
 	}
 	pg_free_result($resber);
-	return;
-}
-
+	return $verfolg; // weitere zu verfolgende GML-ID zurÃŒck geben
+}
 
 function kurz_namnr($lang) {
@@ -241,6 +278,6 @@
 	$kurz=str_replace(".00","",$lang); // leere Stufen (nur am Ende)
 	$kurz=str_replace("0000","",$kurz); // ganz leer (am Anfang)
-	$kurz=ltrim($kurz, "0"); // fuehrende Nullen am Anfang
-	$kurz=str_replace(".0",".",$kurz); // fuehrende Null jeder Stufe
+	$kurz=ltrim($kurz, "0"); // fuehr. Nullen
+	$kurz=str_replace(".0",".",$kurz); // fuehr. Null jeder Stufe
 	$kurz=rtrim($kurz); // Leerzeichen hinten
 	// echo "/n<p class='dbg'> lang='".$lang."'</p>/n<p class='dbg'> kurz='".$kurz."'</p>";
@@ -279,6 +316,7 @@
 	$altbvnr="";
 	$j=0;
-	while($rowf = pg_fetch_array($resf)) {
-		$flur=str_pad($rowf["flurnummer"], 3, "0", STR_PAD_LEFT);
+	while($rowf = pg_fetch_assoc($resf)) {
+	//	$flur=str_pad($rowf["flurnummer"], 3, "0", STR_PAD_LEFT);
+		$flur= $rowf["flurnummer"];
 		$fskenn=$rowf["zaehler"];
 		if ($rowf["nenner"] != "") { // Bruch
@@ -334,5 +372,5 @@
 function eigentuemer($gmlid, $mitadresse, $lnkclass) {
 	// Tabelle mit Eigentuemerdaten zu einem Grundbuchblatt ausgeben
-	// Sp.1 = Namennummer, Sp. 2 = Name / Adresse, Sp. 3 = Link
+	//  Sp.1="EigentÃŒmer" Sp.2=NamNr, Sp.3=Name/Adresse, Sp.4=Link
 	// Parameter:
 	//	$gmlid = ID GB-Blattes
@@ -344,12 +382,11 @@
 	global $debug, $gkz, $showkey;
 
-	// Link ÃŒber Java-Class? (Ja in alkisinlayausk.php, sonst normal)
 	if ($lnkclass == "") {
 		$lnkvor = "";
 		$lnknach = "";
-	} else {
+	} else { // Link ÃŒber Java-Class "imFenster" aus alkisinlayausk.php
 		$lnkvor  = "javascript:".$lnkclass."(\"";
 		$lnknach = "\")";
-	} // Beispiel-Link href='javascript:imFenster(\"alkislage.php?gkz= ... ."\")'>xxx ";
+	}
 
 	$sqln="SELECT n.gml_id, n.laufendenummernachdin1421 AS lfd, n.zaehler, n.nenner, n.artderrechtsgemeinschaft AS adr, n.beschriebderrechtsgemeinschaft as beschr, n.eigentuemerart, n.anlass, n.benennt, wn.v AS adrv, we.v AS eiartv "
@@ -358,51 +395,52 @@
 	."LEFT JOIN alkis_wertearten we ON cast(n.eigentuemerart AS character varying)=we.k AND we.element='ax_namensnummer' AND we.bezeichnung='eigentuemerart' "
 	."WHERE n.istbestandteilvon= $1 AND n.endet IS NULL ORDER BY n.laufendenummernachdin1421;";
-
-	$v = array($gmlid); // 16 Stellen bei Relationen
+	// +++	LEFT JOIN bis ax_Person statt Person als Schleife zu holen, 
+	//		VerknÃŒpfungsfeld "benennt" ist leer bei "Beschrieb der Rechtsgemeinschaft".
+
+	$v = array($gmlid); // GB-Blatt
 	$resn = pg_prepare("", $sqln);
 	$resn = pg_execute("", $v);
 
 	if (!$resn) {
-		echo "\n<p class='err'>Fehler bei Eigent&uuml;mer</p>";
-		// kein Fehler bei Blattarten > 1000
+		echo "\n<p class='err'>Fehler bei Eigent&uuml;mer</p>"; // kein Fehler bei Blattarten > 1000
 		//if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".$sqln."<br>$1=gml= '".$gmlid."'</p>";}
 	}
 
 	$n=0; // Z.NamNum.
-	while($rown = pg_fetch_array($resn)) {
-		if($n == 0) { // Die Ãberschrift nur, wenn auch ein Inhalt folgt
-			echo "\n\n<h3><img src='ico/Eigentuemer_2.png' width='16' height='16' alt=''> Angaben zum Eigentum</h3>"
-			."\n<table class='eig'>";
-		}
+	while($rown = pg_fetch_assoc($resn)) {
 		$gmlnn=$rown["gml_id"];
 		$namnum=kurz_namnr($rown["lfd"]);
 		$rechtsg=$rown["adr"];
-		echo "\n<tr>"
-			."\n\t<td class='nanu' title='Namens-Nummer'>\n\t\t<p>" // Sp. 1
-				.$namnum."&nbsp;" // VOR die Tabelle: "EigentÃŒmer"
-			."</p>\n\t</td>"
-			. "\n\t<td>"; // Sp. 2
-			if ($rechtsg != "" ) {
+		echo "\n\t<tr>";
+			if($n == 0) { // erste EigentÃŒmer-Zeile zu einer Buchung
+				echo "\n\t\t<td class='ll'><img src='ico/Eigentuemer_2.png' width='16' height='16' alt=''> Eigent&uuml;mer:</td>"; // 1
+			} else { // Folgezeile
+				echo "\n\t\t<td class='ll'>&nbsp;</td>"; // 1
+			}
+
+			if ($rechtsg != "" ) { // Erbengemeinschaft usw.
+				echo "\n\t\t<td colspan='2'>"; // 2-3
 				if ($rechtsg == 9999) { // sonstiges
-					echo "\n\t\t<p class='zus' title='Beschrieb der Rechtsgemeinschaft'>".htmlentities($rown["beschr"], ENT_QUOTES, "UTF-8")."</p>";
+					echo "\n\t\t\t<p class='zus' title='Beschrieb der Rechtsgemeinschaft'>".htmlentities($rown["beschr"], ENT_QUOTES, "UTF-8")."</p>";
 				} else {
-					echo "\n\t\t<p class='zus' title='Art der Rechtsgemeinschaft'>".htmlentities($rown["adrv"], ENT_QUOTES, "UTF-8")."</p>";
+					echo "\n\t\t\t<p class='zus' title='Art der Rechtsgemeinschaft'>".htmlentities($rown["adrv"], ENT_QUOTES, "UTF-8")."</p>";
 				}
-			}
-			//if ($rown["anlass"] > 0 ) {echo "<p>Anlass=".$rown["anlass"]."</p>";} // TEST:
-
-			// Schleife Ebene 2: andere Namensnummern
-			// Beziehung   ax_namensnummer >bestehtAusRechtsverhaeltnissenZu>  ax_namensnummer 
-
-			// Die Relation 'Namensnummer' besteht aus RechtsverhÃ€ltnissen zu 'Namensnummer' sagt aus, 
-			// dass mehrere Namensnummern zu einer Rechtsgemeinschaft gehÃ¶ren kÃ¶nnen. 
-			// Die Rechtsgemeinschaft selbst steht unter einer eigenen AX_Namensnummer, 
-			// die zu allen Namensnummern der Rechtsgemeinschaft eine Relation besitzt.
+			} else { // Namensnummer
+				echo "\n\t\t<td class='nanu' title='Namens-Nummer'>\n\t\t\t<p>".$namnum."&nbsp;</p>\n\t\t</td>" // 2
+				. "\n\t\t<td>"; // 3
+
+			}
+			//if ($rown["anlass"] > 0 ) {echo "<p>Anlass=".$rown["anlass"]."</p>";}
+
+			// Andere Namensnummern?  Relation:  ax_namensnummer >bestehtAusRechtsverhaeltnissenZu>  ax_namensnummer 
+			// Die Relation 'Namensnummer' besteht aus RechtsverhÃ€ltnissen zu 'Namensnummer' sagt aus, dass mehrere Namensnummern zu einer Rechtsgemeinschaft gehÃ¶ren kÃ¶nnen. 
+			// Die Rechtsgemeinschaft selbst steht unter einer eigenen AX_Namensnummer, die zu allen Namensnummern der Rechtsgemeinschaft eine Relation besitzt.
 
 		// Schleife 2: P e r s o n
+		// +++ bei SQL Namensnummer oben gleich mit JOIN dazu holen, statt dieser Schleife
 		// Beziehung: ax_person  <benennt<  ax_namensnummer
-		$sqlp="SELECT gml_id, nachnameoderfirma, vorname, geburtsname, to_char(cast(geburtsdatum AS date),'DD.MM.YYYY') AS geburtsdatum, namensbestandteil, akademischergrad "
+		$sqlp="SELECT nachnameoderfirma, vorname, geburtsname, to_char(cast(geburtsdatum AS date),'DD.MM.YYYY') AS geburtsdatum, namensbestandteil, akademischergrad "
 		."FROM ax_person WHERE gml_id= $1 AND endet IS NULL;";
-		$gmlpers=$rown["benennt"];
+		$gmlpers=$rown["benennt"]; // leer bei RechtsverhÃ€ltnis
 		$v = array($gmlpers); // gml_id von ax_person
 		$resp = pg_prepare("", $sqlp);
@@ -414,5 +452,5 @@
 
 		$i=0; // cnt Person
-		while($rowp = pg_fetch_array($resp)) { // Schleife weglassen? nn >benennt> Person ist KEIN Array!
+		while($rowp = pg_fetch_assoc($resp)) { // Schleife weglassen: "benennt" ist KEIN Array!
 			$diePerson=""; //++ Anrede?
 			if ($rowp["akademischergrad"] <> "") {$diePerson=$rowp["akademischergrad"]." ";}
@@ -423,40 +461,31 @@
 			if ($rowp["geburtsname"] <> "") {$diePerson.=", geb. ".$rowp["geburtsname"];}
 			$diePerson=htmlentities($diePerson, ENT_QUOTES, "UTF-8"); // Umlaute
-
-			if ($i > 0) { // Spalte 1 enthÃ€lt die Namensnummer, nur in Zeile 0
-				echo "\n<tr>\n\t<td>&nbsp;</td>\n\t<td>";
-			}
-			// Spalte 2 = Angaben
 			$eiartkey=$rown["eigentuemerart"]; // Key
 			$eiart=$rown["eiartv"]; // Value
-			echo "\n\t\t<p class='geig' title='Eigent&uuml;merart: ".$eiart."'>".$diePerson."</p>\n\t</td>";
-
-			// Spalte 3 = Link
-			echo "\n\t<td>\n\t\t<p class='nwlink noprint'>";
-				if ($showkey AND $eiartkey != '') { // oft leer
-					echo "<span class='key' title='Eigent&uuml;merart'>".$eiartkey."</span> ";
-				}
-				echo "\n\t\t\t<a href='".$lnkvor."alkisnamstruk.php?gkz=".$gkz."&amp;gmlid=".$rowp[0];
+
+			echo "\n\t\t\t<p class='geig' title='Eigent&uuml;merart: ".$eiart."'>".$diePerson."</p>\n\t\t</td>"; // 3 - Person in Sp.3 hinter NamNum (Sp.2)
+			echo "\n\t\t<td>\n\t\t\t<p class='nwlink noprint'>"; // 4
+				if ($showkey AND $eiartkey != '') {echo "<span class='key' title='Eigent&uuml;merart'>".$eiartkey."</span> ";}
+				echo "\n\t\t\t\t<a href='".$lnkvor."alkisnamstruk.php?gkz=".$gkz."&amp;gmlid=".$gmlpers;
 				if ($showkey) {echo "&amp;showkey=j";}
 				if ($eiartkey == "") {$eiart="Eigent&uuml;mer" ;} // Default. Ersatz-Text, wenn nicht gefÃŒllt
 				echo $lnknach."' title='vollst&auml;ndiger Name und Adresse eines Eigent&uuml;mers'>".$eiart
-				." <img src='ico/Eigentuemer.png' width='16' height='16' alt=''></a>\n\t\t</p>"
-			."\n\t</td>\n</tr>";
+				." <img src='ico/Eigentuemer.png' width='16' height='16' alt=''></a>\n\t\t\t</p>"
+			."\n\t\t</td>" // 4
+			."\n\t</tr>";
 
 			if ($mitadresse) {
-				// Schleife 3:  A d r e s s e  (OPTIONAL)
+				// Schleife 3: optional  A d r e s s e  zur Person
 				$sqla ="SELECT a.gml_id, a.ort_post, a.postleitzahlpostzustellung AS plz, a.strasse, a.hausnummer, a.bestimmungsland "
 				."FROM ax_anschrift a JOIN ax_person p ON a.gml_id=ANY(p.hat) WHERE p.gml_id= $1 AND a.endet IS NULL AND p.endet IS NULL ORDER BY a.beginnt DESC LIMIT 2;";
-				$gmlp=$rowp["gml_id"]; // Person
-				$v = array($gmlp);
+				$v = array($gmlpers);
 				$resa = pg_prepare("", $sqla);
 				$resa = pg_execute("", $v);
-
 				if (!$resa) {
 					echo "\n\t<p class='err'>Fehler bei Adressen</p>";
-					if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".$sqla."<br>$1=gml= '".$gmlp."'</p>";}
+					if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".$sqla."<br>$1=gml= '".$gmlpers."'</p>";}
 				}
 				$j=0;
-				while($rowa = pg_fetch_array($resa)) {
+				while($rowa = pg_fetch_assoc($resa)) {
 					$j++;
 					if ($j == 1) { // erste ("jÃŒngste") Adresse anzeigen
@@ -473,15 +502,21 @@
 						$land=htmlentities($rowa["bestimmungsland"], ENT_QUOTES, "UTF-8");
 
-						echo "\n<tr>\n\t<td>&nbsp;</td>"; //Sp. 1
-						echo "\n\t<td><p class='gadr'>"; //Sp. 2
-						if ($str.$hsnr != "") {echo $str." ".$hsnr."<br>";}
-						if ($plz.$ort != "") {echo $plz." ".$ort;}
-						if ($land != "" and $land != "DEUTSCHLAND") {echo ", ".$land;}
-						echo "</p></td>\n\t<td>"; // Sp. 3
-						echo "&nbsp;</td>\n</tr>";
+						echo "\n\t<tr>"
+							."\n\t\t<td class='ll'>&nbsp;</td>" // 1
+							."\n\t\t<td>&nbsp;</td>" // 2
+							."\n\t\t<td><p class='gadr'>"; // 3
+							if ($str.$hsnr != "") {echo $str." ".$hsnr."<br>";}
+							if ($plz.$ort != "") {echo $plz." ".$ort;}
+							if ($land != "" and $land != "DEUTSCHLAND") {echo ", ".$land;}
+						echo "</p></td>" // 3
+							."\n\t\t<td>&nbsp;</td>\n\t</tr>"; // 4
 					} else { // manchmal doppelte Angaben
-						echo "\n<tr>\n\t<td>&nbsp;</td>\n\t<td><p class='dbg' title='Siehe Auskunft zur Person'>weitere Adresse</p></td>\n\t<td>&nbsp;</td>\n</tr>";
-					}
-				}
+						echo "\n\t<tr>"
+							."\n\t\t<td class='ll'>&nbsp;</td>" // 1
+							."\n\t\t<td>&nbsp;</td>" // 2
+							."\n\t\t<td><p class='dbg' title='Siehe Auskunft zur Person'>weitere Adresse</p></td>" // 3
+							."\n\t\t<td>&nbsp;</td>\n\t</tr>"; // 4
+					}
+				} // Ende Loop Adresse zur Person
 				pg_free_result($resa);
 			}
@@ -489,35 +524,29 @@
 			$i++; // cnt Person
 
-			// Anteil als eigene Tab-Zeile:
 			$zaehler=$rown["zaehler"];
-			if ($zaehler != "") {
+			if ($zaehler != "") { // Anteil als eigene Tab-Zeile
 				$zaehler=str_replace(".", ",", $zaehler); // Dezimal-KOMMA wenn dem Notar der Bruch nicht reicht
 				$nenner=str_replace(".", ",", $rown["nenner"]);
 				$comnt="Anteil der Berechtigten in Bruchteilen (Par. 47 GBO) an einem gemeinschaftlichen Eigentum (Grundst&uuml;ck oder Recht).";
-				echo "\n<tr>\n\t<td>&nbsp;</td>" // Sp. 1
-				."\n\t<td><p class='avh' title='".$comnt."'>".$zaehler."/".$nenner." Anteil</p></td>"
-				."\n\t<td>&nbsp;</td>\n</tr>"; // Sp. 3
+				echo "\n\t<tr>"
+				."\n\t\t<td class='ll'>&nbsp;</td>" // 1
+				."\n\t\t<td>&nbsp;</td>" // 2
+				."\n\t\t<td><p class='avh' title='".$comnt."'>".$zaehler."/".$nenner." Anteil</p></td>" // 3
+				."\n\t\t<td>&nbsp;</td>\n\t</tr>"; // 4
 			}
 		} // End Loop Person
-		if ($i == 0) { // Keine Person. Das kommt vor hinter der Zeile "Erbengemeinschaft" und ist dann KEIN Fehler
-			if ($rechtsg != 9999) {
+		pg_free_result($resp);
+
+		if ($i == 0) { // KEINE Person. benennt ist leer. Das kommt vor hinter der Zeile "Erbengemeinschaft" und ist dann KEIN Fehler
+			if ($rechtsg == 9999) {
+				if ($debug > 1) {echo "\n\t\t\t<p class='dbg'>Rechtsgemeinschaft = '".$rechtsg."'</p>";}
+			} else {
 				echo "\n<p class='err'>(Die Person mit der ID '".$gmlpers."' fehlt im Datenbestand)</p>";
-			} else {
-				if ($debug > 1) { // nur bei Entwicklung
-					echo "\n\t\t<p class='dbg'>Rechtsgemeinschaft = '".$rechtsg."'</p>";
-				}
-			}
-			echo "</td>\n\t<td>&nbsp;</td>\n</tr>";
+			}
+			echo "</td>\n\t\t<td>&nbsp;</td>\n\t</tr>";
 		}
 		$n++; // cnt NamNum
 	} // End Loop NamNum
-	if($n > 0) {
-		echo "\n</table>";
-	} else { // $n == 0, bei "Fiktives Blatt" KEIN Fehler 
-		if ($debug > 1) {
-			echo "\n<p class='dbg'>keine Namensnummern zum Blatt</p>";
-			//if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".$sqln."<br>$1=gml(Blatt)= '".$gmlid."'</p>";}
-		}
-	}
+
 	pg_free_result($resn);
 	return $n; 
@@ -539,5 +568,5 @@
 	}
 	$i=0;
-	while($row = pg_fetch_array($res)) {
+	while($row = pg_fetch_assoc($res)) {
 		echo " ".$row["v"];
 		$i++;	
Index: trunk/info/info/alkisn/alkisinlaybaurecht.php
===================================================================
--- trunk/info/info/alkisn/alkisinlaybaurecht.php	(revision 400)
+++ trunk/info/info/alkisn/alkisinlaybaurecht.php	(revision 402)
@@ -11,7 +11,5 @@
 */
 session_start();
- 
 $cntget = extract($_GET); // Parameter in Variable umwandeln
-
 // strikte Validierung aller Parameter
 if (!isset($gmlid) or !preg_match('#^[0-9A-Za-z]{16}$#', $gmlid)) {die("Eingabefehler gmlid");}
@@ -20,5 +18,5 @@
 require_once("alkis_conf_location.php");
 if ($auth == "mapbender") {require_once($mapbender);}
-?>
+echo <<<END
 <!doctype html>
 <html lang="de">
@@ -35,9 +33,7 @@
 	}
 	</script>
-	</script>
 </head>
 <body>
-
-<?php
+END;
 $con = pg_connect($dbconn." options='--application_name=ALKIS-Auskunft_alkisinlaybaurecht.php'");
 if (!$con) echo "\n<p class='err'>Fehler beim Verbinden der DB</p>";
@@ -60,5 +56,5 @@
 echo "\n<h2><img src='ico/Gericht.png' width='16' height='16' alt=''> Bau-, Raum- oder Bodenordnungsrecht</h2>";
 
-if ($row = pg_fetch_array($res)) {
+if ($row = pg_fetch_assoc($res)) {
 	echo "\n<table>"
 		."\n<tr>"
Index: trunk/info/info/alkisn/alkisbaurecht.php
===================================================================
--- trunk/info/info/alkisn/alkisbaurecht.php	(revision 400)
+++ trunk/info/info/alkisn/alkisbaurecht.php	(revision 402)
@@ -8,8 +8,8 @@
 	2017-06-08 Validierung Eingabeparameter, Feinkorrekturen
 	2017-10-09 Sauber filtern auf endet IS NULL
+	2018-04-23 &nodebug
 */
 session_start();
-
-$showkey="n"; // Var. aus Parameter initalisieren
+$showkey="n"; $nodebug=""; // Var. aus Parameter initalisieren
 $cntget = extract($_GET); // Parameter in Variable umwandeln
 
@@ -19,4 +19,5 @@
 if (!preg_match('#^[j|n]{0,1}$#', $showkey)) {die ("Eingabefehler showkey");}
 if ($showkey == "j") {$showkey=true;} else {$showkey=false;}
+if (!preg_match('#^j{0,1}$#', $nodebug)) {die("Eingabefehler nodebug");}
 
 require_once("alkis_conf_location.php");
@@ -35,4 +36,8 @@
 <body>
 END;
+
+// Mit URL-Parameter "&nodebug=j" kann man die Entwicklungsumgebung (in Conf definiert) ausschalten.
+// 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_alkisbaurecht.php'");
@@ -55,5 +60,5 @@
 	if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = ".$gmlid."</p>";}
 }
-if ($row = pg_fetch_array($res)) {
+if ($row = pg_fetch_assoc($res)) {
 	$artfest=$row["adfkey"];  // Art der Festlegung, Key
 	$verfnr=$row["rechtbez"]; // Verfahrens-Nummer
@@ -147,5 +152,5 @@
 
 	$fscnt=0;
-	while($row = pg_fetch_array($res)) {
+	while($row = pg_fetch_assoc($res)) {
 		$fscnt++;
 		echo "\n<tr>"
