Index: trunk/info/info/alkisn/alkislage.php
===================================================================
--- trunk/info/info/alkisn/alkislage.php	(revision 377)
+++ 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;
