Index: trunk/info/info/alkisn/alkisbestnw.php
===================================================================
--- trunk/info/info/alkisn/alkisbestnw.php	(revision 386)
+++ trunk/info/info/alkisn/alkisbestnw.php	(revision 387)
@@ -8,13 +8,21 @@
 	2016-02-24 Version fuer norGIS-ALKIS-Import
 	2016-11-29 HTML5, Gemeinsam genutzte Datenbanken ermÃ¶glichen, Markierung der Sortierung
+	2017-06-01 Function "eigentuemer" ohne Parameter $con
+	2017-06-08 Validierung Eingabeparameter, Farbwechsel der Tabelle je GrundstÃŒck, Feinschliff und HTML-Profilierung
 */
 session_start();
-$id="n";
-$cntget = extract($_GET);
+
+$showkey="n"; // Var. initalisieren
+$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");}
+if (!isset($gkz) or !preg_match('#^[0-9]{3}$#', $gkz)) {die("Eingabefehler gkz");}
+if (!preg_match('#^[j|n]{0,1}$#', $showkey)) {die ("Eingabefehler showkey");}
+if ($showkey == "j") {$showkey=true;} else {$showkey=false;}
+
 require_once("alkis_conf_location.php");
 if ($auth == "mapbender") {require_once($mapbender);}
 include("alkisfkt.php");
-$keys = isset($_GET["showkey"]) ? $_GET["showkey"] : "n";
-if ($keys == "j") {$showkey=true;} else {$showkey=false;}
 ?>
 <!doctype html>
@@ -22,4 +30,5 @@
 <head>
 	<meta charset="utf-8">
+	<meta name="viewport" content="width=device-width, initial-scale=1.0">
 	<title>ALKIS Bestandsnachweis</title>
 	<link rel="stylesheet" type="text/css" href="alkisauszug.css">
@@ -30,12 +39,9 @@
 		}
 	</script>
-	<style type='text/css' media='print'>
-		.noprint {visibility: hidden;}
-	</style>
 </head>
 <body>
 <?php
 $con = pg_connect($dbconn." options='--application_name=ALKIS-Auskunft_alkisbestnw.php'");
-if (!$con) echo "<p class='err'>Fehler beim Verbinden der DB</p>\n";
+if (!$con) echo "\n<p class='err'>Fehler beim Verbinden der DB</p>";
 
 // G R U N D B U C H
@@ -54,6 +60,6 @@
 $res = pg_execute("", $v);
 if (!$res) {
-	echo "<p class='err'>Fehler bei Grundbuchdaten.</p>";
-	if ($debug > 2) {echo "<p class='dbg'>SQL=<br>".$sql."<br>$1 = gml_id = '".$gmlid."'</p>";}
+	echo "\n<p class='err'>Fehler bei Grundbuchdaten.</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)) {
@@ -61,40 +67,39 @@
 	$blattart=$row["blattartv"];
 
-	echo "<p class='gbkennz'>ALKIS Bestand ".$row["bezirk"]." - ".$row["nr"]."&nbsp;</p>\n"; // Balken
+	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
 		if ($blattkey == 1000) {
-			echo "\n\t<table class='kennzgb' title='Bestandskennzeichen'>";
+			echo "\n\t\t<table class='kennzgb' title='Bestandskennzeichen'>";
 		} else {
-			echo "\n\t<table class='kennzgbf' title='Bestandskennzeichen'>"; // dotted
+			echo "\n\t\t<table class='kennzgbf' title='Bestandskennzeichen'>"; // dotted
 		}
-			echo "\n\t<tr>"
-				."\n\t\t<td class='head'>"; // .d nicht gefÃŒllt
+			echo "\n\t\t<tr>"
+				."\n\t\t\t<td class='head'>"; // .d nicht gefÃŒllt
 				if ($showkey) {echo "<span class='key'>".$row["stellenart"]."&nbsp;</span>";}
 				echo $row["stellev"]."</td>";
-				echo "\n\t\t<td class='head'>Bezirk</td>"
-				."\n\t\t<td class='head' title='".htmlentities($row["blattartd"], ENT_QUOTES, "UTF-8")."'>";
+				echo "\n\t\t\t<td class='head'>Bezirk</td>"
+				."\n\t\t\t<td class='head' title='".htmlentities($row["blattartd"], ENT_QUOTES, "UTF-8")."'>";
 				if ($showkey) {echo "<span class='key'>".$blattkey."&nbsp;</span>";}
 				echo $blattart."</td>"
-			."\n\t</tr>\n\t<tr>"
-				."\n\t\t<td title='Amtsgerichtsbezirk'>";
+			."\n\t\t</tr>\n\t\t<tr>"
+				."\n\t\t\t<td title='Amtsgerichtsbezirk'>";
 				if ($showkey) {echo "<span class='key'>".$row["stelle"]."</span><br>";}
 				echo htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8")."</td>"
-				."\n\t\t<td title='Grundbuchbezirk'>";
+				."\n\t\t\t<td title='Grundbuchbezirk'>";
 				if ($showkey) {echo "<span class='key'>".$row["bezirk"]."</span><br>";}
 				echo htmlentities($row["beznam"], ENT_QUOTES, "UTF-8")."</td>"
-				."\n\t\t<td title='Grundbuch-Blatt'><span class='wichtig'>".$row["nr"]."</span></td>"
-			."\n\t</tr>"
-		."\n\t</table>"
-		."\n\n\t</td>\n\t<td>"
+				."\n\t\t\t<td title='Grundbuch-Blatt'><span class='wichtig'>".$row["nr"]."</span></td>"
+			."\n\t\t</tr>"
+		."\n\t\t</table>"
+		."\n\t</td>\n\t<td>&nbsp;"
 	."\n\t</td>\n</tr>\n</table>";
 }
 
 if ($blattkey == 5000) { // fikt. Blatt
-	echo "\n<p>Keine Angaben zum Eigentum bei fiktivem Blatt.</p>\n";
+	echo "\n<p>Keine Angaben zum Eigentum bei fiktivem Blatt.</p>";
 } else {
 	// E I G E N T U E M E R
-	echo "\n\n<h3><img src='ico/Eigentuemer_2.png' width='16' height='16' alt=''> Angaben zum Eigentum</h3>";
-	$n = eigentuemer($con, $gmlid, true, ""); // MIT Adressen.
+	$n = eigentuemer($gmlid, true, ""); // MIT Adressen.
 	if ($n == 0) { // keine NamensNr, kein Eigentuemer
 		echo "\n<p class='err'>Keine Namensnummer gefunden.</p>"
@@ -104,20 +109,19 @@
 
 // Vorab pruefen, ob der Fall "Rechte an .." vorliegt.
-if ($blattkey == 1000) { // GB-Blatt  <istBestandteilVon<  sh=herrschend  >an>  sd=dienend
-	$sql="SELECT count(sd.laufendenummer) AS anzahl
-	FROM ax_buchungsstelle sh JOIN ax_buchungsstelle sd ON (sd.gml_id=ANY(sh.an) OR sd.gml_id=ANY(sh.zu)) 
-	WHERE sh.istbestandteilvon= $1 AND sd.endet IS NULL AND sh.endet IS NULL;";
+if ($blattkey == 1000) { // GB-Blatt  <istBestandteilVon<  sh=herrschend  >an/zu>  sd=dienend
+	$sql="SELECT count(sd.laufendenummer) AS anzahl "
+	."FROM ax_buchungsstelle sh JOIN ax_buchungsstelle sd ON (sd.gml_id=ANY(sh.an) OR sd.gml_id=ANY(sh.zu)) "
+	."WHERE sh.istbestandteilvon= $1 AND sd.endet IS NULL AND sh.endet IS NULL;";
 
 	$v=array($gmlid); // GB-Blatt
 	$res=pg_prepare("", $sql);
 	$res=pg_execute("", $v);
-	if (!$res) echo "<p class='err'>Fehler bei Suche nach Buchungen.</p>\n";
+	if (!$res) echo "\n<p class='err'>Fehler bei Suche nach Buchungen.</p>";
 	$row=pg_fetch_array($res);
 	$anz=$row["anzahl"];
-	//echo "<p>Zeilen : ".$anz." zu Blattart ".$blattkey."</p>";
 } else { // 2000: Katasterblatt, 3000: Pseudoblatt, 5000: Fiktives Blatt
 	$anz=0;
 }
-if ($anz > 0) {
+if ($anz > 0) { // auch Rechte: dann erweiterter Tabellen-Kopf
 	echo "\n<hr>\n\n<h3><img src='ico/Flurstueck.png' width='16' height='16' alt=''> Rechte und Flurst&uuml;cke</h3>"
 	."\n<table class='fs'>"
@@ -125,5 +129,5 @@
 		."\n\t<td>&nbsp;</td>"
 		."\n\t<td class='dien' title='herrschendes Grundst&uuml;ck'>herrschende Buchungsart</td>"
-		."\n\t<td>&nbsp;</td>"
+		."\n\t<td class='dien'>Anteil</td>"
 		."\n\t<td class='dien'>Bezirk</td>"
 		."\n\t<td class='dien'>Blatt</td>"
@@ -132,5 +136,5 @@
 		."\n\t<td>&nbsp;</td>"
 	."\n</tr>";
-} else {
+} else { // nur FlurstÃŒcke, keine Rechte an/zu anderen Buchungen
 	echo "\n<hr>\n\n<h3><img src='ico/Flurstueck.png' width='16' height='16' alt=''> Flurst&uuml;cke</h3>"
 	."\n<table class='fs'>";
@@ -139,10 +143,10 @@
 	."\n\t<td class='heads' title='laufende Nummer Bestandsverzeichnis (BVNR) = Grundst&uuml;ck'><span class='wichtig'>BVNR</span><img src='ico/sort.png' width='10' height='10' alt='' title='prim&auml;re Sortierung'></td>"
 	."\n\t<td class='head'>Buchungsart</td>"
-	."\n\t<td class='head'>Anteil</td>"
+	."\n\t<td class='head'>&nbsp;</td>"
 	."\n\t<td class='heads'>Gemarkung</td>"
 	."\n\t<td class='heads'>Flur</td>"
 	."\n\t<td class='heads fsnr' title='Flurst&uuml;cksnummer (Z&auml;hler / Nenner)'><span class='wichtig'>Flurst.</span></td>"
-	."\n\t<td class='head fla'>Fl&auml;che</td>"
-	."\n\t<td class='head nwlink noprint' title='Link: weitere Auskunft'>weit. Auskunft</td>"
+	."\n\t<td class='head flag'>Fl&auml;che</td>"
+	."\n\t<td class='head nwlink noprint' title='Verlinkung zu anderen Nachweis-Arten und verbundenen Objekten'>weitere Auskunft</td>"
 ."\n</tr>";
 
@@ -158,13 +162,14 @@
 
 if (!$res) {
-	echo "<p class='err'>Fehler bei Buchung.</p>\n";
-	if ($debug > 2) {echo "<p class='dbg'>SQL=<br>".$sql."<br>$1 = gml_id = '". $gmlid."'</p>";}
+	echo "\n<p class='err'>Fehler bei Buchung.</p>";
+	if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = gml_id = '". $gmlid."'</p>";}
 }
 $i=0;
 $fscnt=0;
+$zpaar=false;
 while($row = pg_fetch_array($res)) { // Loop Buchungsstelle (GrundstÃŒck)
 	$lfdnr=$row["lfd"];
 	$bvnr=str_pad($lfdnr, 4, "0", STR_PAD_LEFT);
-	$gml_bs= $row["gml_id"]; // id der buchungsstelle
+	$gml_bs=$row["gml_id"]; // id der buchungsstelle
 	$bartkey=$row["buchungsart"]; // SchlÃŒsselwert
 	$bart=$row["bart"]; // BuchungsART Text dazu
@@ -176,4 +181,8 @@
 		$anteil = $row["zaehler"]."/".$row["nenner"];
 	}
+
+	if ($zpaar) {$trclass='paa';} else {$trclass='unp';} // Farbwechsel je GrundstÃŒck
+	$zpaar=!$zpaar;
+
 	// F l u r s t u e c k s d a t e n  zur direkten Buchungsstelle
 	$j = bnw_fsdaten($con, $lfdnr, $gml_bs, $bart, $anteil, true, $bartkey, $bartstory); // return=Anzahl der FS
@@ -184,26 +193,43 @@
 		//  Buchungsstelle >an/zu> (andere)Buchungsstelle >istBestandTeilVon> "FiktivesBlatt (ohne) Eigentuemer"
 
-		// andere Buchungsstellen
+		// dann andere "dienende" Buchungsstellen
+		//  sh=herrschend          sd=dienend
 		//  ax_buchungsstelle >zu> ax_buchungsstelle (des gleichen Blattes)
 		//  ax_buchungsstelle >an> ax_buchungsstelle (anderes Blatt, z.B Erbbaurecht an)
-		//  sh=herrschend          sd=dienend
-		$sql ="SELECT sd.gml_id, sd.buchungsart, sd.laufendenummer AS lfd, sd.beschreibungdesumfangsderbuchung AS udb, sd.nummerimaufteilungsplan AS nrap, sd.beschreibungdessondereigentums AS sond, wb.v AS bart "
+
+/* alte Version	
+		$sql="SELECT sd.gml_id, sd.buchungsart, sd.laufendenummer AS lfd, sd.beschreibungdesumfangsderbuchung AS udb, sd.nummerimaufteilungsplan AS nrap, sd.beschreibungdessondereigentums AS sond, wb.v AS bart "
 		."FROM ax_buchungsstelle sh JOIN ax_buchungsstelle sd ON (sd.gml_id=ANY(sh.an) OR sd.gml_id=ANY(sh.zu)) "
 		."LEFT JOIN alkis_wertearten wb ON cast(sd.buchungsart AS character varying)=wb.k AND wb.element='ax_buchungsstelle' AND wb.bezeichnung='buchungsart' "
-		."WHERE sh.gml_id= $1 AND sh.endet IS NULL AND sd.endet IS NULL ORDER BY sd.laufendenummer;";
-
-		$v=array($gml_bs);
-		$resan=pg_prepare("", $sql);
+		."WHERE sh.gml_id= $1 AND sh.endet IS NULL AND sd.endet IS NULL ORDER BY sd.laufendenummer;"; */
+
+		// Mit "UNION" um die FÃ€lle mit JOIN ÃŒber die Arrays "an" und "zu" unterscheiden zu kÃ¶nnen
+		$sql="SELECT uni.*, wb.v AS bart FROM "
+		."(SELECT sda.gml_id, sda.buchungsart, sda.laufendenummer AS lfd, sda.beschreibungdesumfangsderbuchung AS udb, sda.nummerimaufteilungsplan AS nrap, sda.beschreibungdessondereigentums AS sond, 'an' as anzu "
+		."FROM ax_buchungsstelle sha JOIN ax_buchungsstelle sda ON sda.gml_id=ANY(sha.an) "
+		."WHERE sha.gml_id= $1 AND sha.endet IS NULL AND sda.endet IS NULL "
+		."UNION SELECT sdz.gml_id, sdz.buchungsart, sdz.laufendenummer AS lfd, sdz.beschreibungdesumfangsderbuchung AS udb, sdz.nummerimaufteilungsplan AS nrap, sdz.beschreibungdessondereigentums AS sond, 'zu' as anzu "
+		."FROM ax_buchungsstelle shz JOIN ax_buchungsstelle sdz ON sdz.gml_id=ANY(shz.zu) "
+		."WHERE shz.gml_id= $1 AND shz.endet IS NULL AND sdz.endet IS NULL "
+		.") AS uni LEFT JOIN alkis_wertearten wb ON cast(uni.buchungsart AS character varying)=wb.k AND wb.element='ax_buchungsstelle' AND wb.bezeichnung='buchungsart' "
+		."ORDER BY uni.lfd;";
+	//	Testfall suchen: SELECT gml_id, zu, durch FROM ax_buchungsstelle WHERE NOT zu IS NULL OR NOT durch IS NULL;
+	//	Die Relationen "an" und "durch" kommen in der Praxis nicht vor.
+
+		$v=array($gml_bs); // gml_id der "herrschenden" Buchungs-Stelle
+		$resan=pg_prepare("", $sql); // Suche nach "dienender" Buchungsstelle
 		$resan=pg_execute("", $v);
 		if (!$resan) {
-			echo "<p class='err'>Fehler bei 'andere Buchungsstelle'.</p>\n";
-			//if ($debug > 2) {echo "<p class='dbg'>SQL=<br>".$sql."<br>$1 = gml_id = '".$gmlid."'</p>";}
+			echo "\n<p class='err'>Fehler bei 'andere Buchungsstelle'.</p>";
+			if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = '".$gml_bs."'</p>";}
 		}
+
 		$a=0; // count
 		$altbvnr=""; // Gruppenwechsel
 		while($rowan= pg_fetch_array($resan)) {
-			$lfdnran=$rowan["lfd"];		// BVNR an
+			$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 ?
 
 			// a n d e r e s   B l a t t  (an dem das aktuelle Blatt Rechte hat)
@@ -218,6 +244,6 @@
 			$fbres=pg_execute("", $v);
 			if (!$fbres) {
-				echo "<p class='err'>Fehler bei fiktivem Blatt.</p>\n";
-				if ($debug > 2) {echo "<p class='dbg'>SQL=<br>".$sql."<br>$1 = gml_id = '".$gmlid."'</p>";}			
+				echo "\n<p class='err'>Fehler bei fiktivem Blatt.</p>";
+				if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = gml_id = '".$gmlid."'</p>";}			
 			}
 			$b=0;
@@ -227,20 +253,21 @@
 				$fbbez=$fbrow["bezirk"];
 				$beznam=$fbrow["beznam"];
-				$fbblatt=$fbrow["blatt"]; // Key
-				$fbbart=$fbrow["blattartv"]; // Value
+				$fbblatt=$fbrow["blatt"];
+				$fbbartkey=$fbrow["blattart"]; // Key
+				$fbbart=$fbrow["blattartv"];  // Value
 				$b++;
 			}
 			if ($b != 1) { // Ãberwachen: genau 1?
-				echo "<p class='err'>Anzahl fiktive Bl&auml;tter zu anderer Buchungstelle = ".$b."</p>";
+				echo "\n<p class='err'>Anzahl fiktive Bl&auml;tter zu anderer Buchungstelle = ".$b."</p>";
 			}
 
 			// G r u n d b u c h d a t e n  zur  a n d e r e n  Buchungsstelle
-			echo "\n<tr>"
-				."\n\t<td>"; // Sp.1 Erbbau BVNR
+			echo "\n<tr class='".$trclass."'>"
+				."\n\t<td id='bvnr".$lfdnr."'>"; // Sp.1 Erbbau BVNR, Sprungmarke
 					if($bvnr == $altbvnr) {	// gleiches Grundstueck
 						echo "&nbsp;"; // dann Anzeige unterdruecken
 					} else {
-						echo "<a id='bvnr".$lfdnr."'></a>" // Sprungmarke
-						."<span class='wichtig'>".$bvnr."</span>"; 
+					//	echo "<a id='bvnr".$lfdnr."'></a>" // Sprungmarke
+						echo "<span class='wichtig'>".$bvnr."</span>"; 
 						$altbvnr = $bvnr; // Gruppenwechsel merken
 					}
@@ -249,29 +276,30 @@
 					if ($showkey) {echo "<span class='key'>".$row["buchungsart"]."</span> ";}
 				echo $bart." an</td>"
-				."\n\t<td>".$anteil."</td>" // Sp.3 Anteil
-				."\n\t<td class='dien'>"; // Sp.4 Gemarkg., hier Bezirk
+				."\n\t<td class='dien'>".$anteil."</td>" // Sp.3 Anteil
+				."\n\t<td class='dien' title='Grundbuch-Bezirk'>"; // Sp.4 Gemarkg., hier Bezirk
 					if ($showkey) {echo "<span class='key'>".$fbbez."</span> ";}
-					echo $beznam
+					echo htmlentities($beznam, ENT_QUOTES, "UTF-8")
 				."</td>";
-				echo "\n\t<td class='dien'>".$fbblatt."</td>" // Sp. 5 Blatt
-					."\n\t<td class='dien'>".str_pad($lfdnran, 4, "0", STR_PAD_LEFT)."</td>" // Sp.6 BVNR
-					."\n\t<td class='dien'>"; // Sp.7 Buchungsart
+				echo "\n\t<td class='dien' title='".$fbbart."'>".$fbblatt."</td>" // Sp. 5 Blatt
+					."\n\t<td class='dien' title='Bestandsverzeichnis-Nummer'>".str_pad($lfdnran, 4, "0", STR_PAD_LEFT)."</td>" // Sp.6 BVNR
+					."\n\t<td class='dien' title='Buchungsart'>"; // Sp.7 Buchungsart
 					if ($showkey) {echo "<span class='key'>".$rowan["buchungsart"]."</span> ";}
 					echo $baan." "
 				."</td>"
 				."\n\t<td>" // Sp.8 Link ("an" oder "zu"?)
-					."<p class='nwlink noprint'>an/zu"
-					." <a href='alkisbestnw.php?gkz=".$gkz."&amp;gmlid=".$fbgml;
+					."\n\t\t<p class='nwlink noprint'>".$anzu; // Recht "an" oder "zu"
+					if ($showkey) {echo " <span class='key'>".$fbbartkey."</span>";} // Blatt-Art SchlÃŒssel
+					echo "\n\t\t\t<a href='alkisbestnw.php?gkz=".$gkz."&amp;gmlid=".$fbgml;
 						if ($showkey) {echo "&amp;showkey=j";}
 						echo "#bvnr".$lfdnran // Sprungmarke auf der Seite
 						."' title='Zum Grundbuchnachweis des dienenden Blattes'>";
-						if ($showkey) {echo "<span class='key'>".$rowan["blattart"]."</span> ";}
-						echo $fbbart
-					." <img src='ico/GBBlatt_link.png' width='16' height='16' alt=''></a></p>"
-				."</td>"
+						echo $fbbart // Blatt-Art entschlÃŒsselt
+					." <img src='ico/GBBlatt_link.png' width='16' height='16' alt=''></a>\n\t\t</p>"
+				."\n\t</td>"
 			."\n</tr>"; 
 
 			// F l u r s t u e c k s d a t e n  zur  a n d e r e n  Buchungsstelle
 			// Buchungsart wird nur in erster Zeile ausgegeben, hier leer
+
 			$aj = bnw_fsdaten($con, $lfdnran, $gml_bsan, "", $anteil, false, "", ""); // return=Anz.FS
 			$fscnt=$fscnt + $aj;
@@ -284,5 +312,5 @@
 			if ($rowan["sond"] != "") {
 				echo "\n<tr>"
-					."\n\t<td class='sond' colspan=8>Verbunden mit dem Sondereigentum an: ".$rowan["sond"]."</td>"
+					."\n\t<td class='sond' colspan=8>Verbunden mit dem Sondereigentum an: ".htmlentities($rowan["sond"], ENT_QUOTES, "UTF-8")."</td>"
 				."\n</tr>";
 			}
@@ -290,9 +318,7 @@
 		}
 		if ($a == 0) {
-			echo "\n<tr>"
+			echo "\n<tr class='".$trclass."'>"
 				."\n\t<td><span class='wichtig'>".$bvnr."</span></td>"
-				."\n\t<td colspan=7>"
-					."<p class='warn'>Keine Flurst&uuml;cke zu Buchung ".$bvnr." im berechtigten Bereich.</p>"
-				."</td>"
+				."\n\t<td colspan=7><p class='warn'>Keine Flurst&uuml;cke zu Buchung ".$bvnr." im berechtigten Bereich.</p></td>"
 			."\n</tr>";
 		}
@@ -313,8 +339,8 @@
 
 if ($i == 0) {
-	echo "\n<p class='err'>Keine Buchung gefunden.</p>\n";
+	echo "\n<p class='err'>Keine Buchung gefunden.</p>";
 } else {
 	if ($i > 5 and $fscnt > 5) { // nur wenn nicht auf einen Blick zu erkennen
-		echo "\n<p class='cnt'>".$i." Buchungen mit ".$fscnt." Flurst&uuml;cken</p>\n";
+		echo "\n<p class='cnt'>".$i." Buchungen mit ".$fscnt." Flurst&uuml;cken</p>";
 	}
 }
@@ -341,15 +367,15 @@
 $resb = pg_execute("", $v);
 if (!$resb) {
-	echo "<p class='err'>Fehler bei 'Berechtigte Bl&auml;tter.</p>\n";
-	if ($debug > 2) {echo "<p class='dbg'>SQL=<br>".$sql."<br>$1 = gml_id = '".$gmlid."'</p>";}
+	echo "\n<p class='err'>Fehler bei 'Berechtigte Bl&auml;tter.</p>";
+	if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = gml_id = '".$gmlid."'</p>";}
 }
 $b=0; // count: Buchungen / BlÃ€tter
+$zpaar=false;
 while($rowb = pg_fetch_array($resb)) {
 	if ($b == 0) { // Ueberschrift und Tabelle nur ausgeben, wenn etwas gefunden wurde
-		echo "\n<h3><img src='ico/Grundbuch_zu.png' width='16' height='16' alt=''> Berechtigte Grundb&uuml;cher</h3>\n"
+		echo "\n\n<h3><img src='ico/Grundbuch_zu.png' width='16' height='16' alt=''> Berechtigte Grundb&uuml;cher</h3>"
 		."\n<table class='outer'>"
 		."\n<tr>"
 			."\n\t<td class='heads' title='lfd. Nr. auf diesem Blatt, wie im Teil Flurst&uuml;cke'><span class='wichtig'>an BVNR</span><img src='ico/sort.png' width='10' height='10' alt='' title='prim&auml;re Sortierung'></td>"
-		//	."\n\t<td class='heads'>Land</td>"
 			."\n\t<td class='head'>Dienststelle</td>"
 			."\n\t<td class='heads'>Bezirk</td>"
@@ -372,17 +398,17 @@
 	$bvnr=str_pad($lfdnr, 4, "0", STR_PAD_LEFT);
 
-	echo "\n<tr>"; // Der Teil "berechtigte GrundbÃŒcher" ist sortiert wie oberer Teil "FlurstÃŒcke"
-		echo "\n\t<td><span class='wichtig'>".$anlfdnr0."</span>";
-
-		echo "</td>"
-		//."\n\t<td>".$rowb["land"]."</td>"
+	if ($zpaar) {$trclass='paa';} else {$trclass='unp';} // Farbwechsel je Zeile = GrundstÃŒck
+	$zpaar=!$zpaar;
+
+	echo "\n<tr class='".$trclass."'>"; // Der Teil "berechtigte GrundbÃŒcher" ist sortiert wie oberer Teil "FlurstÃŒcke"
+		echo "\n\t<td><span class='wichtig'>".$anlfdnr0."</span></td>"
 		."\n\t<td>"; // Amtsgericht,Grundbuchamt
-			echo $rowb["stellev"]." ";
+			echo htmlentities($rowb["stellev"], ENT_QUOTES, "UTF-8")." ";
 			if ($showkey) {echo "<span class='key'>".$rowb["stelle"]."</span> ";}
-			echo $rowb["bezeichnung"]
+			echo htmlentities($rowb["bezeichnung"], ENT_QUOTES, "UTF-8")
 		."</td>"
 		."\n\t<td>";
 			if ($showkey) {echo "<span class='key'>".$rowb["bezirk"]."</span> ";}
-			echo $rowb["beznam"]
+			echo htmlentities($rowb["beznam"], ENT_QUOTES, "UTF-8")
 		."</td>"
 		."\n\t<td><span class='wichtig'>".$rowb["blatt"]."</span></td>"
@@ -393,8 +419,9 @@
 		."</td>"
 		."\n\t<td>"
-			."\n\t\t<p class='nwlink noprint'>"
-			."\n\t\t\t<a href='alkisbestnw.php?gkz=".$gkz."&amp;gmlid=".$gml_b."#bvnr".$lfdnr;
+			."\n\t\t<p class='nwlink noprint'>";
+// +++ SchlÃŒssel der Blatt-Art wenn showkey +++
+			echo "\n\t\t\t<a href='alkisbestnw.php?gkz=".$gkz."&amp;gmlid=".$gml_b;
 				if ($showkey) {echo "&amp;showkey=j";}
-				echo "' title='Nachweis des berechtigten Blattes an ".$blattart."'>".$rowb["blattartv"]; // oder "zu" statt "an"
+				echo "#bvnr".$lfdnr."' title='Nachweis des berechtigten Blattes an einer Buchung auf ".$blattart."'>".$rowb["blattartv"]; // "an" ggf. durch "zu" ersetzen?
 				echo " \n\t\t\t<img src='ico/GBBlatt_link.png' width='16' height='16' alt=''></a>"
 			."\n\t\t</p>"
@@ -405,10 +432,10 @@
 if ($b == 0) {
 	if ($blattkey > 2000 ) { // Warnung nicht bei Grundbuchblatt 1000 und Katasterblatt 2000
-		echo "<p class='err'>Keine berechtigten Bl&auml;tter zu ".$blattart." (".$blattkey.") gefunden.</p>";
+		echo "\n<p class='err'>Keine berechtigten Bl&auml;tter zu ".$blattart." (".$blattkey.") gefunden.</p>";
 	}
 } else {
 	echo "\n</table>";
 	if ($i > 1) {
-		echo "\n<p class='cnt'>Rechte anderer Buchungsstellen an ".$b." der ".$i." Buchungen</p>\n";
+		echo "\n<p class='cnt'>Rechte anderer Buchungsstellen an ".$b." der ".$i." Buchungen</p>";
 	}
 }
@@ -416,5 +443,5 @@
 
 <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>&nbsp;
Index: trunk/info/info/alkisn/alkisausk.php
===================================================================
--- trunk/info/info/alkisn/alkisausk.php	(revision 386)
+++ trunk/info/info/alkisn/alkisausk.php	(revision 387)
@@ -12,10 +12,12 @@
 	2016-02-24 Version fuer norGIS-ALKIS-Import
 	2016-11-29 HTML5, Gemeinsam genutzte Datenbanken ermÃ¶glichen (Berechtigung fÃŒr Gemeinde prÃŒfen)
-	Hinweis: Dies Modul wird beim Entwickler nicht mehr produktiv eingesetzt.
-		Statt dessen wird "alkisinlayauk.php" verwendet um von einer WMS-FeatureInfo in ein Fenster ÃŒberzuleiten.
+
+	H i n w e i s :  Dies Modul wird beim Entwickler nicht mehr produktiv eingesetzt.
+		Statt dessen wird "alkisinlayausk.php" verwendet um von einer WMS-FeatureInfo in ein Fenster ÃŒberzuleiten.
 		Mangels Praxis bleiben Fehler mÃ¶glicherweise unerkannt.
 */
 session_start();
 $cntget = extract($_GET);
+
 require_once("alkis_conf_location.php");
 if ($auth == "mapbender") {require_once($mapbender);}
@@ -31,7 +33,4 @@
 	<link rel="shortcut icon" type="image/x-icon" href="ico/Flurstueck.ico">
 	<title>ALKIS-Auskunft</title>
-	<style type='text/css' media='print'>
-		.noprint { visibility: hidden;}
-	</style>
 </head>
 <body>
@@ -49,6 +48,6 @@
 $res = pg_execute("", $v);
 if (!$res) {
-	echo "\n<p class='err'>Fehler bei Flurstuecksdaten.</p>\n";
-	if ($debug > 2) {echo "<p class='err'>SQL=<br>".$sql."<br>$1 = gml_id = '".$gmlid."'</p>";}
+	echo "\n<p class='err'>Fehler bei Flurstuecksdaten.</p>";
+	if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".$sql."<br>$1 = gml_id = '".$gmlid."'</p>";}
 }
 
@@ -66,5 +65,5 @@
 	$fsgem=$row["gemeinde"];
 } else {
-	echo "<p class='err'>Kein Treffer fuer gml_id=".$gmlid."</p>";
+	echo "\n<p class='err'>Kein Treffer fuer gml_id=".$gmlid."</p>";
 }
 
@@ -77,6 +76,6 @@
 	// Einer der gesetzten Filter passt nicht
 	if ($debug > 2) {
-		echo "<p class='err'>Filter Kreis='".$filtkreis."', Gemeinde='".$filtgem."'</p>";
-		echo "<p class='err'>Flstk. Kreis='".$fskrs."', Gemeinde='".$fsgem."'</p>";
+		echo "\n<p class='err'>Filter Kreis='".$filtkreis."', Gemeinde='".$filtgem."'</p>";
+		echo "\n<p class='err'>Flstk. Kreis='".$fskrs."', Gemeinde='".$fsgem."'</p>";
 	}
 	echo "\n<br><p class='stop1'>Zugriff nicht erlaubt</p>
@@ -146,6 +145,6 @@
 $res = pg_execute("", $v);
 if (!$res) {
-	echo "<p class='err'>Fehler bei Lagebezeichnung mit Hausnummer.</p>";
-	if ($debug > 2) {echo "<p class='err'>SQL=<br>".$sql."<br>$1 = gml_id = '".$gmlid."'</p>";}
+	echo "\n<p class='err'>Fehler bei Lagebezeichnung mit Hausnummer.</p>";
+	if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".$sql."<br>$1 = gml_id = '".$gmlid."'</p>";}
 }
 $j=0;
@@ -163,8 +162,8 @@
 	$j++;
 }
-echo "\n</tr>\n</table>\n";
+echo "\n</tr>\n</table>";
 
 // Flurstuecksflaeche
-echo "\n<p class='fsd'>Flurst&uuml;cksfl&auml;che: <b>".$flae."</b></p>\n";
+echo "\n<p class='fsd'>Flurst&uuml;cksfl&auml;che: <b>".$flae."</b></p>";
 
 // *** G R U N D B U C H ***
@@ -186,6 +185,6 @@
 $resg = pg_execute("", $v);
 if (!$resg) {
-	echo "\n<p class='err'>Keine Buchungen.</p>\n";
-	if ($debug > 2) {echo "<p class='err'>SQL=<br>".$sql."<br>$1 = gml_id = '".$gmlid."'</p>";}
+	echo "\n<p class='err'>Keine Buchungen.</p>";
+	if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".$sql."<br>$1 = gml_id = '".$gmlid."'</p>";}
 }
 
@@ -235,10 +234,10 @@
 	if ($blattkey == 5000) { // SchlÃŒssel Blatt-Art
 		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>\n";
+		."\n<p>Siehe weitere Grundbuchbl&auml;tter mit Rechten an dem fiktiven Blatt.</p>";
 	} else { // kein Eigent. bei fiktiv. Blatt
-		echo "\n<h3><img src='ico/Eigentuemer_2.png' width='16' height='16' alt=''> Angaben zum Eigentum</h3>\n";
+		echo "\n<h3><img src='ico/Eigentuemer_2.png' width='16' height='16' alt=''> Angaben zum Eigentum</h3>";
 
 		// Ausgabe Name in Function
-		$n = eigentuemer($con, $rowg["gml_id"], false, "imFenster"); // ohne Adressen
+		$n = eigentuemer($rowg["gml_id"], false, "imFenster"); // ohne Adressen
 
 		if ($n == 0) { // keine NamNum, kein Eigent.
Index: trunk/info/info/alkisn/alkisnamstruk.php
===================================================================
--- trunk/info/info/alkisn/alkisnamstruk.php	(revision 386)
+++ trunk/info/info/alkisn/alkisnamstruk.php	(revision 387)
@@ -8,14 +8,21 @@
 	2016-02-24 Version fuer norGIS-ALKIS-Import
 	2016-11-29 HTML5, Gemeinsam genutzte Datenbanken ermÃ¶glichen
+	2017-06-02 Validierung Eingabeparameter, Feinkorrekturen
 */
 session_start();
-$id="n";
-$multiadress="n";
-$cntget = extract($_GET);
+
+$multiadress="n"; $showkey="n"; // Var. aus Parameter initalisieren
+$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");}
+if (!isset($gkz) or !preg_match('#^[0-9]{3}$#', $gkz)) {die("Eingabefehler gkz");}
+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}$#', $multiadress)) {die ("Eingabefehler multiadress");}
+
 require_once("alkis_conf_location.php");
 if ($auth == "mapbender") {require_once($mapbender);}
 include("alkisfkt.php");
-$keys = isset($_GET["showkey"]) ? $_GET["showkey"] : "n";
-if ($keys == "j") {$showkey=true;} else {$showkey=false;}
 
 ?>
@@ -24,4 +31,5 @@
 <head>
 	<meta charset="utf-8">
+	<meta name="viewport" content="width=device-width, initial-scale=1.0">
 	<title>ALKIS Person und Adresse</title>
 	<link rel="stylesheet" type="text/css" href="alkisauszug.css">
@@ -32,7 +40,4 @@
 		}
 	</script>
-	<style type='text/css' media='print'>
-		.noprint {visibility: hidden;}
-	</style>
 </head>
 <body>
@@ -42,7 +47,7 @@
 // Balken
 echo "<p class='nakennz'>ALKIS Name id=".$gmlid."&nbsp;</p>\n"
-."\n<h2><img src='ico/Eigentuemer.png' width='16' height='16' alt=''> Person</h2>\n";
+."\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'");
-if (!$con) "\n<p class='err'>Fehler beim Verbinden der DB</p>\n";
+if (!$con) "\n<p class='err'>Fehler beim Verbinden der DB</p>";
 
 $sql="SELECT p.nachnameoderfirma, p.anrede, p.vorname, p.geburtsname, p.geburtsdatum, p.namensbestandteil, p.akademischergrad, a.v AS anrv
@@ -55,6 +60,6 @@
 
 if (!$res) {
-	echo "\n<p class='err'>Fehler bei Zugriff auf Namensnummer</p>\n";
-	if ($debug > 2) {echo "<p class='dbg'>SQL=<br>".$sql."<br>$1 = gml_id = '".$gmlid."'</p>";}
+	echo "\n<p class='err'>Fehler bei Zugriff auf Namensnummer</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)) {
@@ -64,21 +69,21 @@
 	$anrk=$row["anrede"]; // Key
 	$anr=$row["anrv"]; // Value
-	$nbest=$row["namensbestandteil"];
-	$aka=$row["akademischergrad"];
-
-	echo "<table>\n"
-		."\t<tr><td class='nhd'>Anrede:</td><td class='nam'>";
+	$nbest=htmlentities($row["namensbestandteil"], ENT_QUOTES, "UTF-8");
+	$aka=htmlentities($row["akademischergrad"], ENT_QUOTES, "UTF-8");
+
+	echo "<table>"
+		."\n\t<tr><td class='nhd'>Anrede:</td><td class='nam'>";
 		if ($showkey) {echo "<span class='key' title='Anredekennung'>(".$anrk.")</span> ";}
-		echo $anr."</td></tr>\n"
-		."\t<tr><td class='nhd'>Nachname oder Firma:</td><td class='nam'>".$nam."</td></tr>\n"
-		."\t<tr><td class='nhd'>Vorname:</td><td class='nam'>".$vor."&nbsp;</td></tr>\n"
-		."\t<tr><td class='nhd'>Geburtsname:</td><td class='nam'>".$geb."&nbsp;</td></tr>\n"
-		."\t<tr><td class='nhd'>Geburtsdatum:</td><td class='nam'>".$row["geburtsdatum"]."&nbsp;</td></tr>\n"
-		."\t<tr><td class='nhd'>Namensbestandteil:</td><td class='nam'>".$nbest."&nbsp;</td></tr>\n"
-		."\t<tr><td class='nhd'>akademischer Grad:</td><td class='nam'>".$aka."&nbsp;</td></tr>\n"
-	."\n</table>\n<hr>\n";
+		echo $anr."</td></tr>"
+		."\n\t<tr><td class='nhd'>Nachname oder Firma:</td><td class='nam'>".$nam."</td></tr>"
+		."\n\t<tr><td class='nhd'>Vorname:</td><td class='nam'>".$vor."&nbsp;</td></tr>"
+		."\n\t<tr><td class='nhd'>Geburtsname:</td><td class='nam'>".$geb."&nbsp;</td></tr>"
+		."\n\t<tr><td class='nhd'>Geburtsdatum:</td><td class='nam'>".$row["geburtsdatum"]."&nbsp;</td></tr>"
+		."\n\t<tr><td class='nhd'>Namensbestandteil:</td><td class='nam'>".$nbest."&nbsp;</td></tr>"
+		."\n\t<tr><td class='nhd'>akademischer Grad:</td><td class='nam'>".$aka."&nbsp;</td></tr>"
+	."\n</table>\n<hr>";
 
 	// A d r e s s e
-	echo "\n<h3><img src='ico/Strasse_mit_Haus.png' width='16' height='16' alt=''> Adresse</h3>\n";
+	echo "\n\n<h3><img src='ico/Strasse_mit_Haus.png' width='16' height='16' alt=''> Adresse</h3>";
 	// Es kÃ¶nnen redundante Adressen vorhanden sein, z.B. aus Migration, temporÃ€r aus LBESAS. Die letzte davon anzeigen.
 
@@ -90,6 +95,6 @@
 	$resa = pg_execute("", $v);
 	if (!$resa) {
-		echo "\n<p class='err'>Fehler bei Adressen</p>\n";
-		if ($debug > 2) {echo "<p class='err'>SQL=<br>".$sqla."<br>$1=gml(Person)= '".$gmlid."'</p>\n";}
+		echo "\n<p class='err'>Fehler bei Adressen</p>";
+		if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".$sqla."<br>$1=gml(Person)= '".$gmlid."'</p>";}
 	}
 
@@ -111,16 +116,16 @@
 				."\t<tr><td class='nhd'>Hausnummer:</td><td class='nam'>".$hsnr."</td></tr>\n"
 				."\t<tr><td class='nhd'>Land:</td><td class='nam'>".$land."</td></tr>\n"
-			."\n</table>\n<br>\n";
+			."\n</table>\n<br>";
 
 			// Name und Adresse Kompakt (im Rahmen) - Alles was man fuer ein Anschreiben braucht
-			echo "<img src='ico/Namen.png' width='16' height='16' alt='Brief' title='Anschrift'>"
-			."\n<div class='adr' title='Anschrift'>".$anr." ".$aka." ".$vor." ".$nbest." ".$nam."<br>"
-			."\n".$str." ".$hsnr."<br>"
-			."\n".$plz." ".$ort."</div>";
+			echo "\n<img src='ico/Namen.png' width='16' height='16' alt='Brief' title='Anschrift'>"
+			."\n<div class='adr' title='Anschrift'>\n\t".$anr." ".$aka." ".$vor." ".$nbest." ".$nam."<br>"
+			."\n\t".$str." ".$hsnr."<br>"
+			."\n\t".$plz." ".$ort."\n</div>";
 		}
 	}
 	pg_free_result($resa);
 	if ($j == 0) {
-		echo "\n<p class='err'>Keine Adressen.</p>\n";
+		echo "\n<p class='err'>Keine Adressen.</p>";
 	} elseif ($j > 1) {
 		echo "\n\t\t<p class='nwlink noprint'>"
@@ -137,15 +142,15 @@
 
 	// *** G R U N D B U C H ***
-	echo "\n<hr>\n<h3><img src='ico/Grundbuch_zu.png' width='16' height='16' alt=''> Grundb&uuml;cher</h3>\n";
+	echo "\n<hr>\n<h3><img src='ico/Grundbuch_zu.png' width='16' height='16' alt=''> Grundb&uuml;cher</h3>";
 	// person <benennt< namensnummer >istBestandteilVon>                Buchungsblatt
 	//                               >bestehtAusRechtsverhaeltnissenZu> namensnummer   (Nebenzweig/SonderfÃ€lle?)
 
-	$sqlg ="SELECT n.gml_id AS gml_n, n.laufendenummernachdin1421 AS lfd, n.zaehler, n.nenner, g.gml_id AS gml_g, g.bezirk, g.buchungsblattnummermitbuchstabenerweiterung as nr, g.blattart, wb.v AS blattartv, b.bezeichnung AS beznam 
-	FROM ax_person p JOIN ax_namensnummer n ON p.gml_id=n.benennt 
-	JOIN ax_buchungsblatt g ON g.gml_id=n.istbestandteilvon 
-	LEFT JOIN ax_buchungsblattbezirk b ON g.land=b.land AND g.bezirk=b.bezirk 
-	LEFT JOIN alkis_wertearten wb ON cast(g.blattart AS character varying)=wb.k AND wb.element='ax_buchungsblatt' AND wb.bezeichnung='blattart'
-	WHERE p.gml_id= $1
-	ORDER BY b.bezeichnung, g.buchungsblattnummermitbuchstabenerweiterung, n.laufendenummernachdin1421;";
+	$sqlg ="SELECT n.gml_id AS gml_n, n.laufendenummernachdin1421 AS lfd, n.zaehler, n.nenner, g.gml_id AS gml_g, g.bezirk, g.buchungsblattnummermitbuchstabenerweiterung as nr, g.blattart, wb.v AS blattartv, b.bezeichnung AS beznam "
+	."FROM ax_person p JOIN ax_namensnummer n ON p.gml_id=n.benennt "
+	."JOIN ax_buchungsblatt g ON g.gml_id=n.istbestandteilvon "
+	."LEFT JOIN ax_buchungsblattbezirk b ON g.land=b.land AND g.bezirk=b.bezirk "
+	."LEFT JOIN alkis_wertearten wb ON cast(g.blattart AS character varying)=wb.k AND wb.element='ax_buchungsblatt' AND wb.bezeichnung='blattart' "
+	."WHERE p.gml_id= $1 "
+	."ORDER BY b.bezeichnung, g.buchungsblattnummermitbuchstabenerweiterung, n.laufendenummernachdin1421;";
 	// buchungsblatt... mal mit und mal ohne fuehrende Nullen, bringt die Sortierung durcheinander
 
@@ -155,6 +160,8 @@
 
 	if (!$resg) {
-		echo "\n<p class='err'>Fehler bei Grundbuch</p>\n";
-		if ($debug > 2) {echo "\n<p class='err'>SQL=".$sqlg."</p>\n";}
+		echo "\n<p class='err'>Fehler bei Grundbuch</p>";
+		if ($debug > 2) {
+			echo "\n<p class='err'>SQL=<br>".htmlentities($sqlg, ENT_QUOTES, "UTF-8")."<br>$1 = gml_id = '".$gmlid."'</p>";
+		}
 	}
 	echo "<table class='eig'>"
@@ -165,8 +172,9 @@
 		."\n\t<td class='heads'>Namensnummer<img src='ico/sort.png' width='10' height='10' alt='' title='Sortierung'></td>"
 		."\n\t<td class='head'>Anteil</td>"
-		."\n\t<td class='head nwlink noprint' title='Link: weitere Auskunft'>weit. Auskunft</td>"
+		."\n\t<td class='head nwlink noprint' title='Verlinkung zu anderen Nachweis-Arten und verbundenen Objekten'>weitere Auskunft</td>"
 	."\n</tr>";
 
 	$i=0;
+	$zpaar=false;
 	while($rowg = pg_fetch_array($resg)) {
 		$gmln=$rowg["gml_n"];
@@ -176,21 +184,22 @@
 		$blattkey=$rowg["blattart"]; // Key
 		$blattart=$rowg["blattartv"]; // Value
-
-		echo "\n<tr>"
-			."\n\t<td class='gbl'>"; // GB-Bezirk"
+		if ($zpaar) {$trclass='paa';} else {$trclass='unp';}
+		$zpaar=!$zpaar;
+		echo "\n<tr class='".$trclass."'>"
+			."\n\t<td>"; // GB-Bezirk <td class='gbl'>
 				if ($showkey) {echo "<span class='key'>".$rowg["bezirk"]."</span> ";}
 				echo $rowg["beznam"]
 			."</td>";
 
-			echo "\n\t<td class='gbl'>"; // Blattart
+			echo "\n\t<td>"; // Blattart
 				if ($showkey) {echo "<span class='key'>".$blattkey."</span> ";}
 				echo $blattart
 			."</td>";
 
-			echo "\n\t<td class='gbl'>"; // Blatt
+			echo "\n\t<td>"; // Blatt
 				echo "<span class='wichtig'>".$rowg["nr"]."</span>"
 			."</td>";
 
-			echo "\n\t<td class='gbl'>"; // Namensnummer
+			echo "\n\t<td>"; // Namensnummer
 				if ($namnum == "") {
 					echo "&nbsp;";
@@ -200,5 +209,5 @@
 			echo "</td>";
 
-			echo "\n\t<td class='gbl'>"; // Anteil
+			echo "\n\t<td>"; // Anteil
 				if ($zae == "") {
 					echo "&nbsp;";
@@ -207,5 +216,5 @@
 				} 
 			echo "</td>"
-			."\n\t<td class='gbl'>"
+			."\n\t<td>"
 				."\n\t\t<p class='nwlink noprint'>"
 					."\n\t\t\t<a href='alkisbestnw.php?gkz=".$gkz."&amp;gmlid=".$gmlg;
@@ -222,5 +231,5 @@
 	pg_free_result($resg);
 	echo "</table>";
-	if ($i == 0) {echo "\n<p class='err'>Kein Grundbuch.</p>\n";}
+	if ($i == 0) {echo "\n<p class='err'>Kein Grundbuch.</p>";}
 } else {
 	echo "\n\t<p class='err'>Fehler! Kein Treffer f&uuml;r\n\t<a target='_blank' href='alkisrelationen.php?gkz=".$gkz."&amp;gmlid=".$gmlid."'>".$gmlid."</a>\n</p>\n\n";
Index: trunk/info/info/alkisn/alkisgebaeudenw.php
===================================================================
--- trunk/info/info/alkisn/alkisgebaeudenw.php	(revision 386)
+++ trunk/info/info/alkisn/alkisgebaeudenw.php	(revision 387)
@@ -7,13 +7,20 @@
 	2016-11-29 HTML5, Gemeinsam genutzte Datenbanken ermÃ¶glichen
 	2016-12-05 Array-Behandlung ax_gebaeude.name
+	2017-06-08 Validierung Eingabeparameter, Feinkorrekturen
 */
 session_start();
-$id="n";
-$cntget = extract($_GET);
+
+$showkey="n"; // Var. aus Parameter initalisieren
+$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");}
+if (!isset($gkz) or !preg_match('#^[0-9]{3}$#', $gkz)) {die("Eingabefehler gkz");}
+if (!preg_match('#^[j|n]{0,1}$#', $showkey)) {die ("Eingabefehler showkey");}
+if ($showkey == "j") {$showkey=true;} else {$showkey=false;}
+
 require_once("alkis_conf_location.php");
 if ($auth == "mapbender") {require_once($mapbender);}
 include("alkisfkt.php");
-$keys = isset($_GET["showkey"]) ? $_GET["showkey"] : "n";
-if ($keys == "j") {$showkey=true;} else {$showkey=false;}
 ?>
 <!doctype html>
@@ -21,15 +28,13 @@
 <head>
 	<meta charset="utf-8">
+	<meta name="viewport" content="width=device-width, initial-scale=1.0">
 	<title>ALKIS Geb&auml;udenachweis</title>
 	<link rel="stylesheet" type="text/css" href="alkisauszug.css">
 	<link rel="shortcut icon" type="image/x-icon" href="ico/Haus.ico">
-	<style type='text/css' media='print'>
-		.noprint {visibility: hidden;}
-	</style>
 </head>
 <body>
 <?php
 $con = pg_connect($dbconn." options='--application_name=ALKIS-Auskunft_alkisgebaeudenw.php'");
-if (!$con) echo "<p class='err'>Fehler beim Verbinden der DB</p>\n";
+if (!$con) echo "\n<p class='err'>Fehler beim Verbinden der DB</p>";
 
 // Flurstueck
@@ -41,6 +46,6 @@
 $resf=pg_execute("", $v);
 if (!$resf) {
-	echo "\n<p class='err'>Fehler bei Flurst&uuml;cksdaten.</p>\n";
-	if ($debug > 2) {echo "<p class='err'>SQL=<br>".$sqlf."<br>$1 = gml_id = '".$gmlid."'</p>";}
+	echo "\n<p class='err'>Fehler bei Flurst&uuml;cksdaten.</p>";
+	if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".$sqlf."<br>$1 = gml_id = '".$gmlid."'</p>";}
 }
 
@@ -56,11 +61,11 @@
 	$flstflaeche = $rowf["amtlicheflaeche"] ;
 } else {
-	echo "<p class='err'>Fehler! Kein Treffer fuer gml_id=".$gmlid."</p>";
+	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>\n";
-
-echo "\n<h2><img src='ico/Flurstueck.png' width='16' height='16' alt=''> Flurst&uuml;ck (Geb&auml;ude)</h2>\n";
+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
@@ -117,6 +122,6 @@
 $resg=pg_execute("", $v);
 if (!$resg) {
-	echo "\n<p class='err'>Fehler bei Geb&auml;ude-Verschneidung.</p>\n";
-	if ($debug > 2) {echo "<p class='err'>SQL=<br>".$sqlg."<br>$1 = gml_id = '".$gmlid."'</p>";}
+	echo "\n<p class='err'>Fehler bei Geb&auml;ude-Verschneidung.</p>";
+	if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".$sqlg."<br>$1 = gml_id = '".$gmlid."'</p>";}
 }
 $gebnr=0;
@@ -203,6 +208,6 @@
 			$resl = pg_execute("", $v);
 			if (!$resl) {
-				echo "\n<p class='err'>Fehler bei Lage mit HsNr.</p>\n";
-				if ($debug > 2) {echo "<p class='dbg'>SQL=<br>".$sqll."<br>$1 = gml_id = '".$gmlid."'</p>";}
+				echo "\n<p class='err'>Fehler bei Lage mit HsNr.</p>";
+				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
Index: trunk/info/info/alkisn/alkislage.php
===================================================================
--- trunk/info/info/alkisn/alkislage.php	(revision 386)
+++ trunk/info/info/alkisn/alkislage.php	(revision 387)
@@ -9,14 +9,24 @@
 	2016-03-14 Korrekturen
 	2016-11-29 HTML5, Gemeinsam genutzte Datenbanken ermÃ¶glichen
+	2017-06-08 Validierung Eingabeparameter, gestreifte Tabelle, Feinkorrekturen
 
 	ToDo:
 	- Balken-Kennzeichen kompatibel machen mit der Eingabe der Navigation fÃŒr Adresse
 	- das Modul "alkisgebaeudenw" (alle Geb. auf einem FS) verschneidet die FlÃ€chen und findet damit auch 
-		Grenz-Uberbauungen und angrenzende GebÃ€ude. Diese fehlen hier, weil nur VerknÃŒpfungen verarbeitet werden.
-		Mit FlÃ€chen-Verschneidung auch weitere FS anzeigen?
+	Grenz-Uberbauungen und angrenzende GebÃ€ude. Diese fehlen hier, weil nur VerknÃŒpfungen verarbeitet werden.
+	Mit FlÃ€chen-Verschneidung auch weitere FS anzeigen?
 */
 session_start();
-$id="n";
-$cntget = extract($_GET);
+
+$showkey="n"; // Var. aus Parameter initalisieren
+$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");}
+if (!isset($gkz) or !preg_match('#^[0-9]{3}$#', $gkz)) {die("Eingabefehler gkz");}
+if (!preg_match('#^[j|n]{0,1}$#', $showkey)) {die ("Eingabefehler showkey");}
+if ($showkey == "j") {$showkey=true;} else {$showkey=false;}
+if (!preg_match('#^[m|p|o]{1}$#', $ltyp)) {die ("Eingabefehler ltyp");}
+
 require_once("alkis_conf_location.php");
 if ($auth == "mapbender") {require_once($mapbender);}
@@ -34,7 +44,4 @@
 		$tnam = "ax_lagebezeichnungmithausnummer"; break;
 }
-
-$keys = isset($_GET["showkey"]) ? $_GET["showkey"] : "n";
-if ($keys == "j") {$showkey=true;} else {$showkey=false;}
 ?>
 <!doctype html>
@@ -42,15 +49,13 @@
 <head>
 	<meta charset="utf-8">
+	<meta name="viewport" content="width=device-width, initial-scale=1.0">
 	<title>ALKIS Lagebezeichnung</title>
 	<link rel="stylesheet" type="text/css" href="alkisauszug.css">
 	<link rel="shortcut icon" type="image/x-icon" href="ico/Lage_mit_Haus.ico">
-	<style type='text/css' media='print'>
-		.noprint {visibility: hidden;}
-	</style>
 </head>
 <body>
 <?php
 $con = pg_connect($dbconn." options='--application_name=ALKIS-Auskunft_alkislage.php'");
-if (!$con) echo "<p class='err'>Fehler beim Verbinden der DB</p>\n";
+if (!$con) echo "\n<p class='err'>Fehler beim Verbinden der DB</p>";
 
 // L a g e b e z e i c h n u n g
@@ -80,6 +85,6 @@
 $res = pg_execute("", $v);
 if (!$res) {
-	echo "\n<p class='err'>Fehler bei Lagebezeichnung.</p>\n";
-	if ($debug > 2) {echo "<p class='err'>SQL=<br>".$sql."<br>$1 = gml_id = '".$gmlid."'</p>";}
+	echo "\n<p class='err'>Fehler bei Lagebezeichnung.</p>";
+	if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = gml_id = '".$gmlid."'</p>";}
 }
 
@@ -104,6 +109,5 @@
 			$kennz.=$hsnr;
 			$untertitel="Hauptgeb&auml;ude mit Hausnummer";
-			// Balken
-			echo "<p class='lage'>ALKIS Lagebezeichnung mit Hausnummer ".$kennz."&nbsp;</p>\n"; // Balken
+			echo "\n<p class='lage'>ALKIS Lagebezeichnung mit Hausnummer ".$kennz."&nbsp;</p>"; // Balken
 			$osub="";
 		break;
@@ -113,5 +117,5 @@
 			$kennz.=$pseu."-".$lfd;
 			$untertitel="NebengebÃ€ude mit laufender Nummer (Lagebezeichnung mit Pseudonummer)";
-			echo "<p class='lage'>ALKIS Lagebezeichnung NebengebÃ€ude ".$kennz."&nbsp;</p>\n"; // Balken
+			echo "\n<p class='lage'>ALKIS Lagebezeichnung NebengebÃ€ude ".$kennz."&nbsp;</p>"; // Balken
 			$osub="";
 		break;
@@ -123,71 +127,70 @@
 				$kennz=" - ".$unver;
 				$untertitel="Gewanne (unverschl&uuml;sselte Lage)";
-				echo "<p class='lage'>ALKIS Lagebezeichnung Ohne Hausnummer ".$kennz."&nbsp;</p>\n"; // Balken
+				echo "\n<p class='lage'>ALKIS Lagebezeichnung Ohne Hausnummer ".$kennz."&nbsp;</p>"; // Balken
 			} else {
 				$osub="s"; // Sub-Typ Strasse (ohne HsNr)
 				$kennz.=$unver;
 				$untertitel="Stra&szlig;e ohne Hausnummer";
-				echo "<p class='lage'>ALKIS Lagebezeichnung Ohne Hausnummer ".$kennz."&nbsp;</p>\n"; // Balken
+				echo "\n<p class='lage'>ALKIS Lagebezeichnung Ohne Hausnummer ".$kennz."&nbsp;</p>"; // Balken
 			}
 		break;
 	}
 } else {
-	echo "<p class='err'>Fehler! Kein Treffer fuer Lagebezeichnung mit gml_id='".$gmlid."'</p>";
+	echo "\n<p class='err'>Fehler! Kein Treffer fuer Lagebezeichnung mit gml_id='".$gmlid."'</p>";
 	if ($debug > 2) {
-		echo "<p class='err'>SQL=<br>".$sql."<br>$1 = gml_id = '".$gmlid."'</p>";
-	}
-	echo "</body></html>";
+		echo "\n<p class='err'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = gml_id = '".$gmlid."'</p>";
+	}
+	echo "\n</body>\n</html>";
 	exit;
 }
 
-echo "\n<h2><img src='ico/Lage_mit_Haus.png' width='16' height='16' alt='HAUS'> Lagebezeichnung</h2>\n";
-
-echo "<p>Typ: ".$untertitel."</p>";
+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<table class='outer'>\n<tr>\n\t<td>"; 	// Tab. Kennz.
 	// ToDo: !! kleiner, wenn ltyp=0 und die Schluesselfelder leer sind
-	echo "\n\t<table class='kennzla' title='Lage'>"
-		."\n\t<tr>";
+	echo "\n\t\t<table class='kennzla' title='Lage'>"
+		."\n\t\t<tr>";
 			if ($osub != "g") { // nicht bei Gewanne
-				echo "\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>";
+				echo "\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\t<td class='head'>Stra&szlig;e</td>";
 			}
 			switch ($ltyp) {
 				case "m": // "Mit HsNr"
-					echo "\n\t\t<td class='head'>Haus-Nr</td>";
+					echo "\n\t\t\t<td class='head'>Haus-Nr</td>";
 				break;
 				case "p": // "mit PseudoNr"
-					echo "\n\t\t<td class='head'>Haus-Nr</td>"
-					."\n\t\t<td class='head'>lfd.-Nr</td>";
+					echo "\n\t\t\t<td class='head'>Haus-Nr</td>"
+					."\n\t\t\t<td class='head'>lfd.-Nr</td>";
 				break;
 				case "o": //"Ohne HsNr"
 					if ($osub == "g") {
-						echo "\n\t\t<td class='head'>unverschl&uuml;sselte Lage</td>";
+						echo "\n\t\t\t<td class='head'>unverschl&uuml;sselte Lage</td>";
 					}
 				break;
 			}
-		echo "\n\t</tr>\n\t<tr>";
+		echo "\n\t\t</tr>\n\t\t<tr>";
 			if ($osub != "g") { // nicht bei Gewanne
 
-				echo "\n\t\t<td title='Bundesland'>";
+				echo "\n\t\t\t<td title='Bundesland'>";
 				if ($showkey) {echo "<span class='key'>".$land."</span><br>";}
 				echo $bnam."&nbsp;</td>";
 
-				echo "\n\t\t<td title='Regierungsbezirk'>";
+				echo "\n\t\t\t<td title='Regierungsbezirk'>";
 				if ($showkey) {echo "<span class='key'>".$regbez."</span><br>";}
 				echo $rnam."&nbsp;</td>";
 
-				echo "\n\t\t<td title='Kreis'>";
+				echo "\n\t\t\t<td title='Kreis'>";
 				if ($showkey and $osub != "g") {echo "<span class='key'>".$kreis."</span><br>";}
 				echo $knam."&nbsp;</td>";
 
-				echo "\n\t\t<td title='Gemeinde'>";
+				echo "\n\t\t\t<td title='Gemeinde'>";
 				if ($showkey and $osub != "g") {echo "<span class='key'>".$gem."</span><br>";}
 				echo $gnam."&nbsp;</td>";
 
-				echo "\n\t\t<td title='Stra&szlig;e'>";
+				echo "\n\t\t\t<td title='Stra&szlig;e'>";
 				if ($showkey and $osub != "g") {echo "<span class='key'>".$lage."</span><br>";}
 				if ($ltyp == "o") {
@@ -201,18 +204,18 @@
 			switch ($ltyp) {
 				case "m":
-					echo "\n\t\t<td title='Hausnummer und Zusatz'><span class='wichtig'>".$hsnr."</span></td>";
+					echo "\n\t\t\t<td title='Hausnummer und Zusatz'><span class='wichtig'>".$hsnr."</span></td>";
 				break;
 				case "p":
-					echo "\n\t\t<td title='Pseudonummer - Nebengeb&auml;ude zu dieser Hausnummer'>".$pseu."</td>"
-					."\n\t\t<td title='Laufende Nummer Nebengeb&auml;ude'><span class='wichtig'>".$lfd."</span></td>";
+					echo "\n\t\t\t<td title='Pseudonummer - Nebengeb&auml;ude zu dieser Hausnummer'>".$pseu."</td>"
+					."\n\t\t\t<td title='Laufende Nummer Nebengeb&auml;ude'><span class='wichtig'>".$lfd."</span></td>";
 				break;
 				case "o":
 					if ($osub == "g") {
-						echo "\n\t\t<td title='Gewanne'><span class='wichtig'>".$unver."</span></td>";
+						echo "\n\t\t\t<td title='Gewanne'><span class='wichtig'>".$unver."</span></td>";
 					}
 				break;
 			}
-		echo "\n\t</tr>"
-	."\n\t</table>";
+		echo "\n\t\t</tr>"
+	."\n\t\t</table>";
 
 	echo "\n\t</td>\n\t<td>";
@@ -221,5 +224,5 @@
 	if ($osub != "g") { // Link zu Strasse
 		echo "\n\t\t<p class='nwlink noprint'>"
-			."\n\t\t<a href='alkisstrasse.php?gkz=".$gkz."&amp;gmlid=".$strgml;
+			."\n\t\t\t<a href='alkisstrasse.php?gkz=".$gkz."&amp;gmlid=".$strgml;
 			if ($showkey) {echo "&amp;showkey=j";}
 			echo "' title='Stra&szlig;e'>Stra&szlig;e <img src='ico/Strassen.png' width='16' height='16' alt=''></a>"
@@ -235,5 +238,5 @@
 // ++ auch FlÃ€chenverschneidung?
 if ($ltyp <> "p") { // Pseudonummer linkt nur GebÃ€ude
-	echo "\n\n<a id='fs'></a><h3><img src='ico/Flurstueck.png' width='16' height='16' alt=''> Flurst&uuml;cke</h3>\n"
+	echo "\n\n<a id='fs'></a>\n<h3><img src='ico/Flurstueck.png' width='16' height='16' alt=''> Flurst&uuml;cke</h3>"
 	."\n<p>mit dieser Lagebezeichnung.</p>";
 	switch ($ltyp) {
@@ -251,6 +254,6 @@
 	$resf = pg_execute("", $v);
 	if (!$resf) {
-		echo "<p class='err'>Fehler bei Flurst&uuml;ck.</p>\n";
-		if ($debug > 2) {echo "<p class='err'>SQL=<br>".$sql."<br>$1 = gml_id = '".$gmlid."'</p>";}	
+		echo "\n<p class='err'>Fehler bei Flurst&uuml;ck.</p>";
+		if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = gml_id = '".$gmlid."'</p>";}	
 	}
 	echo "\n<table class='fs'>"
@@ -260,7 +263,8 @@
 		."\n\t<td class='heads fsnr' title='Flurst&uuml;cksnummer (Z&auml;hler / Nenner)'><img src='ico/sort.png' width='10' height='10' alt='' title='Sortierung'>Flurst.</td>"
 		."\n\t<td class='head fla'>Fl&auml;che</td>"
-		."\n\t<td class='head nwlink noprint' title='Link: weitere Auskunft'>weit. Auskunft</td>"
+		."\n\t<td class='head nwlink noprint' title='Verlinkung zu anderen Nachweis-Arten und verbundenen Objekten'>weitere Auskunft</td>"
 	."\n</tr>";
 	$j=0;
+	$zpaar=false;
 	while($rowf = pg_fetch_array($resf)) {
 		$flur=str_pad($rowf["flurnummer"], 3, "0", STR_PAD_LEFT);
@@ -268,5 +272,9 @@
 		if ($rowf["nenner"] != "") {$fskenn.="/".$rowf["nenner"];}
 		$flae=number_format($rowf["amtlicheflaeche"],0,",",".") . " m&#178;";
-		echo "\n<tr>"
+
+		if ($zpaar) {$trclass='paa';} else {$trclass='unp';}
+		$zpaar=!$zpaar;
+
+		echo "\n<tr class='".$trclass."'>"
 			."\n\t<td>";
 			if ($showkey) {echo "<span class='key'>".$rowf["gemarkungsnummer"]."</span> ";}
@@ -276,5 +284,5 @@
 			."\n\t<td class='fla'>".$flae."</td>"
 			."\n\t<td>\n\t\t<p class='nwlink noprint'>"
-				."\n\t\t<a href='alkisfsnw.php?gkz=".$gkz."&amp;gmlid=".$rowf["gml_id"]."&amp;eig=n";
+				."\n\t\t\t<a href='alkisfsnw.php?gkz=".$gkz."&amp;gmlid=".$rowf["gml_id"]."&amp;eig=n";
 				if ($showkey) {echo "&amp;showkey=j";}
 				echo "' title='Flurst&uuml;cksnachweis'>Flurst&uuml;ck <img src='ico/Flurstueck_Link.png' width='16' height='16' alt=''></a>"
@@ -290,14 +298,14 @@
 // andere Lage mit gleicher Hausnummer suchen
 if ($ltyp <> "o") { // nicht bei Gewanne (Ohne HsNr)
-	echo "\n\n<a id='lage'></a><h3><img src='ico/Lage_mit_Haus.png' width='16' height='16' alt=''> Lage</h3>\n"
-	."\n<p>andere Lagebezeichnungen zur gleichen Hausnummer.</p>";
+	echo "\n\n<a id='lage'></a>\n<h3><img src='ico/Lage_mit_Haus.png' width='16' height='16' alt=''> Lage</h3>"
+	."\n<p>Andere Lagebezeichnungen zur gleichen Hausnummer.</p>";
 	$whereclaus="WHERE land= $1 AND regierungsbezirk= $2 AND kreis= $3 AND gemeinde= $4 AND lage= $5 ";
 
-	$url=$_SERVER['PHP_SELF']."?gkz=".$gkz."&amp;id=".$id; // Basis
-	if ($showkey)   {$url.="&amp;showkey=j";}
+	$url=$_SERVER['PHP_SELF']."?gkz=".$gkz; // Basis
+	if ($showkey) {$url.="&amp;showkey=j";}
 	$url.="&amp;gmlid=";
 
 	switch ($ltyp) {
-		case "m": // aktuell: Hausnummer gefunden
+		case "m": // aktuell: Hausnummer gefunden (HauptgebÃ€ude)
 			// dazu alle NebengebÃ€ude suchen
 			echo "\n<p>Nebengeb&auml;ude:&nbsp;";
@@ -309,6 +317,6 @@
 			$res = pg_execute("", $v);
 			if (!$res) {
-				echo "\n<p class='err'>Fehler bei Nebengeb&auml;ude.<br>".$sql."</p>\n";
-				if ($debug > 2) {echo "<p class='err'>SQL=<br>".$sql."</p>";}
+				echo "\n<p class='err'>Fehler bei Nebengeb&auml;ude.<br>".$sql."</p>";
+				if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."</p>";}
 			}
 			$neb=0;
@@ -321,8 +329,7 @@
 		break;
 
-		case "p": // aktuell NebengebÃ€ude: Haupt- und NebengebÃ€ude suchen
+		case "p": // aktuell NebengebÃ€ude: Haupt- und (andere) NebengebÃ€ude suchen
 			echo "\n<p>Hauptgeb&auml;ude: ";
-			$sql ="SELECT l.gml_id FROM ax_lagebezeichnungmithausnummer l ";
-			$sql.=$whereclaus."AND hausnummer= $6 AND l.endet IS NULL ;";
+			$sql ="SELECT l.gml_id FROM ax_lagebezeichnungmithausnummer l ".$whereclaus."AND hausnummer= $6 AND l.endet IS NULL ;";
 
 			$v = array($land,$regbez,$kreis,$gem,$lage,$pseu);
@@ -330,5 +337,5 @@
 			$res = pg_execute("", $v);
 
-			if (!$res) {echo "<p class='err'>Fehler bei Hauptgeb&auml;ude.<br>".$sql."</p>\n";}
+			if (!$res) {echo "\n<p class='err'>Fehler bei Hauptgeb&auml;ude.<br>".$sql."</p>";}
 			$hg=0;
 			while($row = pg_fetch_array($res)) {
@@ -346,6 +353,6 @@
 			$res = pg_execute("", $v);
 			if (!$res) {
-				echo "\n<p class='err'>Fehler bei Nebengeb&auml;ude.</p>\n";
-				if ($debug > 2) {echo "<p class='err'>SQL=<br>".$sql."</p>";}			
+				echo "\n<p class='err'>Fehler bei Nebengeb&auml;ude.</p>";
+				if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."</p>";}			
 			}
 			$neb=0;
@@ -362,5 +369,5 @@
 // G E B A E U D E
 if ($ltyp <> "o") { // OhneHsNr linkt nur Flurst.
-	echo "\n\n<a id='geb'></a><h3><img src='ico/Haus.png' width='16' height='16' alt=''> Geb&auml;ude</h3>"
+	echo "\n\n<a id='geb'></a>\n<h3><img src='ico/Haus.png' width='16' height='16' alt=''> Geb&auml;ude</h3>"
 	."\n<p>mit dieser Lagebezeichnung.</p>";
 	switch ($ltyp) {
@@ -382,6 +389,6 @@
 	$res = pg_execute("", $v);
 	if (!$res) {
-		echo "<p class='err'>Fehler bei Geb&auml;ude.</p>\n";
-		if ($debug > 2) {echo "<p class='err'>SQL=<br>".$sql."<br>$1 = gml_id = '".$gmlid."'</p>";}
+		echo "\n<p class='err'>Fehler bei Geb&auml;ude.</p>";
+		if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = gml_id = '".$gmlid."'</p>";}
 	}
 	echo "\n<table class='geb'>"
@@ -398,33 +405,33 @@
 		$ggml=$row["gml_id"];
 		$gfla=$row["flaeche"];
-		echo "\n\t<tr>"
-			."<td>".$row["name"]."</td>"
-			."<td class='fla'>".$gfla." m&#178;</td>";
-
-			echo "<td title='".$row["ud"]."'>";
-			if ($showkey) {echo "<span class='key'>".$row["gebaeudefunktion"]."</span> ";}
+		echo "\n<tr>"
+			."\n\t<td>".$row["name"]."</td>"
+			."\n\t<td class='fla'>".$gfla." m&#178;</td>";
+
+			echo "\n\t<td title='".htmlentities($row["ud"], ENT_QUOTES, "UTF-8")."'>";
+			if ($showkey) {echo "<span class='key'>".htmlentities($row["gebaeudefunktion"], ENT_QUOTES, "UTF-8")."</span> ";}
 			echo $row["uv"]."</td>";
 
-			echo "<td title='".$row["hd"]."'>";
-			if ($showkey) {echo "<span class='key'>".$row["bauweise"]."</span> ";}
+			echo "\n\t<td title='".htmlentities($row["hd"], ENT_QUOTES, "UTF-8")."'>";
+			if ($showkey) {echo "<span class='key'>".htmlentities($row["bauweise"], ENT_QUOTES, "UTF-8")."</span> ";}
 			echo $row["hv"]."</td>";
 				
-			echo "<td title='".$row["zd"]."'>";
-			if ($showkey) {echo "<span class='key'>".$row["zustand"]."</span> ";}
+			echo "\n\t<td title='".htmlentities($row["zd"] , ENT_QUOTES, "UTF-8")."'>";
+			if ($showkey) {echo "<span class='key'>".htmlentities($row["zustand"], ENT_QUOTES, "UTF-8")."</span> ";}
 			echo $row["zv"]."</td>";
 
 			echo "\n\t<td class='nwlink noprint'>"
-				."<a title='komplette Hausdaten' href='alkishaus.php?gkz=".$gkz."&amp;gmlid=".$ggml
-				."'>Haus <img src='ico/Haus.png' width='16' height='16' alt=''></a>"
-			."</td>"
-		."</tr>";
+				."\n\t\t<a title='komplette Hausdaten' href='alkishaus.php?gkz=".$gkz."&amp;gmlid=".$ggml;
+				if ($showkey) {echo "&amp;showkey=j";}
+				echo "'>Haus <img src='ico/Haus.png' width='16' height='16' alt=''></a>"
+			."\n\t</td>"
+		."\n</tr>";
 	}
 	echo "\n</table>";
 }
-
 ?>
 
 <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>&nbsp;
Index: trunk/info/info/alkisn/alkisfsnw.php
===================================================================
--- trunk/info/info/alkisn/alkisfsnw.php	(revision 386)
+++ trunk/info/info/alkisn/alkisfsnw.php	(revision 387)
@@ -10,18 +10,42 @@
 	2016-12-01 HTML5, Gemeinsam genutzte Datenbanken ermÃ¶glichen
 	2016-12-05 Nutzungsart-Kategorie ist nun in Text enthalten, nicht mehr aus der Definition ausschneiden
+	2017-06-08 optional "berechtigte Buchungen" anzeigen, Function "eigentuemer" ohne Parameter $con,
+				Validierung Eingabeparameter, Feinkorrekturen
 
 	ToDo:
-	- BodenschÃ€tzung anzeigen
+	- BodenschÃ€tzung anzeigen (siehe Mail Frau Weyand ITEBO vom 15.05.17)
 	- Bessere Differenzierung bei den Nutzungsarten (Tabelle dafÃŒr aufbauen)
 */
 session_start();
-$id="n";
+
+// Var. aus Parameter initalisieren
 $eig="n";
+$berbu="n";
+$showkey="n";
+
+// alle Parameter in Variable umwandeln
 $cntget = extract($_GET);
+
+// strikte Validierung aller Parameter
+if (isset($gmlid)) {
+	if (!preg_match('#^[0-9A-Za-z]{16}$#', $gmlid)) {die("Eingabefehler gmlid");}
+	$fskennz='';
+} else { // Alternativ
+	$gmlid='';
+	if (isset($fskennz)) { // llgggg-fff-11111/222 oder z.B.'052647002001910013__' oder '05264700200012______'
+		if (!preg_match('#^[0-9\-_/]{8,20}$#', $fskennz)) {die ("Eingabefehler fskennz");}
+	} else {
+		$fskennz='';
+	}
+}
+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
+
 require_once("alkis_conf_location.php");
 if ($auth == "mapbender") {require_once($mapbender);}
 include("alkisfkt.php");
-$keys = isset($_GET["showkey"]) ? $_GET["showkey"] : "n";
-if ($keys == "j") {$showkey=true;} else {$showkey=false;}
 ?>
 <!doctype html>
@@ -29,4 +53,5 @@
 <head>
 	<meta charset="utf-8">
+	<meta name="viewport" content="width=device-width, initial-scale=1.0">
 	<title>ALKIS Flurst&uuml;cksnachweis</title>
 	<link rel="stylesheet" type="text/css" href="alkisauszug.css">
@@ -37,7 +62,4 @@
 		}
 	</script>
-	<style type='text/css' media='print'>
-		.noprint {visibility: hidden;}
-	</style>
 </head>
 <body>
@@ -45,12 +67,12 @@
 // S t a r t
 $con = pg_connect($dbconn." options='--application_name=ALKIS-Auskunft_alkisfsnw.php'");
-if (!$con) echo "<p class='err'>Fehler beim Verbinden der DB</p>\n";
+if (!$con) echo "\n<p class='err'>Fehler beim Verbinden der DB</p>";
 
 // Ein (ALB- ?) FlurstÃŒcks-Kennzeichen wurde alternativ zur gml_id ÃŒbermittelt
-if ($gmlid == '' and $fskennz != '') {
+if ($fskennz != '') {
 	// Ãbergabe Format z.B. "llgggg-fff-nnnn/zz.nn" oder "gggg-ff-nnn/zz"
 	$arr=explode("-", $fskennz, 4);
 	$zgemkg=trim($arr[0]);
-	if (strlen($zgemkg) == 20 and $arr[1] == "") { // Oh, ist wohl schon das Datenbank-Feldformat 
+	if (strlen($zgemkg) == 20 and !isset($arr[1])) { // Oh, ist wohl schon das Datenbank-Feldformat 
 		$fskzdb=$zgemkg;
 	} else { // NÃ¶, ist wohl eher ALB-Format
@@ -65,6 +87,10 @@
 		$zfsnr=trim($arr[2]); // FlurstÃŒcke-Nr
 		$zn=explode("/", $zfsnr, 2); // Bruch?
-		$zzaehler=str_pad(trim($zn[0]), 5 , "0", STR_PAD_LEFT);	
-		$znenner=trim($zn[1]);
+		$zzaehler=str_pad(trim($zn[0]), 5 , "0", STR_PAD_LEFT);
+		if (isset($zn[1])) {
+			$znenner=trim($zn[1]);
+		} else {
+			$znenner="";
+		}
 		if (trim($znenner, " 0.") == "") { // kein Bruch oder nur Nullen
 			$znenner="____"; // in DB-Spalte mit Tiefstrich aufgefÃŒllt
@@ -86,5 +112,8 @@
 		$gmlid=$row["gml_id"];
 	} else {
-		echo "<p class='err'>Fehler! Kein Treffer f&uuml;r Flurst&uuml;ckskennzeichen='".$fskennz."' (".$fskzdb.")</p>";
+		echo "\n<p class='err'>Fehler! Kein Treffer f&uuml;r Flurst&uuml;ckskennzeichen='".$fskennz."' (".$fskzdb.")</p>";
+		echo "<p>Kennzeichen veraltet? <a href='./alkisfshist.php?gkz=".$gkz."&fskennz=".$fskennz."'>Suche in der Flurst&uuml;cks-Historie</a></p>";
+		echo "\n</body>\n</html>";
+		return;
 	}
 	pg_free_result($res);
@@ -101,6 +130,6 @@
 
 if (!$res) {
-	echo "\n<p class='err'>Fehler bei Flurstuecksdaten</p>\n";
-	if ($debug > 2) {echo "<p class='dbg'>SQL=<br>".$sql."<br>$1 = gml_id = '".$gmlid."'</p>";}
+	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)) {
@@ -123,7 +152,7 @@
 	$arrn = explode(",", trim($name, "{}") ); // PHP-Array
 } else {
-	echo "<p class='err'>Fehler! Kein Treffer f&uuml;r Flurst&uuml;ck mit gml_id=".$gmlid."</p>";
-	if ($debug > 2) {echo "<p class='dbg'>SQL=<br>".$sql."<br>$1 = gml_id = '".$gmlid."'</p>";}
-	echo "</body></html>";
+	echo "\n<p class='err'>Fehler! Kein Treffer f&uuml;r Flurst&uuml;ck mit gml_id=".$gmlid."</p>";
+	if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = gml_id = '".$gmlid."'</p>";}
+	echo "\n</body>\n</html>";
 	return;
 }
@@ -132,9 +161,9 @@
 // Balken
 if ($eig=="j") {
-	echo "<p class='fsei'>ALKIS Flurst&uuml;ck ".$gmkgnr."-".$flurnummer."-".$flstnummer."&nbsp;</p>\n"
-	."\n<h2><img src='ico/Flurstueck.png' width='16' height='16' alt=''> Flurst&uuml;ck mit Eigent&uuml;mer</h2>\n";
+	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>";
 } else {
-	echo "<p class='fskennz'>ALKIS Flurst&uuml;ck ".$gmkgnr."-".$flurnummer."-".$flstnummer."&nbsp;</p>\n"
-	."\n<h2><img src='ico/Flurstueck.png' width='16' height='16' alt=''> Flurst&uuml;ck</h2>\n";
+	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>";
 }
 
@@ -145,6 +174,6 @@
 	if ($debug > 2) {
 	//++ SchÃ¶nes Bild? Stop-Zeichen?
-		echo "<p class='err'>Filter Kreis='".$filtkreis."', Gemeinde='".$filtgem."'</p>"
-		."<p class='err'>Flstk. Kreis='".$fskrs."', Gemeinde='".$fsgem."'</p>";
+		echo "\n<p class='err'>Filter Kreis='".$filtkreis."', Gemeinde='".$filtgem."'</p>"
+		."\n<p class='err'>Flstk. Kreis='".$fskrs."', Gemeinde='".$fsgem."'</p>";
 	}
 	echo "\n<br><p class='stop1'>Zugriff nicht erlaubt</p>"
@@ -154,27 +183,27 @@
 
 echo "\n<table class='outer'>\n<tr>\n\t<td>" // linke Seite
-	."\n\t<table class='kennzfs' title='Flurst&uuml;ckskennzeichen'>\n\t<tr>" // darin Tabelle Kennzeichen
-		."\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'>";
+	."\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<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\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<table class='fsd'>" // FS-Daten 2 Spalten
-		."\n\t<tr>\n\t\t<td>Entstehung</td>"
-		."\n\t\t<td>".$entsteh."</td>\n\t</tr>"
-		."\n\t<tr>"
-			."\n\t\t<td>letz. Fortf</td>"
-			."\n\t\t<td title='Jahrgang / Fortf&uuml;hrungsnummer - Fortf&uuml;hrungsart'>";
+	."\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'>";
 				foreach($arrn AS $val) { // Zeile f. jedes Element des Array
 					echo trim($val, '"')."<br>";
 				}
 			echo "</td>"
-		."\n\t</tr>"
-	."\n\t</table>"
+		."\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>";
@@ -197,23 +226,21 @@
 $res = pg_execute("", $v);
 if (!$res) {
-	echo "\n<p class='err'>Fehler bei Gemeinde</p>\n";
-	if ($debug > 2) {echo "<p class='dbg'>SQL=<br>".$sql."</p>";}
+	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><td class='lr'>";
-if ($showkey) {
-	echo "<span class='key'>(".$gemeinde.")</span> ";
-}
+echo "\n\t<td class='lr'>Gemeinde</td>\n\t<td class='lr'>";
+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><td class='nwlink'>"
-	."\n<p class='nwlink noprint'>"
-		."\n\t<a href='alkisfshist.php?gkz=".$gkz."&amp;gmlid=".$gmlid;
-			if ($showkey)   {echo "&amp;showkey=j";}
+echo $gnam."</td>\n\t<td class='nwlink'>"
+	."\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=''>"
 		."</a>"
-	."\n</p>"
-. "</td></tr>";
+	."\n\t\t</p>"
+. "\n\t</td>\n</tr>";
 pg_free_result($res);
 
@@ -224,14 +251,12 @@
 $res = pg_execute("", $v);
 if (!$res) {
-	echo "\n<p class='err'>Fehler bei Kreis</p>\n";
-	if ($debug > 2) {echo "<p class='dbg'>SQL=<br>".$sql."</p>";}
+	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 "<tr><td>&nbsp;</td><td>Kreis</td><td>";
-if ($showkey) {
-	echo "<span class='key'>(".$kreis.")</span> ";
-}
-echo $knam."</td><td>&nbsp;</td></tr>";
+echo "\n<tr>\n\t<td>&nbsp;</td>\n\t<td>Kreis</td>\n\t<td>";
+if ($showkey) {echo "<span class='key'>(".$kreis.")</span> ";}
+echo $knam."</td>\n\t<td>&nbsp;</td>\n</tr>";
 pg_free_result($res);
 
@@ -242,14 +267,12 @@
 $res = pg_execute("", $v);
 if (!$res) {
-	echo "<p class='err'>Fehler bei Regierungsbezirk</p>";
-	if ($debug > 2) {echo "<p class='dbg'>SQL=<br>".$sql."</p>";}
+	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 "<tr><td>&nbsp;</td><td>Regierungsbezirk</td><td>";
-if ($showkey) {
-	echo "<span class='key'>(".$bezirk.")</span> ";
-}
-echo $bnam."</td><td>&nbsp;</td></tr>";
+echo "\n<tr>\n\t<td>&nbsp;</td>\n\t<td>Regierungsbezirk</td>\n\t<td>";
+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
@@ -270,10 +293,9 @@
 
 if (!$res) {
-	echo "<p class='err'>Fehler bei Lagebezeichnung mit Hausnummer</p>";
+	echo "\n<p class='err'>Fehler bei Lagebezeichnung mit Hausnummer</p>";
 	if ($debug > 1) {
-		//echo "<p class='dbg'>Fehler:".pg_result_error($res)."</p>";
-		echo "<p class='dbg'>Fehler:".pg_last_error()."</p>";
-	}
-	if ($debug > 2) {echo "<p class='dbg'>SQL=<br>".$sql."<br>$1 = gml_id = '".$gmlid."'</p>";}
+		echo "\n<p class='dbg'>Fehler:".pg_last_error()."</p>";
+		if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = gml_id = '".$gmlid."'</p>";}
+	}
 } else {
 	$j=0;
@@ -282,7 +304,7 @@
 		echo "\n<tr>\n\t";
 			if ($j == 0) {
-				echo "<td class='ll'><img src='ico/Lage_mit_Haus.png' width='16' height='16' alt=''> Adresse:</td>";
+				echo "\n\t<td class='ll'><img src='ico/Lage_mit_Haus.png' width='16' height='16' alt=''> Adresse:</td>";
 			} else {
-				echo "<td>&nbsp;</td>";
+				echo "\n\t<td>&nbsp;</td>";
 			}
 			echo "\n\t<td>&nbsp;</td>"
@@ -316,7 +338,7 @@
 $res = pg_execute("", $v);
 if (!$res) {
-	echo "<p class='err'>Fehler bei Lagebezeichnung ohne Hausnummer</p>";
+	echo "\n<p class='err'>Fehler bei Lagebezeichnung ohne Hausnummer</p>";
 	//if ($debug > 1) {echo "<p class='dbg'>Fehler:".pg_result_error($res)."</p>";}
-	if ($debug > 2) {echo "<p class='dbg'>SQL=<br>".$sql."<br>$1 = gml_id = '".$gmlid."'</p>";}
+	if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = gml_id = '".$gmlid."'</p>";}
 }
 $j=0;
@@ -376,6 +398,6 @@
 $res = pg_execute("", $v);
 if (!$res) {
-	echo "<p class='err'>Fehler bei Suche tats. Nutzung</p>\n";
-	if ($debug > 2) {echo "<p class='dbg'>SQL=<br>".$sql."<br>$1 = gml_id = '".$gmlid."'</p>";}
+	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
@@ -481,5 +503,5 @@
 
  Die EntschlÃŒsselung der Nutzungsart in den verschiedenen ALKIS-Varianten ist darin unterentwickelt.
- Diese ist eigentlich fÃŒr jede der getrennten Tabellen der Gruppe Nutzungsrt individuell.
+ 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.
@@ -499,5 +521,5 @@
 
 $fskennzalb=$defland.$gmkgnr."-".str_pad($flurnummer,3,"0",STR_PAD_LEFT)."-".str_pad($zaehler,5,"0",STR_PAD_LEFT)."/".str_pad($nenner,3,"0",STR_PAD_LEFT);
-// echo "<p class='err'>Kennz ALB='".$fskennzalb."'</p>";
+// echo "\n<p class='err'>Kennz ALB='".$fskennzalb."'</p>";
 
 $v = array($fskennzalb);
@@ -505,6 +527,6 @@
 $res = pg_execute("", $v);
 if (!$res) {
-	echo "<p class='err'>Fehler bei Suche tats. Nutzung</p>\n";
-	if ($debug > 2) {echo "<p class='dbg'>SQL=<br>".$sql."<br>$1 = FS-Kennz = '".$fskennzalb."'</p>";}
+	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 = FS-Kennz = '".$fskennzalb."'</p>";}
 }
 
@@ -584,6 +606,6 @@
 $res_bodeneuordnung = pg_execute($con, "bodeneuordnung", array($gmlid));
 if (!$res_bodeneuordnung) {
-	echo "<p class='err'>Fehler bei Bau-, Raum- oder Bodenordnungsrecht</p>\n";
-	if ($debug > 2) {echo "<p class='dbg'>SQL=<br>".$sql_boden."<br>$1 = gml_id = '".$gmlid."'</p>";}
+	echo "\n<p class='err'>Fehler bei Bau-, Raum- oder Bodenordnungsrecht</p>";
+	if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".$sql_boden."<br>$1 = gml_id = '".$gmlid."'</p>";}
 }
 
@@ -594,6 +616,6 @@
 $res_strittigeGrenze = pg_execute($con, "strittigeGrenze", array($gmlid));
 if (!$res_strittigeGrenze) {
-	echo "<p class='err'>Fehler bei strittige Grenze</p>\n";
-	if ($debug > 2) {echo "<p class='dbg'>SQL=<br>".$sql_str."<br>$1 = gml_id = '".$gmlid."'</p>";}
+	echo "\n<p class='err'>Fehler bei strittige Grenze</p>";
+	if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".$sql_str."<br>$1 = gml_id = '".$gmlid."'</p>";}
 }
 
@@ -667,18 +689,18 @@
 
 // G R U N D B U C H
-echo "\n<table class='outer'>"
+echo "\n\n<table class='outer'>"
 	."\n<tr>"
 		."\n\t<td>"
-			."\n\t\t<a id='gb'></a>\n\t\t<h3><img src='ico/Grundbuch_zu.png' width='16' height='16' alt=''> Grundb&uuml;cher</h3>"
+			."\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;
+				."\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-Nachw ruft sich selbst mit geaend. Param. auf. Posit. auf Marke #gb
+				// Umschalter: FS-Nachweis ruft sich selbst mit geaendertem Parameter auf. Positionierung auf Marke "#gb"
 				if ($eig=="j") {
 					echo "&amp;eig=n#gb' title='Flurst&uuml;cksnachweis'>ohne Eigent&uuml;mer</a>";
-				} else { // ++ kÃ¶nnte man sich sparen, wenn unten nur ein "fiktives Blatt" kommt
+				} else {
 					echo "&amp;eig=j#gb' title='Flurst&uuml;cks- und Eigent&uuml;mernachweis'>mit Eigent&uuml;mer "
 					."<img src='ico/EigentuemerGBzeile.png' width='16' height='16' alt=''></a>";
@@ -687,5 +709,5 @@
 		."\n\t</td>"
 	."\n</tr>"
-."\n</table>\n";
+."\n</table>";
 
 // B U C H U N G S S T E L L E N  zum FS (istGebucht)
@@ -699,12 +721,12 @@
 $ress = pg_execute("", $v);
 if (!$ress) {
-	echo "\n<p class='err'>Keine Buchungsstelle.</p>\n";
+	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 "<p class='dbg'>SQL=<br>".$sql."<br>$1 = gml_id = '".$gmlid."'</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)) {
+while($rows = pg_fetch_array($ress)) {  // Schleife Buchungs-Stelle
 	$gmls=$rows["gml_id"]; // gml b-Stelle
 	$lfd=$rows["lfd"]; // BVNR
@@ -723,6 +745,6 @@
 	$resg=pg_execute("", $v);
 	if (!$resg) {
-		echo "\n<p class='err'>Kein Buchungsblatt.</p>\n";
-		if ($debug > 2) {echo "<p class='dbg'>SQL=<br>".$sql."<br>$1 = gml_id = '".$gmls."'</p>";}
+		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
@@ -732,4 +754,5 @@
 		$blattkeyg=$rowg["blattart"]; // Key
 		$blattartg=$rowg["blattartv"]; // Value
+		$blatt=$rowg["blatt"];
 		echo "\n<hr>"
 		."\n<table class='outer'>"
@@ -739,26 +762,26 @@
 				// Rahmen mit GB-Kennz
 				if ($blattkeyg == 1000) {
-					echo "\n\t<table class='kennzgb' title='Bestandskennzeichen'>";
+					echo "\n\t\t<table class='kennzgb' title='Bestandskennzeichen'>";
 				}else {
-					echo "\n\t<table class='kennzgbf' title='Bestandskennzeichen'>"; // dotted
+					echo "\n\t\t<table class='kennzgbf' title='Bestandskennzeichen'>"; // GB fiktiv = Rahmen dotted
 				}
-					echo "\n\t<tr>\n\t\t<td class='head'>Bezirk</td>"
-						."\n\t\t<td class='head' title='".$rowg["blattartd"]."'>";
+					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<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'>";
-							if ($showkey) {echo "<span class='key'>".$rowg["bezirk"]."</span><br>";}
+						."\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<td title='Grundbuch-Blatt'><span class='wichtig'>".$rowg["blatt"]."</span></td>"
-						."\n\t\t<td title='Bestandsverzeichnis-Nummer (BVNR, Grundst&uuml;ck)'>".$rows["lfd"]."</td>"
-						."\n\t\t<td title='".$barttitle."'>";
+						."\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</tr>"
-				."\n\t</table>";
+					."\n\t\t</tr>"
+				."\n\t\t</table>";
 
 				// Miteigentumsanteil
@@ -766,8 +789,11 @@
 					echo "\n<p class='ant'>".$rows["zaehler"]."/".$rows["nenner"]."&nbsp;Anteil am Flurst&uuml;ck</p>";
 				}
-			echo "\n</td>\n<td>"; // Outer rechte Spalte: NW-Links
-				echo "\n\t<p class='nwlink noprint'>weitere Auskunft:<br>"
-					."\n\t\t<a href='alkisbestnw.php?gkz=".$gkz."&amp;gmlid=".$gmlg."#bvnr".$lfd;
-						if ($showkey)   {echo "&amp;showkey=j";}
+			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'>";
@@ -777,9 +803,10 @@
 						echo $blattartg." <img src='ico/GBBlatt_link.png' width='16' height='16' alt=''>"
 					."</a>"
-				."\n\t</p>";
-
-				ber_bs_hinw($gmls); // berechtigte Buchungstellen Hinweis
-
-			echo "\n</td>"
+				."\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>";
@@ -787,8 +814,8 @@
 		// +++ Weitere Felder ausgeben? BeschreibungDesUmfangsDerBuchung
 		if ($rows["sond"] != "") {
-			echo "<p class='sond' title='Sondereigentum'>Verbunden mit dem Sondereigentum<br>".$rows["sond"]."</p>";
+			echo "\n<p class='sond' title='Sondereigentum'>Verbunden mit dem Sondereigentum<br>".$rows["sond"]."</p>";
 		}
 		if ($rows["nrpl"] != "") {
-			echo "<p class='nrap' title='Nummer im Aufteilungsplan'>Nummer <span class='wichtig'>".$rows["nrpl"]."</span> im Aufteilungsplan.</p>";
+			echo "\n<p class='nrap' title='Nummer im Aufteilungsplan'>Nummer <span class='wichtig'>".$rows["nrpl"]."</span> im Aufteilungsplan.</p>";
 		}
 
@@ -796,6 +823,5 @@
 		// Person <-benennt< AX_Namensnummer  >istBestandteilVon-> AX_Buchungsblatt
 		if ($eig=="j") { // Wahlweise mit/ohne EigentÃŒmer
-			echo "\n\n<h3><img src='ico/Eigentuemer_2.png' width='16' height='16' alt=''> Angaben zum Eigentum</h3>\n";
-			$n = eigentuemer($con, $gmlg, false, ""); // ohne Adresse
+			$n = eigentuemer($gmlg, false, ""); // ohne Adresse
  			if ($n == 0) {
 				if ($blattkeyg == 1000) {
@@ -806,11 +832,19 @@
 			}
 		}
-		$bl++;
-	}
-	if ($bl == 0) {echo "\n<p class='err'>Kein Buchungsblatt gefunden.</p>";}
-	$bs++;
-}
+
+		// 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 gefunden.</p>";}
+if ($bs == 0) {echo "\n<p class='err'>Keine Buchungstelle zum Flurst&uuml;ck gefunden.</p>";}
 pg_close($con);
 echo <<<END
@@ -823,5 +857,5 @@
 </div>
 END;
-footer($gmlid, $_SERVER['PHP_SELF']."?", "&amp;eig=".$eig);
+footer($gmlid, $_SERVER['PHP_SELF']."?", "&amp;eig=".$eig."&amp;berbu=".$berbu);
 ?>
 </body>
Index: trunk/info/info/alkisn/alkisauszug.css
===================================================================
--- trunk/info/info/alkisn/alkisauszug.css	(revision 386)
+++ trunk/info/info/alkisn/alkisauszug.css	(revision 387)
@@ -15,13 +15,15 @@
 	2016-02-24	Umstellung norBIT-Struktur
 	2016-12-01	Stop-Meldung bei BerechtigungsprÃŒfung, Sortierspalten
+	2017-06-08	Tab-Zeilen-Farbe wechseln, Spaltenbreite td.flag, media screen
 */
-body	{background-color: #FDFFFD;}
+body	{background-color: #FEFFFE;}
 p, body	{font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;
 	font-size: 10pt; color: #000033; margin-top: 2pt; margin-bottom: 2pt;}
 
-/* ** Banner im Kopf (farbiger Balken), Farbcode fuer Nachweis-Art ** */
-p.fsausk,p.fskennz,p.fsei,p.fshis,p.gbkennz,p.nakennz,p.geb,p.lage,p.strasse,p.recht {text-align: right;}
+/* Banner im Kopf (farbiger Balken), Farbcode fuer Nachweis-Art (gleiche Farbe wie Rahmen um das Kennzeichen) */
+p.fsausk,p.fskennz,p.fsei,p.fshis,p.gbkennz,p.nakennz,p.geb,p.lage,p.strasse,p.recht {text-align: right; padding-top: 4px; padding-bottom: 4px; padding-right: 24px;}
+
 p.fsausk	{background-color: teal; color: silver;}	/* Uebersichts-Seite Flurstuecks-Auskunft */
-p.fskennz,p.fsei{background-color: navy; color: silver;}	/* Flurstuecks-Nachweis */
+p.fskennz,p.fsei{background-color: navy; color: silver;} /* Flurstuecks-Nachweis */
 p.fshis		{background-color: gray; color: white;}		/* Flurstuecks-Historie */
 p.gbkennz	{background-color: green; color: silver;}	/* Bestandsnachweis */
@@ -54,7 +56,6 @@
 a:hover		{color: rgb(255,40,40);}
 
-/* Globaler Identifikator gml_id - Link fuer Entwicklung */
-a.gmlid		{text-decoration: none;	color: silver; font-style: italic; font-size: 7pt; text-align: right;}
-span.gmlid	{font-style: italic; font-size: 7pt; text-align: right;}
+/* Konfiguration */
+a.keyswitch {text-decoration: none; color: grey; font-style: italic; font-size: 7pt; text-align: right;}
 
 /* komplette Adresse im Rahmen */
@@ -93,4 +94,5 @@
 
 td.fla	{width: 110px; padding-right: 4px; text-align: right;} /* Flaechen rechtsbuendig (stellengerecht) */
+td.flag	{min-width: 110px; padding-right: 4px; text-align: right;} /* .. im GB-Bestandsnachweis erweiterbar */
 td.fsnr	{padding-right: 4px; text-align: right;} /* Flst.-Nr. rechtsbuendig */
 td.key	{width:  35px; padding-right: 4px; padding-left: 4px;}
@@ -115,5 +117,5 @@
 td.nhd	{width: 150px;}			/* Namen - linke / rechte Spalte */
 td.nam	{font-weight: bold;}
-td.gbl	{border-bottom: 1px dotted green;}	/* Name: GB-Liste */
+/* td.gbl	{border-bottom: 1px dotted green;}	 Name: GB-Liste */
 /* Inlay analog WMS-Feature-Info Template: linke Tabellenspalte - Feldname */
 td.li, td.gr {color:gray; padding-left: 8px; padding-right:8px; border-bottom: 0px; vertical-align:top;}
@@ -126,4 +128,8 @@
 td.gtl {color: rgb(140,140,100);}	/* GebÃ€ude teilweise auf FS */
 td.gan {color: rgb(210,170,170);}	/* GebÃ€ude angrenzend an FS*/
+
+/* Farbwechsel je Zeile pair/unpair */
+tr.paa {background-color: rgb(248,245,245);}
+tr.unp {background-color: rgb(252,255,252);}
 
 /* Ueberschriften */
@@ -147,12 +153,24 @@
 /* Seitenfuss */
 .buttonbereich	{font-size: 7pt; text-align: right;}
-.confbereich	{font-size: 7pt; background-color: #EFFDFF; width: 88%; position: relative; left: 40px;}
+.confbereich	{font-size: 7pt; background-color: #F2F2F2; width: 65%; position: relative; left: 50px; border-radius: 12px; padding-right: 26px; margin-top: 20px;}
 
-/* abweichender Druck */
+/* Nur am Bildschirm: */
+@media screen {
+	/* gefÃŒllten farbiger Balken abrunden */
+	p.fsausk,p.fskennz,p.fsei,p.fshis,p.gbkennz,p.nakennz,p.geb,p.lage,p.strasse,p.recht { border-radius: 8px; }
+	.onlyprint {visibility: hidden;}
+}
+
+/* Abweichende Darstellung im Druck.
+Generell keine "Bedienelemente" mit drucken, also Links zu anderen Nachweisen oder optionale Umschalter fÃŒr den Umfang der Anzeige.
+Dies wird durch class='noprint' gesteuert. 
+GroÃe farbige FlÃ€chen vermeiden, z.B. durch Rahmen ersetzen. */
 @media print {
-	body {width: 98%; background-color:white;}
+	body	{background-color: white;} /* width: 98%; */
+	.noprint {visibility: hidden;}
 
-	/* Balken im Druck */
-	p.fskennz,p.fsei,p.fshis,p.gbkennz,p.nakennz,p.geb,p.lage,p.strasse,p.recht{text-align: right; color: black;}
+	/* Balken im Druck (auf weiÃem Hintergrund) mit schwarzer Schrift */
+	p.fskennz,p.fsei,p.fshis,p.gbkennz,p.nakennz,p.geb,p.lage,p.strasse,p.recht{color: black;}
+
 	p.fskennz,p.fsei{border-bottom: 2px solid navy; border-top: 2px solid navy;}
 	p.fshis		{border-bottom: 2px solid gray; border-top: 2px solid gray;}
Index: trunk/info/info/alkisn/alkisexport.php
===================================================================
--- trunk/info/info/alkisn/alkisexport.php	(revision 386)
+++ trunk/info/info/alkisn/alkisexport.php	(revision 387)
@@ -26,4 +26,9 @@
 				Siehe Datei "x_classic2norgis.sql" in /OSGeo4W64/apps/alkis-import/postcreate.d/
 				Sonderfall: Auch Export zu *allen* StraÃen der Stadt ohne Filter "gmlid".
+	2017-06-08 Validierung Eingabeparameter
+
+ToDo:
+	- In Dateiname StraÃenname statt gmlid verwenden?
+	- in alkislage.php fÃŒr den Typ "ohne Haunummer" den Export mit strasse und haus=o verlinken
 */
 
@@ -32,8 +37,8 @@
 	// dass ggf. mehrere Lagebezeichnungen in eine Zelle der Tabelle passen.
 	// FS >westAuf> Lage >> Katalog
-	$sql ="SELECT DISTINCT s.bezeichnung, l.hausnummer 
-	FROM ax_flurstueck f JOIN ax_lagebezeichnungmithausnummer l ON l.gml_id=ANY(f.weistauf)
-	JOIN ax_lagebezeichnungkatalogeintrag s ON l.kreis=s.kreis AND l.gemeinde=s.gemeinde AND l.lage=s.lage 
-	WHERE f.gml_id= $1 ORDER BY s.bezeichnung, l.hausnummer;";
+	$sql ="SELECT DISTINCT s.bezeichnung, l.hausnummer "
+	."FROM ax_flurstueck f JOIN ax_lagebezeichnungmithausnummer l ON l.gml_id=ANY(f.weistauf) "
+	."JOIN ax_lagebezeichnungkatalogeintrag s ON l.kreis=s.kreis AND l.gemeinde=s.gemeinde AND l.lage=s.lage "
+	."WHERE f.gml_id= $1 ORDER BY s.bezeichnung, l.hausnummer;";
 
 	$v=array($gmlid);
@@ -61,6 +66,18 @@
 // HIER START //
 
-$gkz=''; $tabtyp = ''; $gemarkung=''; $gmlid=''; $haus=''; // mÃ¶gliche Parameter initialisieren
-$cntget = extract($_GET); // aktuelle Parameter aus URL auslesen
+$tabtyp='';  $haus=''; // mÃ¶gliche Parameter initialisieren
+$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");}
+if (!isset($gkz) or !preg_match('#^[0-9]{3}$#', $gkz)) {die("Eingabefehler gkz");}
+if (isset($gemarkung)) {
+	if (!preg_match('#^[0-9]{4}$#', $gemarkung)) {die("Eingabefehler gemarkung");}
+} else {
+	$gemarkung='';
+}
+if (!preg_match('#^[m|o]{0,1}$#', $haus)) {die("Eingabefehler haus");}
+if (!preg_match('#^[a-z]{0,10}$#', $tabtyp)) {die("Eingabefehler tabtyp");}
+
 require_once("alkis_conf_location.php"); // Konfiguration laden
 include("alkisfkt.php"); // Funktionen der ALKIS-Auskunft laden
@@ -70,11 +87,11 @@
 		$tabtyp = 'gemarkung';
 	} else {  // Bei "gmlid" MUSS man zwingend die Tabelle dazu nennen
-		$err="Fehler: Art des Suchfilters nicht angeben.";
-		echo "\n".$err; exit ($err);
+		$err="\nFehler: Art des Suchfilters nicht angeben.";
+		exit ($err);
 	}
 } elseif ($tabtyp == 'gemarkung') {
 	if ($gemarkung == '') {
-		$err="Fehler: Gemarkungsnummer nicht angeben.";
-		echo "\n".$err; exit ($err);
+		$err="\nFehler: Gemarkungsnummer nicht angeben.";
+		exit ($err);
 	}
 }
@@ -101,6 +118,6 @@
 	} elseif ($haus == 'm' or $haus == 'o') { // Sonderfall 2 - alle mit/ohne Hausnummer, nur ÃŒber View "exp_csv_str" mÃ¶glich
 		if ($tabtyp != 'strasse') {
-			$err="Fehler: Falsche Kombination Parameter tabtyp='".$tabtyp."' mit Wert fuer Haus.";
-			echo "\n".$err; exit ($err);
+			$err="\nFehler: Falsche Kombination Parameter tabtyp='".$tabtyp."' mit Wert fuer Haus.";
+			exit ($err);
 		}
 		if ($haus == 'm') { // den Zusatzfilter m/o im Dateinamen dokumentieren
@@ -111,6 +128,6 @@
 */
 	} else {
-		$err= "Fehler: Kein passender Wert fuer die Suche angegeben.";
-		echo "\n".$err; exit ($err);
+		$err="\nFehler: Kein passender Wert fuer die Suche angegeben.";
+		exit ($err);
 	}
 }
@@ -129,7 +146,7 @@
 	echo "\n".$err; exit($err);
 }
-pg_set_client_encoding($con, 'LATIN1'); // FÃŒr Excel kein UTF8 ausgeben
-
-$viewname="exp_csv"; // Standard-View, ist in der Datenbank gespeichert
+pg_set_client_encoding($con, 'LATIN1'); // FÃŒr Excel kein UTF8
+
+$viewname="exp_csv"; // Standard-View, in der DB gespeichert
 $v=array($gmlid); // Standard-Filter-Feld
 
@@ -154,6 +171,6 @@
 		break;
 	default:
-		$err= "Falscher Parameter '".$tabtyp."'";
-		echo "\n".$err; exit($err);
+		$err="\nFalscher Parameter '".$tabtyp."'";
+		exit($err);
 		break;
 }
@@ -162,5 +179,5 @@
 $sql="SELECT * FROM ".$viewname." WHERE ".$filter." = $1 ";
 
-if ($haus != '') { // nur FS mit/ohne verschlÃŒsselter Lagebezeichnung
+if ($haus == 'm' or $haus == 'o') { // nur FS mit/ohne verschl. Lagebez.
 	if ($gmlid == '') { // m/o-Filter als einziger Filter
 		$sql="SELECT * FROM ".$viewname." WHERE fall='".$haus."' "; // Ersetzen
@@ -169,5 +186,5 @@
 		// - Sonst Ausgabe von Rand-FlurstÃŒcken (bei geometrischer Filterung des NBA-Verfahrens)
 		// - Sonst ggf. Ausgabe Kreisgebiet
-	} else { // als zusÃ€tzlicher Filter 
+	} else { // als zusÃ€tzlicher Filter AND
 		$sql.="AND fall='".$haus."' "; // m/o-Filter AnhÃ€ngen
 	}
@@ -177,6 +194,6 @@
 $res=pg_execute("", $v);
 if (!$res) {
-	$err= "Fehler bei Datenbankabfrage";
-	echo "\n".$err; exit($err);
+	$err="\nFehler bei Datenbankabfrage";
+	exit($err);
 }
 $i=1; // Kopfzeile zÃ€hlt mit
@@ -254,5 +271,5 @@
 	} else { 
 		$adresse=$row["strasse"]." ".$row["hausnummer"].", ".$row["plz"]." ".$ort;
-		$land=$row["land"]; // nur andere LÃ€nder anzeigen
+		$land=$row["land"]; // nur andere Laender anzeigen
 		if (($land != "DEUTSCHLAND") and ($land != "")) {
 			$adresse.=" (".$land.")";
@@ -286,6 +303,6 @@
 pg_free_result($res);
 if ($i == 1) { // nur Kopf
-	$err= "Kein Treffer fuer gml_id='".$gmlid."'";
-	echo "\n".$err; exit ($err);
+	$err="\nKein Treffer fuer gml_id='".$gmlid."'";
+	exit ($err);
 }
 pg_close($con);
Index: trunk/info/info/alkisn/alkisfkt.php
===================================================================
--- trunk/info/info/alkisn/alkisfkt.php	(revision 386)
+++ trunk/info/info/alkisn/alkisfkt.php	(revision 387)
@@ -10,4 +10,5 @@
 	2016-03-14 Kleine Korrekturen
 	2016-11-29 Gemeinsam genutzte Datenbanken ermÃ¶glichen (Filter Gemeinde)
+	2017-06-08 gestreifte Tabelle, Feinkorrekturen
 */
 
@@ -19,18 +20,19 @@
 	global $gkz, $showkey, $hilfeurl, $auth;
 
+	// S c r e e n - Foot
 	echo "\n<div class='confbereich noprint'>"
-	."\n<table class='outer'>\n<tr>";
+	."\n\t<table class='outer'>\n\t<tr>";
 
 	// Spalte 1: Info Benutzerkennung
 	if ($auth == "mapbender") {
 		$customer=$_SESSION["mb_user_name"];
-		echo "\n\t<td title='Info'><i>Benutzer:&nbsp;".$customer."</i></td>";
+		echo "\n\t\t<td title='Info'><i>Benutzer:&nbsp;".$customer."</i></td>";
 	} else {
-		echo "\n\t<td>&nbsp;</td>";
+		echo "\n\t\t<td>&nbsp;</td>";
 	}
 
 	// Spalte 2: Umschalter
-	echo "\n\t<td title='Konfiguration'>";
-		$mylink ="\n\t\t<a class='gmlid' href='".$link."gkz=".$gkz."&amp;gmlid=".$gmlid.$append;
+	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
@@ -39,20 +41,27 @@
 			echo $mylink."&amp;showkey=j' title='Verschl&uuml;sselungen anzeigen'>Schl&uuml;ssel ein</a>";
 		}
-	echo "\n\t</td>";
+	echo "\n\t\t</td>";
 
 	// Spalte 3
-	echo "\n\t<td title='Hilfe'>"
-	."\n\t\t<p class='nwlink'>\n\t\t\t<a target='_blank' href='".$hilfeurl."' title='Dokumentation'>Hilfe zur ALKIS-Auskunft</a>\n\t\t</p>\n\t</td>"
-	."\n</tr>\n</table>\n</div>\n";
+	echo "\n\t\t<td title='Hilfe'>"
+		."\n\t\t\t<p class='nwlink'>\n\t\t\t\t<a target='_blank' href='".$hilfeurl."' title='Dokumentation'>Hilfe zur ALKIS-Auskunft</a>\n\t\t\t</p>\n\t\t</td>"
+		."\n\t</tr>\n\t</table>"
+	."\n</div>\n";
+
+	// P r i n t - Foot
+	if ($auth == "mapbender") {
+	//	$customer=$_SESSION["mb_user_name"];
+		echo "\n<p class='onlyprint'><i>Mapbender-Benutzer:&nbsp;".$customer."</i></p>";
+	}
+
 	return 0;
 }
 
-function ber_bs_hinw($gmls) {
-	// Unter einem Grundbuch-Link den Hinweis auf "berechtigte Buchungssstellen" anzeigen
-	// In FS-Nachweis wird nur der EigentÃŒmer des direkt gebuchten GrundstÃŒcks angezeigt.
-	// Den Erbbauberechtigten sieht man erst in der Grundbuch-Auskunft.
-	global $debug, $showkey;
-
-	// Buchungstelle dien. >an> Buchungstelle herr.
+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;
+
+	// 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) " 
@@ -61,26 +70,167 @@
 	."GROUP BY sh.buchungsart, a.v;";
 
-	$v = array($gmls); // id dienende BS
+	$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>\n";
-		if ($debug > 2) {echo "<p class='dbg'>SQL=<br>".$sql."<br>$1 = gml_id = '".$gmls."'</p>";}
-	}
+		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
+	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) "
+	."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
+	$resber = pg_prepare("", $sql);
+	$resber = pg_execute("", $v);
+	if (!$resber) {
+		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>";}
+	}
+
 	$an=0;
-	while($rowan = pg_fetch_array($resan)) {
-		$an++;
-		if ($an == 1) {echo "\n\t<br>\n\t<p class='nwlink' title='Andere Grundst&uuml;cke mit Rechten an diesem.'>Berechtigte Buchungen:<br><b>";}
-		if ($an > 1) {echo",<br>";} // kann es gemischste Buchungsarten geben?
-		echo $rowan["anz"]." ".htmlentities($rowan["v"], ENT_QUOTES, "UTF-8");
-		if ($showkey) {echo " <span class='key'>(".$rowan["buchungsart"].")</span>";}
-	}
-	if ($an == 0) {
-		echo "<br><p class='nwlink' title='Kein anderes Grundst&uuml;ck hat ein Recht an diesem.'>Keine berechtigte Buchung</p>";
-	} else {
-		echo "</b></p>";
-	}
-	pg_free_result($resan);
+	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++;	
+	}
+	pg_free_result($resber);
+	return;
 }
+
 
 function kurz_namnr($lang) {
@@ -101,5 +251,5 @@
 	Weiterere Aufrufe ggf. bei Erbbaurecht fÃŒr die mit "an" verknuepften Buchungsstellen.
 	Table-Tag und Tabellenkopf werden im aufrufenden Programm ausgegeben. */
-	global $debug, $gkz, $showkey, $filtkreis, $filtgem;
+	global $debug, $gkz, $showkey, $filtkreis, $filtgem, $trclass; // $zpaar
 
 	// F L U R S T U E C K
@@ -117,5 +267,5 @@
 	$resf = pg_prepare("", $sql);
 	$resf = pg_execute("", $v);
-	if (!$resf) {echo "<p class='err'>Fehler bei Flurst&uuml;ck</p>\n";}
+	if (!$resf) {echo "\n<p class='err'>Fehler bei Flurst&uuml;ck</p>";}
 
 	if($bvnraus) { // nur bei direkten Buchungen die lfdNr ausgeben
@@ -124,25 +274,25 @@
 		$bvnr="";
 	}
-	$altlfdnr="";
+	$altbvnr="";
 	$j=0;
 	while($rowf = pg_fetch_array($resf)) {
 		$flur=str_pad($rowf["flurnummer"], 3, "0", STR_PAD_LEFT);
-		// ohne fuehrende Nullen?
 		$fskenn=$rowf["zaehler"];
-		if ($rowf["nenner"] != "") { // Bruchnummer
+		if ($rowf["nenner"] != "") { // Bruch
 			$fskenn.="/".$rowf["nenner"];
 		}
 		$flae=number_format($rowf["amtlicheflaeche"],0,",",".") . " m&#178;";
 
-		echo "\n<tr>"; // eine Zeile je Flurstueck
+		echo "\n<tr class='".$trclass."'>"; // eine Zeile je Flurstueck
 			// Sp. 1-3 der Tab. aus Buchungsstelle, nicht aus FS
-			if($lfdnr == $altlfdnr) { // gleiches Grundstueck
+			if($bvnr == $altbvnr) { // gleiches Grundstueck, leer lassen
 				echo "\n\t<td>&nbsp;</td>"
 				."\n\t<td>&nbsp;</td>"
 				."\n\t<td>&nbsp;</td>";
 			} else { // Sprungmarke, BVNR
-				echo "\n\t<td>"
-					."<a id='bvnr".$lfdnr."'></a><span class='wichtig'>".$bvnr."</span>" /// ++++ FEHLER?? $bvnr
-				."</td>";
+				echo "\n\t<td id='bvnr".$bvnr."'>"; // Sprungmarke
+				//	echo "\n\t\t<a id='bvnr".$bvnr."'></a>";
+					echo "<span class='wichtig'>".$bvnr."</span>"
+				."\n\t</td>";
 
 				echo "\n\t<td title ='".$bartstory."'>"; // Buchungsart 
@@ -151,7 +301,8 @@
 				echo "</td>"
 				."\n\t<td>&nbsp;</td>"; // Anteil
-				$altlfdnr=$lfdnr;
-			}
-			//Sp. 4-7 aus Flurstueck
+				$altbvnr=$bvnr;
+			}
+
+			// Sp. 4-7 aus Flurstueck
 			echo "\n\t<td>";
 			if ($showkey) {echo "<span class='key'>".$rowf["gemarkungsnummer"]."</span> ";}
@@ -160,27 +311,23 @@
 			."\n\t<td class='fsnr'><span class='wichtig'>".$fskenn."</span>"
 			."</td>"
-			."\n\t<td class='fla'>".$flae."</td>";
-
-			echo "\n\t<td><p class='nwlink noprint'>"
-				."<a href='alkisfsnw.php?gkz=".$gkz."&amp;gmlid=".$rowf["gml_id"]."&amp;eig=n";
+			."\n\t<td class='flag'>".$flae."</td>"; // "width" hier (flaG) erweiterbar, weil in andere Zeile die Buchungsart steht 
+
+			echo "\n\t<td>\n\t\t<p class='nwlink noprint'>"
+				."\n\t\t\t<a href='alkisfsnw.php?gkz=".$gkz."&amp;gmlid=".$rowf["gml_id"]."&amp;eig=n";
 					if ($showkey)   {echo "&amp;showkey=j";}
 					echo "' title='Flurst&uuml;cksnachweis'>Flurst&uuml;ck "
 					."<img src='ico/Flurstueck_Link.png' width='16' height='16' alt=''>"
 				."</a>"
-			."</p></td>"
+			."\n\t\t</p>"
+		."\n\t</td>"
 		."\n</tr>";
 
 		$j++;
-	} // Ende Flurstueck
-
-/*	if ($j == 0 ) { // nur Entw.
-		if ($debug > 1) {echo "<p class='dbg'>Keine FS gefunden</p>";}
-		if ($debug > 2) {echo "<p class='dbg'>SQL='".$sql."'<br>$1 = '".$gml_bs."'</p>";}
-	} */
+	} // Ende Loop Flurstueck
 	pg_free_result($resf);
 	return $j;
 }
 
-function eigentuemer($con, $gmlid, $mitadresse, $lnkclass) {
+function eigentuemer($gmlid, $mitadresse, $lnkclass) {
 	// Tabelle mit Eigentuemerdaten zu einem Grundbuchblatt ausgeben
 	// Sp.1 = Namennummer, Sp. 2 = Name / Adresse, Sp. 3 = Link
@@ -203,9 +350,9 @@
 	} // 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
-FROM ax_namensnummer n 
-LEFT JOIN alkis_wertearten wn ON cast(n.artderrechtsgemeinschaft AS character varying)=wn.k AND wn.element='ax_namensnummer' AND wn.bezeichnung='artderrechtsgemeinschaft' 
-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;";
+	$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 "
+	."FROM ax_namensnummer n "
+	."LEFT JOIN alkis_wertearten wn ON cast(n.artderrechtsgemeinschaft AS character varying)=wn.k AND wn.element='ax_namensnummer' AND wn.bezeichnung='artderrechtsgemeinschaft' "
+	."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
@@ -214,12 +361,15 @@
 
 	if (!$resn) {
-		echo "\n<p class='err'>Fehler bei Eigent&uuml;mer</p>\n";
-		if ($debug > 2) {echo "<p class='err'>SQL=<br>".$sqln."<br>$1=gml= '".$gmlid."'</p>";}
-	}
-
-	echo "\n<table class='eig'>";
+		echo "\n<p class='err'>Fehler bei Eigent&uuml;mer</p>";
+		// kein Fehler bei Blattarten > 1000
+		//if ($debug > 2) {echo "\n<p class='err'>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'>";
+		}
 		$gmlnn=$rown["gml_id"];
 		$namnum=kurz_namnr($rown["lfd"]);
@@ -249,10 +399,4 @@
 		// Schleife 2: P e r s o n
 		// Beziehung: ax_person  <benennt<  ax_namensnummer
-
-	//	$sqlp="SELECT p.gml_id, p.nachnameoderfirma, p.vorname, p.geburtsname, p.geburtsdatum, p.namensbestandteil, p.akademischergrad "
-	//	."FROM ax_person p JOIN ax_namensnummer nn ON nn.benennt=p.gml_id WHERE nn.gml_id= $1 AND p.endet IS NULL AND nn.endet IS NULL;";
-	//	$v = array($gmlnn);
-
-	// 03.03.16:
 		$sqlp="SELECT gml_id, nachnameoderfirma, vorname, geburtsname, geburtsdatum, namensbestandteil, akademischergrad "
 		."FROM ax_person WHERE gml_id= $1 AND endet IS NULL;";
@@ -262,6 +406,6 @@
 		$resp = pg_execute("", $v);
 		if (!$resp) {
-			echo "\n\t<p class='err'>Fehler bei Person</p>\n";
-			if ($debug > 2) {echo "<p class='err'>SQL=<br>".$sqlp."<br>$1=gml= '".$gmlpers."'</p>";}
+			echo "\n\t<p class='err'>Fehler bei Person</p>";
+			if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".$sqlp."<br>$1=gml= '".$gmlpers."'</p>";}
 		}
 
@@ -288,8 +432,8 @@
 			echo "\n\t<td>\n\t\t<p class='nwlink noprint'>";
 				if ($showkey AND $eiartkey != '') { // oft leer
-						echo "<span class='key'>(".$eiartkey.")</span> ";
-				}
-				echo "\n\t\t<a href='".$lnkvor."alkisnamstruk.php?gkz=".$gkz."&amp;gmlid=".$rowp[0];
-				if ($showkey)   {echo "&amp;showkey=j";}
+					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];
+				if ($showkey) {echo "&amp;showkey=j";}
 				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>"
@@ -306,6 +450,6 @@
 
 				if (!$resa) {
-					echo "\n\t<p class='err'>Fehler bei Adressen</p>\n";
-					if ($debug > 2) {echo "<p class='err'>SQL=<br>".$sqla."<br>$1=gml= '".$gmlp."'</p>";}
+					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>";}
 				}
 				$j=0;
@@ -339,5 +483,4 @@
 			}
 			// 'keine Adresse' kann vorkommen, z.B. "Deutsche Telekom AG"
-
 			$i++; // cnt Person
 
@@ -353,5 +496,5 @@
 			}
 		} // End Loop Person
-		if ($i == 0) { // Kine Parson. Kommt vor hinter Zeile "Erbengemeinschaft", ist dann KEIN Fehler
+		if ($i == 0) { // Keine Person. Das kommt vor hinter der Zeile "Erbengemeinschaft" und ist dann KEIN Fehler
 			if ($rechtsg != 9999) {
 				echo "\n<p class='err'>(Die Person mit der ID '".$gmlpers."' fehlt im Datenbestand)</p>";
@@ -365,9 +508,10 @@
 		$n++; // cnt NamNum
 	} // End Loop NamNum
-	echo "\n</table>";
-	if ($n == 0) { // bei "Fiktives Blatt" KEIN Fehler 
+	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>";}
+			//if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".$sqln."<br>$1=gml(Blatt)= '".$gmlid."'</p>";}
 		}
 	}
Index: trunk/info/info/alkisn/alkisstrasse.php
===================================================================
--- trunk/info/info/alkisn/alkisstrasse.php	(revision 386)
+++ trunk/info/info/alkisn/alkisstrasse.php	(revision 387)
@@ -10,16 +10,21 @@
 	2016-11-29 HTML5, Gemeinsam genutzte Datenbanken ermÃ¶glichen, SQL optimiert (FS-Liste jetzt schneller)
 	2017-02-23 Neuer Parameter &haus=m/o zum alkisexport.php
-
-ToDo: Neuen Parameter haus=m/o zum ALKISexport (alkisexport.php) bedienen
+	2017-06-08 Validierung Eingabeparameter, gestreifte Tabelle, Feinkorrekturen
 */
 session_start();
-$id="n";
-$cntget = extract($_GET);
+
+$showkey="n"; // Var. aus Parameter initalisieren
+$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");}
+if (!isset($gkz) or !preg_match('#^[0-9]{3}$#', $gkz)) {die("Eingabefehler gkz");}
+if (!preg_match('#^[j|n]{0,1}$#', $showkey)) {die ("Eingabefehler showkey");}
+if ($showkey == "j") {$showkey=true;} else {$showkey=false;}
+
 require_once("alkis_conf_location.php");
 if ($auth == "mapbender") {require_once($mapbender);}
 include("alkisfkt.php");
 
-$keys = isset($_GET["showkey"]) ? $_GET["showkey"] : "n";
-if ($keys == "j") {$showkey=true;} else {$showkey=false;}
 ?>
 <!doctype html>
@@ -27,4 +32,5 @@
 <head>
 	<meta charset="utf-8">
+	<meta name="viewport" content="width=device-width, initial-scale=1.0">
 	<title>ALKIS Stra&szlig;e</title>
 	<link rel="stylesheet" type="text/css" href="alkisauszug.css">
@@ -35,12 +41,9 @@
 		}
 	</script>
-	<style type='text/css' media='print'>
-		.noprint {visibility: hidden;}
-	</style>
 </head>
 <body>
 <?php
 $con = pg_connect($dbconn." options='--application_name=ALKIS-Auskunft_alkisstrasse.php'");
-if (!$con) echo "<p class='err'>Fehler beim Verbinden der DB</p>\n";
+if (!$con) echo "\n<p class='err'>Fehler beim Verbinden der DB</p>";
 
 $sql ="SELECT s.land, s.regierungsbezirk, s.kreis, s.gemeinde, s.lage, s.bezeichnung AS snam, 
@@ -57,6 +60,6 @@
 $res=pg_execute("", $v);
 if (!$res) {
-	echo "\n<p class='err'>Fehler bei Lagebezeichnungskatalogeintrag.</p>\n";
-	if ($debug > 2) {echo "<p class='err'>SQL=<br>".$sql."<br>$1 = gml_id = '".$gmlid."'</p>";}
+	echo "\n<p class='err'>Fehler bei Lagebezeichnungskatalogeintrag.</p>";
+	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)) {
@@ -66,10 +69,10 @@
 	// Balken
 	$kennz=$gem."-".$lage." (".$snam.")"; // Schluessel als Sucheingabe in NAV brauchbar?
-	echo "<p class='strasse'>ALKIS Stra&szlig;e ".$kennz."&nbsp;</p>\n";
+	echo "\n<p class='strasse'>ALKIS Stra&szlig;e ".$kennz."&nbsp;</p>";
 } else {
-	echo "\n<p class='err'>Kein Treffer bei Lagebezeichnungskatalogeintrag.</p>\n";
-}
-
-echo "\n<h2><img src='ico/Strassen.png' width='16' height='16' alt=''> Stra&szlig;e</h2>\n";
+	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>";
 
 // Tabelle Kennzeichen
@@ -110,5 +113,5 @@
 	echo "\n\t\t<p class='nwlink noprint'>"
 		."\n\t\t<a href='alkislage.php?gkz=".$gkz."&amp;ltyp=o&amp;gmlid=".$ogml;
-		if ($showkey)   {echo "&amp;showkey=j";}
+		if ($showkey) {echo "&amp;showkey=j";}
 		echo "' title='Lage Ohne Hausnummer'>Lage <img src='ico/Lage_an_Strasse.png' width='16' height='16' alt=''></a>"
 	."\n\t\t</p>";
@@ -120,6 +123,6 @@
 
 // F L U R S T U E C K E
-echo "\n\n<a id='fs'></a><h3><img src='ico/Flurstueck.png' width='16' height='16' alt=''> Flurst&uuml;cke</h3>\n";
-echo "\n<p>Zusammenfassung von 'Lage mit Hausnummer' und 'Lage ohne Hausnummer' an dieser StraÃe</p>";
+echo "\n\n<h3 id='fs'><img src='ico/Flurstueck.png' width='16' height='16' alt=''> Flurst&uuml;cke</h3>"
+."\n<p>Zusammenfassung von 'Lage mit Hausnummer' und 'Lage ohne Hausnummer' an dieser StraÃe</p>";
 
 // ax_Flurstueck >weistAuf> ax_LagebezeichnungMitHausnummer  > = Hauptgebaeude 
@@ -142,6 +145,6 @@
 $resf=pg_execute("", $v);
 if (!$resf) {
-	echo "<p class='err'>Fehler bei Flurst&uuml;ck.</p>\n";
-	if ($debug > 2) {echo "<p class='err'>SQL=<br>".$sql."<br>$1 = gml_id = '".$gmlid."'</p>";}	
+	echo "\n<p class='err'>Fehler bei Flurst&uuml;ck.</p>";
+	if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = gml_id = '".$gmlid."'</p>";}	
 }
 
@@ -153,11 +156,12 @@
 	."\n\t<td class='head fla' title='amtliche Fl&auml;che in Quadratmeter'>Fl&auml;che</td>"
 	."\n\t<td class='head hsnr' title='Hausnummer aus der Lagebezeichnung des Flurst&uuml;cks'>HsNr.</td>"
-	."\n\t<td class='head nwlink noprint' title='Link: weitere Auskunft'>weit. Auskunft</td>"
+	."\n\t<td class='head nwlink noprint' title='Verlinkung zu anderen Nachweis-Arten und verbundenen Objekten'>weitere Auskunft</td>"
 ."\n</tr>";
 $j=0;
-$cnths=0; // Count Haus
 $gwgmkg=""; // Gruppenwechsel
 $gwflur="";
-
+$cnths=0; // Count Haus-Lagebezeichnung
+
+$zpaar=false; // Zeilen-Farbwechsel
 while($rowf = pg_fetch_array($resf)) {
 	$gmkg=$rowf["bezeichnung"];
@@ -166,8 +170,10 @@
 	if ($rowf["nenner"] != "") {$fskenn.="/".$rowf["nenner"];}
 	$flae=number_format($rowf["amtlicheflaeche"],0,",",".") . " m&#178;";
-	$lgml=$rowf["lgml"]; // ID von "Lage Mit" oder leer
+	$lgml=$rowf["lgml"]; // ID von "Lage Mit/Ohne"
 	$ltyp=$rowf["ltyp"]; // mit/ohne HsNr
 
-	echo "\n<tr>"
+	if ($zpaar) {$trclass='paa';} else {$trclass='unp';}
+	$zpaar=!$zpaar;
+	echo "\n<tr class='".$trclass."'>"
 		."\n\t<td>";
 		if ($showkey) {echo "<span class='key'>".$rowf["gemarkungsnummer"]."</span> ";}
@@ -191,14 +197,10 @@
 		."\n\t<td class='hsnr'>".$rowf["hausnummer"]."</td>"
 		."\n\t<td>\n\t\t<p class='nwlink noprint'>";
-
-			// Link "Lage"
-// ++++ FEHLER kann auch Typ "o" sein
-			if ($lgml != '') {
+			if ($ltyp == 'm') { // nur Typ "Mit Haus" anzeigen. Dar Typ 'o' ist immer gleich und identisch mit dem Link im Kopf
 				echo "\n\t\t<a href='alkislage.php?gkz=".$gkz."&amp;ltyp=".$ltyp."&amp;gmlid=".$lgml;
 				if ($showkey) {echo "&amp;showkey=j";}
-				echo "' title='Lage Mit Hausnummer'>Lage <img src='ico/Lage_mit_Haus.png' width='16' height='16' alt=''></a>&nbsp;";
+				echo "' title='Lagebezeichnung mit Hausnummer'>Lage <img src='ico/Lage_mit_Haus.png' width='16' height='16' alt=''></a>&nbsp;";
 				$cnths++;
 			}
-
 			// Link FlurstÃŒcksnachweis
 			echo "\n\t\t<a href='alkisfsnw.php?gkz=".$gkz."&amp;gmlid=".$rowf["gml_id"]."&amp;eig=n";
@@ -212,6 +214,6 @@
 if ($j > 6) {
 	echo "<p class='cnt'>".$j." Flurst&uuml;cke";
-	if ($cnths > 4) {echo ", ".$cnths." H&auml;user";}
-	echo "</p>";
+	if ($cnths > 1) {echo " und ".$cnths." Hauptgeb&auml;ude";}
+	echo " mit dieser StraÃe in der Lagebezeichnung</p>";
 }
 pg_free_result($resf);
@@ -222,5 +224,5 @@
 	<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.png" width="16" height="16" alt="Export"></a>&nbsp;
+	<a title="Export als CSV" href='javascript:ALKISexport("")'>alle<img src="ico/download.png" width="16" height="16" alt="Export"></a>&nbsp;
 	<a title="CSV - nur Flurst&uuml;cke mit Hausnummer" href='javascript:ALKISexport("m")'>mit HsNr<img src="ico/download.png" width="16" height="16" alt="Export"></a>&nbsp;
 	<a title="CSV - nur Flurst&uuml;cke ohne Hausnummer" href='javascript:ALKISexport("o")'>ohne<img src="ico/download.png" width="16" height="16" alt="Export"></a>&nbsp;
Index: trunk/info/info/alkisn/alkisinlaybaurecht.php
===================================================================
--- trunk/info/info/alkisn/alkisinlaybaurecht.php	(revision 386)
+++ trunk/info/info/alkisn/alkisinlaybaurecht.php	(revision 387)
@@ -7,7 +7,14 @@
 	2016-02-24 Version fuer norGIS-ALKIS-Import
 	2016-11-29 HTML5, Gemeinsam genutzte Datenbanken ermöglichen
+	2017-06-08 Validierung Eingabeparameter, Feinkorrekturen
 */
 session_start();
-$cntget = extract($_GET);
+ 
+$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");}
+if (!isset($gkz) or !preg_match('#^[0-9]{3}$#', $gkz)) {die("Eingabefehler gkz");}
+
 require_once("alkis_conf_location.php");
 if ($auth == "mapbender") {require_once($mapbender);}
@@ -17,4 +24,5 @@
 <head>
 	<meta charset="utf-8">
+	<meta name="viewport" content="width=device-width, initial-scale=1.0">
 	<title>ALKIS Bau-, Raum- oder Bodenordnungsrecht</title>
 	<link rel="stylesheet" type="text/css" href="alkisauszug.css">
@@ -32,5 +40,5 @@
 <?php
 $con = pg_connect($dbconn." options='--application_name=ALKIS-Auskunft_alkisinlaybaurecht.php'");
-if (!$con) echo "<p class='err'>Fehler beim Verbinden der DB</p>\n";
+if (!$con) echo "\n<p class='err'>Fehler beim Verbinden der DB</p>";
 
 // Keine Spalten, die eine Berechtigungsprüfung nach Gemeinde ermöglichen:
@@ -45,8 +53,8 @@
 
 if (!$res) {
-	echo "\n<p class='err'>Fehler bei Baurecht.</p>\n";
-	if ($debug > 2) {echo "<p class='err'>SQL=<br>".$sql."<br>$1 = ".$gmlid."</p>\n";}
+	echo "\n<p class='err'>Fehler bei Baurecht.</p>";
+	if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".$sql."<br>$1 = ".$gmlid."</p>";}
 }
-echo "\n<h2><img src='ico/Gericht.png' width='16' height='16' alt=''> Bau-, Raum- oder Bodenordnungsrecht</h2>\n";
+echo "\n<h2><img src='ico/Gericht.png' width='16' height='16' alt=''> Bau-, Raum- oder Bodenordnungsrecht</h2>";
 
 if ($row = pg_fetch_array($res)) {
Index: trunk/info/info/alkisn/alkisbaurecht.php
===================================================================
--- trunk/info/info/alkisn/alkisbaurecht.php	(revision 386)
+++ trunk/info/info/alkisn/alkisbaurecht.php	(revision 387)
@@ -6,12 +6,20 @@
 	2016-02-24 Version fuer norGIS-ALKIS-Import
 	2016-11-29 HTML5, Gemeinsam genutzte Datenbanken ermöglichen
+	2017-06-08 Validierung Eingabeparameter, Feinkorrekturen
 */
 session_start();
-$cntget = extract($_GET);
+
+$showkey="n"; // Var. aus Parameter initalisieren
+$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");}
+if (!isset($gkz) or !preg_match('#^[0-9]{3}$#', $gkz)) {die("Eingabefehler gkz");}
+if (!preg_match('#^[j|n]{0,1}$#', $showkey)) {die ("Eingabefehler showkey");}
+if ($showkey == "j") {$showkey=true;} else {$showkey=false;}
+
 require_once("alkis_conf_location.php");
 if ($auth == "mapbender") {require_once($mapbender);}
 include("alkisfkt.php"); // f. Footer
-$keys = isset($_GET["showkey"]) ? $_GET["showkey"] : "n";
-if ($keys == "j") {$showkey=true;} else {$showkey=false;}
 echo <<<END
 <!doctype html>
@@ -19,4 +27,5 @@
 <head>
 	<meta charset="utf-8">
+	<meta name="viewport" content="width=device-width, initial-scale=1.0">
 	<title>ALKIS Bau-, Raum- oder Bodenordnungsrecht</title>
 	<link rel="stylesheet" type="text/css" href="alkisauszug.css">
@@ -28,5 +37,5 @@
 
 $con = pg_connect($dbconn." options='--application_name=ALKIS-Auskunft_alkisbaurecht.php'");
-if (!$con) echo "<p class='err'>Fehler beim Verbinden der DB</p>\n";
+if (!$con) echo "\n<p class='err'>Fehler beim Verbinden der DB</p>";
 
 // Spalte "a.d" ist immer leer
@@ -43,6 +52,6 @@
 $res = pg_execute("", $v);
 if (!$res) {
-	echo "\n<p class='err'>Fehler bei Baurecht.</p>\n";
-	if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".$sql."<br>$1 = ".$gmlid."</p>\n";}
+	echo "\n<p class='err'>Fehler bei Baurecht.</p>";
+	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)) {
@@ -54,7 +63,7 @@
 
 	// Balken
-	echo "<p class='recht'>ALKIS Bau-, Raum- oder Bodenordnungsrecht ".$artfest."-".$verfnr."&nbsp;</p>\n";
+	echo "<p class='recht'>ALKIS Bau-, Raum- oder Bodenordnungsrecht ".$artfest."-".$verfnr."&nbsp;</p>";
 
-	echo "\n<h2><img src='ico/Gericht.png' width='16' height='16' alt=''> Bau-, Raum- oder Bodenordnungsrecht</h2>\n";
+	echo "\n<h2><img src='ico/Gericht.png' width='16' height='16' alt=''> Bau-, Raum- oder Bodenordnungsrecht</h2>";
 
 	echo "\n<table>"
@@ -125,6 +134,6 @@
 $res=pg_execute("", $v);
 if (!$res) {
-	echo "\n<p class='err'>Keine Flurst&uuml;cke ermittelt.<br>\nSQL=<br></p>\n";
-//	if ($debug > 2) {echo "<p class='err'>SQL=<br>".$sql."<br>$1 = ".$gmlid."</p>\n";}
+	echo "\n<p class='err'>Keine Flurst&uuml;cke ermittelt.<br>\nSQL=<br></p>";
+//	if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = ".$gmlid."</p>";}
 }
 
@@ -159,8 +168,8 @@
 if ($fscnt == 0) { // nicht gefunden
 	if ($filtgem == '' ) { // ungefiltert
-		echo "<p class='err'>Kein Flurst&uuml;ck gefunden.</p>";
+		echo "\n<p class='err'>Kein Flurst&uuml;ck gefunden.</p>";
 	} else { // Wahrscheinliche Ursache = Filter
-		echo "<p class='err'>Kein Flurst&uuml;ck im berechtigten Bereich.</p>";
-	//	if ($debug > 2) {echo "<p class='err'>SQL=<br>".$sql."<br>$1 = ".$gmlid." $2 = ".$filtkreis." $3 = ".$filtgem."</p>\n";}
+		echo "\n<p class='err'>Kein Flurst&uuml;ck im berechtigten Bereich.</p>";
+	//	if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = ".$gmlid." $2 = ".$filtkreis." $3 = ".$filtgem."</p>";}
 	}
 } elseif ($fscnt == 50) {
Index: trunk/info/info/alkisn/alkisfshist.php
===================================================================
--- trunk/info/info/alkisn/alkisfshist.php	(revision 386)
+++ trunk/info/info/alkisn/alkisfshist.php	(revision 387)
@@ -7,4 +7,5 @@
 	2016-02-24 Version fuer norGIS-ALKIS-Import
 	2016-11-29 HTML5, Gemeinsam genutzte Datenbanken ermÃ¶glichen (Filter Gemeinde)
+	2017-06-06 Validierung Eingabeparameter, Feinkorrekturen
 */
 
@@ -85,5 +86,5 @@
 	if (!$resv) {
 		echo "\n<p class='err'>Fehler bei Vorg&auml;nger-FS.</p>";
-		if ($debug > 2) {echo "<p class='dbg'>SQL=<br>".$sqlv."<br>$1='".$fsk."'</p>";}
+		if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".$sqlv."<br>$1='".$fsk."'</p>";}
 	}
 	$zv=0;
@@ -101,13 +102,32 @@
 }
 
+// START //
+
 session_start();
-$id="n";
-$gmlid="";
-$cntget = extract($_GET);
+
+$showkey="n"; // Var. aus Parameter initalisieren
+
+$cntget = extract($_GET); // alle Parameter in Variable umwandeln
+
+// strikte Validierung aller Parameter
+if (isset($gmlid)) {
+	if (!preg_match('#^[0-9A-Za-z]{16}$#', $gmlid)) {die("Eingabefehler gmlid");}
+	$fskennz='';
+} else { // Alternativ
+	$gmlid='';
+	if (isset($fskennz)) { // llgggg-fff-11111/222 oder z.B.'052647002001910013__' oder '05264700200012______'
+		if (!preg_match('#^[0-9\-_/]{8,20}$#', $fskennz)) {die ("Eingabefehler fskennz");}
+	} else {
+		$fskennz='';
+	}
+}
+if (!isset($gkz) or !preg_match('#^[0-9]{3}$#', $gkz)) {die("Eingabefehler gkz");}
+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
+
 require_once("alkis_conf_location.php");
 if ($auth == "mapbender") {require_once($mapbender);}
 include("alkisfkt.php");
-$keys = isset($_GET["showkey"]) ? $_GET["showkey"] : "n";
-if ($keys == "j") {$showkey=true;} else {$showkey=false;}
+
 ?>
 <!doctype html>
@@ -115,15 +135,13 @@
 <head>
 	<meta charset="utf-8">
+	<meta name="viewport" content="width=device-width, initial-scale=1.0">
 	<title>ALKIS Flurst&uuml;cks-Historie</title>
 	<link rel="stylesheet" type="text/css" href="alkisauszug.css">
 	<link rel="shortcut icon" type="image/x-icon" href="ico/Flurstueck_Historisch.ico">
-	<style type='text/css' media='print'>
-		.noprint {visibility: hidden;}
-	</style>
 </head>
 <body>
 <?php
 $con = pg_connect($dbconn." options='--application_name=ALKIS-Auskunft_alkisfshist.php'");
-if (!$con) echo "<p class='err'>Fehler beim Verbinden der DB</p>\n";
+if (!$con) echo "\n<p class='err'>Fehler beim Verbinden der DB</p>";
 
 // Such-Parameter bekommen? Welche?
@@ -216,6 +234,6 @@
 
 // Balken
-echo "<p class='fshis'>ALKIS Flurst&uuml;ck ".$gmkgnr."-".$flurnummer."-".$flstnummer."&nbsp;</p>\n";
-echo "\n<h2><img src='ico/".$ico."' width='16' height='16' alt=''> Flurst&uuml;ck Historie</h2>\n";
+echo "<p class='fshis'>ALKIS Flurst&uuml;ck ".$gmkgnr."-".$flurnummer."-".$flstnummer."&nbsp;</p>";
+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
Index: trunk/info/info/alkisn/alkishaus.php
===================================================================
--- trunk/info/info/alkisn/alkishaus.php	(revision 386)
+++ trunk/info/info/alkisn/alkishaus.php	(revision 387)
@@ -7,4 +7,5 @@
 	2016-11-29 HTML5, Gemeinsam genutzte Datenbanken ermÃ¶glichen
 	2016-12-05 Array-Behandlung ax_gebaeude.name
+	2017-06-08 Validierung Eingabeparameter, Feinkorrekturen
 
 	ToDo:
@@ -18,13 +19,20 @@
 */
 session_start();
-$id="n";
-$allfld = "n";
-$cntget = extract($_GET);
+
+$allfld = "n"; $showkey="n"; // Var. aus Parameter initalisieren
+$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");}
+if (!isset($gkz) or !preg_match('#^[0-9]{3}$#', $gkz)) {die("Eingabefehler gkz");}
+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;}
+
 require_once("alkis_conf_location.php");
 if ($auth == "mapbender") {require_once($mapbender);}
 include("alkisfkt.php");
-$keys = isset($_GET["showkey"]) ? $_GET["showkey"] : "n";
-if ($keys == "j") {$showkey=true;} else {$showkey=false;}
-if ($allfld == "j") {$allefelder=true;} else {$allefelder=false;}
 ?>
 <!doctype html>
@@ -32,11 +40,9 @@
 <head>
 	<meta charset="utf-8">
+	<meta name="viewport" content="width=device-width, initial-scale=1.0">
 	<title>ALKIS Daten zum Haus</title>
 	<link rel="stylesheet" type="text/css" href="alkisauszug.css">
 	<link rel="shortcut icon" type="image/x-icon" href="ico/Haus.ico">
-	<style type='text/css' media='print'>
-		.noprint {visibility: hidden;}
-		td.mittelspalte	{width: 190px;}
-	</style>
+	<style type='text/css' media='print'> td.mittelspalte {width: 190px;} </style>
 </head>
 <body>
@@ -44,5 +50,5 @@
 
 $con = pg_connect($dbconn." options='--application_name=ALKIS-Auskunft_alkishaus.php'");
-if (!$con) echo "<p class='err'>Fehler beim Verbinden der DB</p>\n";
+if (!$con) echo "\n<p class='err'>Fehler beim Verbinden der DB</p>";
 
 // G e b a e u d e
@@ -65,12 +71,11 @@
 $resg = pg_execute("", $v);
 if (!$resg) {
-	echo "\n<p class='err'>Fehler bei Geb&auml;ude.<br>".pg_last_error()."</p>\n";
-	if ($debug > 2) {echo "<p class='dbg'>SQL=<br>".$sqlg."<br>$1 = gml_id = '".$gmlid."'</p>";}
+	echo "\n<p class='err'>Fehler bei Geb&auml;ude.<br>".pg_last_error()."</p>";
+	if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".$sqlg."<br>$1 = gml_id = '".$gmlid."'</p>";}
 }
 
 // Balken
-echo "<p class='geb'>ALKIS Haus ".$gmlid."&nbsp;</p>\n"; // ++ Kennzeichen?
-
-echo "\n<h2><img src='ico/Haus.png' width='16' height='16' alt=''> Haus (Geb&auml;ude)</h2>\n";
+echo "\n<p class='geb'>ALKIS Haus ".$gmlid."&nbsp;</p>"; // ++ Kennzeichen?
+echo "\n<h2><img src='ico/Haus.png' width='16' height='16' alt=''> Haus (Geb&auml;ude)</h2>";
 
 // Kennzeichen in Rahmen 
@@ -166,6 +171,6 @@
 	$resl = pg_execute("", $v);
 	if (!$resl) {
-		echo "\n<p class='err'>Fehler bei Lage mit HsNr.</p>\n";
-		if ($debug > 2) {echo "<p class='dbg'>SQL=<br>".$sqll."<br>$1 = gml_id = '".$gmlid."'</p>";}
+		echo "\n<p class='err'>Fehler bei Lage mit HsNr.</p>";
+		if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".$sqll."<br>$1 = gml_id = '".$gmlid."'</p>";}
 	}
 	$zhsnr=0;
@@ -186,6 +191,7 @@
 		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='Hausnummer' href='alkislage.php?gkz=".$gkz."&amp;gmlid=".$gmllag."&amp;ltyp=".$ltyp."'>"
-			.$snam."&nbsp;".$hsnr;
+		echo "\n\t\t<a title='Hausnummer' href='alkislage.php?gkz=".$gkz."&amp;gmlid=".$gmllag."&amp;ltyp=".$ltyp;
+			if ($showkey) {echo "&amp;showkey=j";}
+			echo "'>".$snam."&nbsp;".$hsnr;
 			if ($ltyp == "p") {echo ", lfd.Nr ".$hlfd;}
 		echo "</a><br>";
@@ -287,6 +293,6 @@
 				$resw = pg_execute("", $v);
 				if (!$resw) {
-					echo "\n<p class='err'>Fehler bei Geb&auml;ude - weitere Funktion.</p>\n";
-					if ($debug > 2) {echo "<p class='dbg'>SQL=<br>".$sqlw."<br>$1 = Werteliste = '".$wgf."'</p>";}
+					echo "\n<p class='err'>Fehler bei Geb&auml;ude - weitere Funktion.</p>";
+					if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".$sqlw."<br>$1 = Werteliste = '".$wgf."'</p>";}
 				}
 				$zw=0;
@@ -382,5 +388,5 @@
 	echo "\n</table>";
 }
-if ($gebnr == 0) {echo "<p class='err'><br>Kein Geb&auml;ude gefunden<br>&nbsp;</p>";}
+if ($gebnr == 0) {echo "\n<p class='err'><br>Kein Geb&auml;ude gefunden<br>&nbsp;</p>";}
 
 // ++ ToDo: Verschnitt mit FS?
Index: trunk/info/info/alkisn/alkisinlayausk.php
===================================================================
--- trunk/info/info/alkisn/alkisinlayausk.php	(revision 386)
+++ trunk/info/info/alkisn/alkisinlayausk.php	(revision 387)
@@ -12,11 +12,19 @@
 	2016-02-24 Version fuer norGIS-ALKIS-Import
 	2016-11-29 HTML5, Gemeinsam genutzte Datenbanken ermÃ¶glichen (Berechtigung fÃŒr Gemeinde prÃŒfen)
+	2017-06-01 Function "eigentuemer" ohne Parameter $con
+	2017-06-08 Validierung Eingabeparameter, Feinkorrekturen
 */
 session_start();
-$cntget = extract($_GET);
+
+$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");}
+if (!isset($gkz) or !preg_match('#^[0-9]{3}$#', $gkz)) {die("Eingabefehler gkz");}
+
 require_once("alkis_conf_location.php");
 if ($auth == "mapbender") {require_once($mapbender);}
 include("alkisfkt.php");
-$gmlid = isset($_GET["gmlid"]) ? $_GET["gmlid"] : 0;
+
 echo <<<END
 <!doctype html>
@@ -24,4 +32,5 @@
 <head>
 	<meta charset="utf-8">
+	<meta name="viewport" content="width=device-width, initial-scale=1.0">
 	<link rel="stylesheet" type="text/css" href="alkisauszug.css">
 	<link rel="shortcut icon" type="image/x-icon" href="ico/Flurstueck.ico">
@@ -48,6 +57,6 @@
 $res = pg_execute("", $v);
 if (!$res) {
-	echo "\n<p class='err'>Fehler bei Flurstuecksdaten.</p>\n";
-	if ($debug > 2) {echo "<p class='err'>SQL=<br>".$sql."<br>$1 = gml_id = '".$gmlid."'</p>";}
+	echo "\n<p class='err'>Fehler bei Flurstuecksdaten.</p>";
+	if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = gml_id = '".$gmlid."'</p>";}
 }
 
@@ -65,6 +74,5 @@
 	$fsgem=$row["gemeinde"];
 } else {
-	echo "<p class='err'>Kein Treffer fuer gml_id=".$gmlid."</p>";
-	//if ($debug > 2) {echo "<p class='err'>SQL=<br>".$sql."<br>$1 = gml_id = '".$gmlid."'</p>";}
+	echo "\n<p class='err'>Kein Treffer fuer gml_id=".$gmlid."</p>";
 }
 
@@ -74,6 +82,6 @@
 	// Einer der gesetzten Filter passt nicht
 	if ($debug > 2) {
-		echo "<p class='err'>Filter Kreis='".$filtkreis."', Gemeinde='".$filtgem."'</p>";
-		echo "<p class='err'>Flstk. Kreis='".$fskrs."', Gemeinde='".$fsgem."'</p>";
+		echo "\n<p class='err'>Filter Kreis='".$filtkreis."', Gemeinde='".$filtgem."'</p>";
+		echo "\n<p class='err'>Flstk. Kreis='".$fskrs."', Gemeinde='".$fsgem."'</p>";
 	}
 	echo "\n<br><p class='stop1'>Zugriff nicht erlaubt</p>
@@ -127,6 +135,6 @@
 $res=pg_execute("", $v);
 if (!$res) {
-	echo "<p class='err'>Fehler bei Lagebezeichnung mit Hausnummer.</p>";
-	if ($debug > 2) {echo "<p class='err'>SQL=<br>".$sql."<br>$1 = gml_id = '".$gmlid."'</p>";}
+	echo "\n<p class='err'>Fehler bei Lagebezeichnung mit Hausnummer.</p>";
+	if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = gml_id = '".$gmlid."'</p>";}
 }
 $j=0;
@@ -152,8 +160,8 @@
 if ($j == 0) { // keine HsNr gefunden
 	// Lage OHNE HausNr
-	$sql="SELECT DISTINCT s.gml_id AS kgml, l.gml_id, s.bezeichnung, l.unverschluesselt 
-	FROM ax_flurstueck f JOIN ax_lagebezeichnungohnehausnummer l ON l.gml_id=ANY(f.zeigtauf)
-	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;";
+	$sql="SELECT DISTINCT s.gml_id AS kgml, l.gml_id, s.bezeichnung, l.unverschluesselt "
+	."FROM ax_flurstueck f JOIN ax_lagebezeichnungohnehausnummer l ON l.gml_id=ANY(f.zeigtauf) "
+	."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);
@@ -161,6 +169,6 @@
 	$res=pg_execute("", $v);
 	if (!$res) {
-		echo "<p class='err'>Fehler bei Lagebezeichnung ohne Hausnummer.</p>";
-		if ($debug > 2) {echo "<p class='err'>SQL=<br>".$sql."<br>$1 = gml_id = '".$gmlid."'</p>";}
+		echo "\n<p class='err'>Fehler bei Lagebezeichnung ohne Hausnummer.</p>";
+		if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = gml_id = '".$gmlid."'</p>";}
 	}
 	while($row = pg_fetch_array($res)) {
@@ -190,8 +198,8 @@
 	pg_free_result($res);
 }
-echo "\n</table>\n";
+echo "\n</table>";
 
 // Flurstuecksflaeche
-echo "\n<p class='fsd'>Flurst&uuml;cksfl&auml;che: <b>".$flae."</b></p>\n";
+echo "\n<p class='fsd'>Flurst&uuml;cksfl&auml;che: <b>".$flae."</b></p>";
 
 // *** G R U N D B U C H ***
@@ -214,6 +222,6 @@
 $resg=pg_execute("", $v);
 if (!$resg) {
-	echo "\n<p class='err'>Keine Buchungen.</p>\n";
-	if ($debug > 2) {echo "<p class='err'>SQL=<br>".$sql."<br>$1 = gml_id = '".$gmlid."'</p>";}
+	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)) {
@@ -253,13 +261,9 @@
 
 	// E I G E N T U E M E R
-	if ($blattkey == 5000) { // Schluessel Blattart
+	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>\n";
-	} else {// kein Eigent. bei fiktiv. Blatt
-		echo "\n\n<h3><img src='ico/Eigentuemer_2.png' width='16' height='16' alt=''> Angaben zum Eigentum</h3>\n";
-
-		// Ausgabe Name in Function
-		$n = eigentuemer($con, $rowg["gml_id"], false, "imFenster"); // ohne Adressen
-
+		."\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>"
