Index: trunk/data/mapbender/http/nav/alkisnav.css
===================================================================
--- trunk/data/mapbender/http/nav/alkisnav.css	(revision 67)
+++ trunk/data/mapbender/http/nav/alkisnav.css	(revision 68)
@@ -1,39 +1,29 @@
 /* Style fuer ALKIS-Navigation 
-	Version 2011-01-10
+	Version 2011-01-13
 */
-body,p,a,.textfield,.sbutton,.cityText,.streetText,.city {font-family: Verdana, Arial, Helvetica, sans-serif;}
+body,p,a,.textfield,.sbutton	{font-family: Verdana, Arial, Helvetica, sans-serif;}
 body		{font-size: 11px; color: #000000; margin: 0px;}
 
 p			{font-size: 10px;}
-p.hilfe 	{font-size:  9px; text-align: right; color: gray;} /* Programmier-Hilfsfelder */
+p.hilfe 	{font-size:  9px; text-align: right; color: gray; padding-right: 3px;} /* Programmier-Hilfsfelder */
 p.start 	{font-size:  9px; color: gray;}
 p.nam		{font-size: 10px; border: 1px solid navy; padding: 3px; margin: 0px;}
 p.err		{font-size: 11px; color: red;}
 
-a {font-size: 11px; text-decoration: none; margin: 0px;}
-/*	a:link 	{color: #000000;} a:visited{color: #000000;} */
-	a:hover	{color: red;}
-	a:active	{color: red;}
-
-/* abgestuft eingerueckte Treffer in Suche */
+a			{text-decoration: none;} /* font-size: 11px; */
+a:hover, a:active	{color: red;}
+/* abgestuft eingerueckte Treffer in der Suche */
 div			{margin: 0px; padding: 0px;}
 div.back 	{font-size: 10px; color: gray; border-bottom: 1px dotted gray;}
 div.nam		{color: maroon;} /* Name */
+div.gk		{color: black;  margin-left:  0px; margin-top: 6px;} /* Gemarkung o. GB-Bezirk*/
+div.fl		{color: olive;  margin-left:  9px; margin-top: 4px;} /* Flur */
 div.gb		{color: green;  margin-left:  6px;} /* Grundbuch */
-div.gk		{color: black;  margin-left:  0px; margin-top: 6px;} /* Gemarkung */
-div.fl		{color: olive;  margin-left:  9px; margin-top: 4px;} /* Flur */
-div.st		{color: maroon;}
 div.gs		{color: olive;  margin-left: 12px; margin-top: 2px;} /* Grundstueck, BVNR */
 div.fs		{color: navy;   margin-left: 18px; margin-top: 0px;} /* Flurstueck */
-
-/*  Abstufungen (margin-left)
-  Adr.:
-  Name:
-  Flst:  gk    - fl   - fs
-  Grdb:  gk - gb - gs - fs
-          0   6  9 12   18
- */
-td.hsnr {text-align: center; margin: 2px;}
-hr {color: gray;}
+div.stu		{color: maroon; font-size: 13px;} /* Strasse - Ueberschrift */
+div.stl		{color: maroon; font-size: 11px; margin-top: 3px;} /* Strasse - Liste*/
+td.hsnr		{font-size: 11px; text-align: center; padding-left: 4px; padding-right: 4px;} /* Hausnummer */
+hr				{color: gray;}
 
 .textfield{
@@ -51,7 +41,5 @@
 }
 img.nwlink	{border: 0px; margin: 0px; padding: 0px;} /* Icons */
-.letter		{cursor: pointer; font-weight: bold;}
-.cityText	{color: black;}
-.streetText	{color: #6699FF; font-size: 13px; font-weight: bold;}
+.letter		{cursor: pointer; font-weight: bold;} /* Liste Anfangsbuchstaben */
 
 /* Registertabs */
@@ -59,7 +47,5 @@
 div#tabs ul {
 	position: absolute; top: 0px;
-	margin-top: 0px;	
-	margin-left: 0px;
-	margin-bottom: 20px;
+	margin-top: 0px; margin-left: 0px; margin-bottom: 20px;
 	padding: 0px;
 	width: 220px;
Index: trunk/data/mapbender/http/nav/alkisnav_fls.php
===================================================================
--- trunk/data/mapbender/http/nav/alkisnav_fls.php	(revision 67)
+++ trunk/data/mapbender/http/nav/alkisnav_fls.php	(revision 68)
@@ -1,10 +1,6 @@
 <?php
-// Version vom 10.01.2011 
-// Test: http://mapserver.krz.de/mapbenderneu/nav/alkisnav_eig.htm?gkz=150&gemeinde=40
-$gkz = urldecode($_REQUEST["gkz"]); // Mandant
+// Version vom 13.01.2011 
+import_request_variables("PG");
 include("../../conf/alkisnav_conf.php");
-import_request_variables("PG");
-
-// Datenbank-Connection
 $con_string = "host=".$host." port=".$port." dbname=".$dbname.$gkz." user=".$user." password=".$password;
 $con = pg_connect ($con_string) or die ("Fehler bei der Verbindung zur Datenbank ".$dbname);
@@ -78,5 +74,4 @@
 	$sql.="FROM ax_gemarkung g JOIN gemeinde_gemarkung v ON g.gemarkungsnummer=v.gemarkung ";
    $sql.="WHERE bezeichnung ILIKE $1 ";
-	// GUI-Parameter filtert auf Gemeindegebiet
 	if($gemeinde > 0) {$sql.=" AND v.gemeinde=".$gemeinde;} // wie prepared?
 	$sql.=" ORDER BY g.bezeichnung LIMIT $2 ;";
@@ -96,8 +91,7 @@
 		echo "\n<div class='gk' title='Gemarkung'>";
 			echo "\n\t\t<img class='nwlink' src='ico/Gemarkung.ico' width='16' height='16' alt='Gemkg'>";
-			echo "<a href='alkisnav_fls.php?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;fskennz=".$gnr."'>";		
-				echo  " ".$gnam." (".$gnr.")";
-				if ($gemeinde == 0) {echo  " ".$stadt;} // Kreisweit
-			echo "</a>";
+			echo "<a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;fskennz=".$gnr."'>";		
+			echo  " ".$gnam."</a> (".$gnr.")";
+			if ($gemeinde == 0) {echo " ".$stadt;} // Kreisweit
 		echo "\n</div>";
 		$cnt++;
@@ -137,8 +131,7 @@
 		// > 1 auch mÃ¶glich ???
 		echo "\n<div class='gk' title='Gemarkung'>";
-			echo "\n\t\t<img class='nwlink' src='ico/Gemarkung.ico' width='16' height='16' alt='Gemkg'>";
-			echo "<a href='alkisnav_fls.php?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;fskennz=".$zgemkg."'>";		
-				echo  " Gemarkung ".$gmkg." (".$zgemkg.")";
-			echo "</a>";
+			echo "\n\t\t<img class='nwlink' src='ico/Gemarkung.ico' width='16' height='16' alt='Gemkg'> ";
+			echo "<a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;fskennz=".$zgemkg."'>";		
+			echo $gmkg."</a>  (".$zgemkg.")"; // in Gemeinde?
 		echo "\n</div>";
 	}
@@ -154,5 +147,5 @@
 		echo "\n<div class='fl' title='Flur'>";
 			echo "\n\t\t<img class='nwlink' src='ico/Flur.ico' width='16' height='16' alt='Flur'> ";
-			echo "Flur<a href='alkisnav_fls.php?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;fskennz=".$zgemkg."-".$flur."'>&nbsp;".$flur."&nbsp;</a>";
+			echo "Flur<a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;fskennz=".$zgemkg."-".$flur."'>&nbsp;".$flur."&nbsp;</a>";
 		echo "\n</div>";
 		$zfl++;
@@ -167,5 +160,5 @@
 
 function EineFlur() {
-	// Kennzeichen bestehend aus Gemarkung und Flurnummer wurde eingegeben
+	// Kennzeichen aus Gemarkung und FlurNr wurde eingegeben
 	global $con, $gkz, $gemeinde, $debug, $scalefs, $epsg, $auskpath, $zgemkg, $zflur;
 	$linelimit=600; // Wie groÃ kann eine Flur sein?
@@ -189,9 +182,9 @@
 	echo "\n<div class='gk' title='Gemarkung'>";
 		echo "\n\t\t<img class='nwlink' src='ico/Gemarkung.ico' width='16' height='16' alt='Gemkg'> ";
-		echo "Gemarkung <a href='alkisnav_fls.php?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;fskennz=".$zgemkg."'> ".$gmkg." (".$zgemkg.")</a>";
+		echo "Gemarkung <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;fskennz=".$zgemkg."'> ".$gmkg." (".$zgemkg.")</a>";
 	echo "\n</div>";
 	echo "\n<div class='fl' title='Flur'>";
 		echo "\n\t\t<img class='nwlink' src='ico/Flur.ico' width='16' height='16' alt='Flur'> ";
-		echo "Flur <a href='alkisnav_fls.php?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;fskennz=".$zgemkg."-".$zflur."'> ".$zflur."</a>";
+		echo "Flur <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;fskennz=".$zgemkg."-".$zflur."'> ".$zflur."</a>";
 	echo "\n</div>";
 
@@ -233,5 +226,5 @@
 }
 
-function nurEinFlurstueck() {
+function EinFlurstueck() {
 	// FlurstÃŒckskennzeichen komplett bis zum Zaehler eingegeben
 	// Sonderfall: bei Bruchnummer, mehrere Nenner zum Zaehler
@@ -245,6 +238,5 @@
 	$sql.="WHERE f.gemarkungsnummer= $1 AND f.flurnummer= $2 AND f.zaehler= $3 ";
 	If ($znenner != "") {$sql.="AND f.nenner=".$znenner." ";} // wie prepared?
-	$sql.="ORDER BY f.zaehler, f.nenner;";
-	// WHERE f.land= ?
+	$sql.="ORDER BY f.zaehler, f.nenner;"; // WHERE f.land= ?
 	$v=array($zgemkg, $zflur, $zzaehler);
 	$res=pg_prepare("", $sql);
@@ -315,9 +307,9 @@
 case 4:
 	if ($debug >= 2) {echo "<p>Gemarkung ".$zgemkg." Flur ".$zflur." FlurstÃŒck ".$zzaehler."</p>";}
-	nurEinFlurstueck();
+	EinFlurstueck();
 	break;
 case 5:
 	if ($debug >= 2) {echo "<p>Gemarkung ".$zgemkg." Flur ".$zflur." FlurstÃŒck ".$zzaehler."/".$znenner."</p>";}
-	nurEinFlurstueck();
+	EinFlurstueck();
 	break;
 }
Index: trunk/data/mapbender/http/nav/alkisnav_eig.php
===================================================================
--- trunk/data/mapbender/http/nav/alkisnav_eig.php	(revision 67)
+++ trunk/data/mapbender/http/nav/alkisnav_eig.php	(revision 68)
@@ -1,9 +1,9 @@
 <?php
-// Version vom 10.01.2011 
-$gkz = urldecode($_REQUEST["gkz"]); // Mandant
+// Version vom 13.01.2011 
+import_request_variables("PG");
 include("../../conf/alkisnav_conf.php");
-import_request_variables("PG");
 $con_string = "host=".$host." port=".$port." dbname=".$dbname.$gkz." user=".$user." password=".$password;
 $con = pg_connect ($con_string) or die ("<p class='err'>Fehler bei der Verbindung zur Datenbank</p>".$dbname);
+// ToDo: Buchung zwischen Blatt und Flst?
 ?>
 
@@ -21,4 +21,5 @@
 
 <?php
+
 function getEigByName() {
 // 1 =============================
@@ -50,5 +51,5 @@
 		// +++ Icon mit Link auf Person-Auskunft, ÃŒber gml_id	
 		// Zur Zeit siehe unten: erst nach Auswahl einer einzelnen Person
-		echo "\n<a class='nam' title='Person' href='alkisnav_eig.php?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;person=".$gml."&amp;name=".$nnam."'>".$nnam.", ".$vnam."</a>\n<br>";
+		echo "\n<a class='nam' title='Person' href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;person=".$gml."&amp;name=".$nnam."'>".$nnam.", ".$vnam."</a>\n<br>";
 		$cnt++;
 	}
@@ -72,5 +73,5 @@
 		echo "\n<div class='back' title='Andere Personen mit diesem Nachnamen'>";
 			echo "\n\t\t<img class='nwlink' src='ico/Eigentuemer_2.ico' width='16' height='16' alt='FAM'> ";
-			echo "\n<a class='back' href='alkisnav_eig.php?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;name=".$name."'>\"".$name."\"</a>";
+			echo "\n<a class='back' href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;name=".$name."'>\"".$name."\"</a>";
 		echo "\n</div>\n<br>";	
 	}
@@ -84,8 +85,5 @@
 	$res=pg_prepare("", $sql);
 	$res=pg_execute("", $v);
-	if (!$res) {
-		echo "\n<p class='err'>Fehler bei Name</p>\n";
-		if ($debug >= 3) {echo "<p class='err'>".$sql."</p>";}
-	}
+	if (!$res) {echo "\n<p class='err'>Fehler bei Name</p>\n";}
 	// Daten der Person
 	echo "\n<div class='nam'>";
@@ -135,5 +133,5 @@
 				echo "\n\t\t<img class='nwlink' src='ico/GBBlatt_link.ico' width='16' height='16' alt='GB'>";
 			echo "\n\t</a> ";		
-			echo $beznam." <a title='Grundbuch' href='alkisnav_eig.php?gkz=".$gkz."&amp;gb=".$gml."&amp;person=".$person."'>Blatt ".$nr."</a>";
+			echo "\n\t".$beznam."<a title='Grundbuch' href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;gb=".$gml."&amp;person=".$person."'> Blatt ".$nr."&nbsp;</a>";
 		echo "\n</div>";
 		$cnt++;
@@ -159,5 +157,5 @@
 		echo "\n\t<div class='back' title='zur&uuml;ck zur Person'>";
 			echo "\n\t\t<img class='nwlink' src='ico/Eigentuemer.ico' width='16' height='16' alt='EIG'> ";
-			echo "\n\t<a href='alkisnav_eig.php?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;person=".$person."'>";
+			echo "\n\t<a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;person=".$person."'>";
 			echo "zur&uuml;ck</a><br>";		
 		echo "</div>";
Index: trunk/data/mapbender/http/nav/alkisnav_adr.php
===================================================================
--- trunk/data/mapbender/http/nav/alkisnav_adr.php	(revision 67)
+++ trunk/data/mapbender/http/nav/alkisnav_adr.php	(revision 68)
@@ -1,16 +1,8 @@
 <?php
-// Version vom 10.01.2011
-
-// ToDo: 
-//  Auswahl oder Sortierung "Gemeinde" if ($gemeinde == 0)
-//  Sortierung nach Nummer aus Hausnummer
-
-$gkz = urldecode($_REQUEST["gkz"]); // Mandant
+// Version vom 13.01.2011
+import_request_variables("PG");
 include("../../conf/alkisnav_conf.php");
-import_request_variables("PG");
-// Datenbank-Connection
 $con_string = "host=".$host." port=".$port." dbname=".$dbname.$gkz." user=".$user." password=".$password;
 $con = pg_connect ($con_string) or die ("Fehler bei der Verbindung zur Datenbank ".$dbname);
-
 ?>
 
@@ -26,10 +18,9 @@
 </head>
 <body>
-
 <?php
+
+
 function suchStrName() {
-// ============================
-// Straßen nach Name(-nsanfang)
-// ============================
+	// Straßen nach Name(-nsanfang)
 	global $con, $street, $scalestr, $str_schl, $gkz, $gemeinde, $debug;
 	$linelimit=120;  // -> in die Conf?
@@ -38,35 +29,33 @@
 	$matches[1] = preg_replace("/str\./i","str", $matches[1]); 
 	if(preg_match("/\*/",$matches[1])){
-		$match="'".trim(preg_replace("/\*/i","%", strtoupper($matches[1]))). "' ";
-	} else {
-		$match="'".trim($matches[1])."%' ";
-	}
-	$sql ="SELECT g.bezeichnung AS gemname, k.bezeichnung, k.schluesselgesamt, k.lage  ";
+		$match=trim(preg_replace("/\*/i","%", strtoupper($matches[1])));
+	} else {
+		$match=trim($matches[1])."%";
+	}
+	$sql ="SELECT g.bezeichnung AS gemname, k.bezeichnung, k.schluesselgesamt, k.lage ";
 	$sql.="FROM ax_lagebezeichnungkatalogeintrag as k ";
-	$sql.="JOIN ax_gemeinde g ";
-	$sql.="ON k.land=g.land AND k.regierungsbezirk=g.regierungsbezirk AND k.kreis=g.kreis AND k.gemeinde=g.gemeinde ";
-	$sql.="WHERE k.bezeichnung ILIKE ".$match." ";
+	$sql.="JOIN ax_gemeinde g ON k.land=g.land AND k.regierungsbezirk=g.regierungsbezirk AND k.kreis=g.kreis AND k.gemeinde=g.gemeinde ";
+	$sql.="WHERE k.bezeichnung ILIKE $1 ";
  	if($gemeinde > 0) { // Filter Gemeinde?
 		$sql.="AND k.gemeinde=".$gemeinde." ";
 	}
-	$sql.="ORDER BY k.bezeichnung, k.lage ";
-	// +++  if ($gemeinde == 0) ORDER Gemeinde, Straße?
-	$sql.="LIMIT ".$linelimit;
-	$res=pg_query($con, $sql);
-	if (!$res) {
-		return "\n<p class='err'>Fehler bei Name</p>";
-	}
+	$sql.="ORDER BY k.bezeichnung, k.lage LIMIT $2 ;";
+ 	$v=array($match,$linelimit);
+	$res=pg_prepare("", $sql);
+	$res=pg_execute("", $v);
+	if (!$res) {return "\n<p class='err'>Fehler bei Name</p>";}
 	$cnt = 0;
 	while($row = pg_fetch_array($res)) {
-		$sname=$row["bezeichnung"];
+		$sname=htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8");		
 		$gkey=$row["schluesselgesamt"];
-		$gemname=$row["gemname"];
+		$gemname=htmlentities($row["gemname"], ENT_QUOTES, "UTF-8");
 		$skey=$row["lage"];
-		echo "\n\t<div class='st' title='Stra&szlig;enschl&uuml;ssel ".$skey."'>";
-			echo "<a class='st' href='alkisnav_adr.php?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;str_schl=".$gkey."'>".$sname;
-			if ($gemeinde == 0) {
-				echo " - ".$gemname;
+		echo "\n\t<div class='stl' title='Stra&szlig;enschl&uuml;ssel ".$skey."'>";
+			if (trim($skey, "0..9") == "") { // Integer
+				echo "<a class='stl' href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;str_schl=".$gkey."'>".$sname."</a>";
+			} else { // Klassifizierung?
+				echo $sname; // nicht brauchbar fuer ax_lagebezeichnungmithausnummer.lage (Integer)
 			}
-			echo "</a><br>";
+			if (! isset($gemeinde)) {echo " in ".$gemname;}
 		echo "</div>";
 		$cnt++;
@@ -75,5 +64,5 @@
 		echo "<p>Keine Stra&szlig;e.</p>";
 	} elseif($cnt == 1) { // Eindeutig
-		$str_schl=$skey; // dann gleich weiter
+		$str_schl=$gkey; // dann gleich weiter
 	} elseif($cnt >= $linelimit) {
 		echo "<p>.. und weitere</p>";			
@@ -82,18 +71,61 @@
 }
 
+function suchStrKey() {
+	// Straßen nach Strassen-Schluessel
+	global $con, $street, $scalestr, $str_schl, $gkz, $gemeinde, $debug;
+	$linelimit=50;
+	if(preg_match("/\*/",$street)) {
+		$match=trim(preg_replace("/\*/i","%",$street));
+		// -> Anwender muss fuehrende Nullen eingeben oder fuehrende Wildcard
+	} else {
+		$match=str_pad($street, 5, "0", STR_PAD_LEFT); // "Wie eine Zahl" verarbeiten 
+	}
+   //if ($debug >= 2) {echo "<p>sql-Match='".$match."'</p>";}
+	$sql ="SELECT g.bezeichnung AS gemname, k.bezeichnung, k.schluesselgesamt, k.lage ";
+	$sql.="FROM ax_lagebezeichnungkatalogeintrag as k ";
+	$sql.="JOIN ax_gemeinde g ON k.land=g.land AND k.regierungsbezirk=g.regierungsbezirk AND k.kreis=g.kreis AND k.gemeinde=g.gemeinde ";
+	$sql.="WHERE k.lage LIKE $1 ";
+	if($gemeinde > 0) { // Filter Gemeinde?
+		$sql.="AND k.gemeinde=".$gemeinde." ";
+	}
+	$sql.="ORDER BY k.lage, k.bezeichnung LIMIT $2 ;";
+ 	$v=array($match,$linelimit);
+	$res=pg_prepare("", $sql);
+	$res=pg_execute("", $v);
+	if (!$res) {return "\n<p class='err'>Fehler bei Schl&uuml;ssel</p>";}
+	$cnt = 0;
+	while($row = pg_fetch_array($res)) {
+		$sname=htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8");		
+		$gkey=$row["schluesselgesamt"];
+		$gemname=htmlentities($row["gemname"], ENT_QUOTES, "UTF-8");
+		$skey=$row["lage"];
+		echo "\n\t<div class='stl' title='Stra&szlig;enschl&uuml;ssel ".$skey."'>";
+			echo $skey." <a class='st' href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;str_schl=".$gkey."'>".$sname;
+			echo "</a>";
+			if (! isset($gemeinde)) {echo " in ".$gemname;}
+		echo "</div>";
+		$cnt++;
+	}
+	if($cnt == 0) {
+		echo "\n<p>Keine Stra&szlig;e mit Schl&uuml;ssel ".$match."</p>";
+	} elseif($cnt == 1) { // Eindeutig
+		$str_schl=$gkey; // dann gleich weiter
+	} elseif($cnt >= $linelimit) {
+		echo "\n<p>.. und weitere</p>";			
+	} else {
+		echo "\n<p class='hilfe'>".$cnt." Stra&szlig;en</p>";	
+	}	
+	return;
+}
+
 function suchHausZurStr(){
-// =======================
-// Haeuser zu einer Straße
-// =======================
+	// Haeuser zu einer Straße
 	global $con, $str_schl, $gkz, $scalestr, $scalehs, $epsg, $gemeinde, $debug;
-	
 	// Strasse zum Strassenschluessel
 	$sql ="SELECT k.bezeichnung, k.land, k.regierungsbezirk, k.kreis, k.gemeinde, k.lage ";
-	$sql.="FROM ax_lagebezeichnungkatalogeintrag as k ";
-	$sql.="WHERE schluesselgesamt = $1 LIMIT 1"; 
+	$sql.="FROM ax_lagebezeichnungkatalogeintrag AS k WHERE schluesselgesamt = $1 LIMIT 1"; 
  	$v=array($str_schl);
 	$res=pg_prepare("", $sql);
 	$res=pg_execute("", $v);
-
 	if($row = pg_fetch_array($res)) { // Strassenschluessel gefunden
 		$sname=$row["bezeichnung"];
@@ -102,8 +134,6 @@
 		$kreis=$row["kreis"];
 		$gemnd=$row["gemeinde"];
-		//$lage=$row["lage"];
 		$nr=ltrim($row["lage"], "0");
-
-		// eine Koordinaten zur ausgewählten Strasse besorgen
+		// eine Koordinate zur Strasse besorgen
 		// ax_Flurstueck  >zeigtAuf>  ax_LagebezeichnungOhneHausnummer
 		$sqlko ="SELECT ";		
@@ -115,5 +145,4 @@
 		$sqlko.="WHERE o.land= $1 AND o.regierungsbezirk= $2 AND o.kreis= $3 AND o.gemeinde= $4 AND o.lage= $5 ";	
 		$sqlko.="AND v.beziehungsart='zeigtAuf' LIMIT 1;";  // die erstbeste beliebige Koordinate
-//		$resko=pg_query($con, $sqlko);
 		$v=array($land,$regb,$kreis,$gemnd,$nr);
 		$resko=pg_prepare("", $sqlko);
@@ -127,21 +156,20 @@
 		}
 		$sqlko.="";
-		//if ($debug >= 2) {echo "\n<p class='err'>Koord: '".$x."' '".$y."'</p>";}
-		echo "\n<div class='st'>";		
+		echo "\n<div class='stu'>";		
 		if ($x > 0) { // Koord. bekommen?
-			echo "<a title='Positionieren 1:".$scalestr."' href='"; // mit Link
+			echo "\n\t<a title='Positionieren 1:".$scalestr."' href='"; // mit Link
 				echo "javascript:parent.parent.hideHighlight();";
-				echo "parent.parent.parent.mb_repaintScale(\"mapframe1\",".$x.",".$y.",".$scalestr.");";
-				echo " document.location.href=\"alkisnav_adr.php?gkz=".$gkz."&amp;str_schl=".$str_schl."\"' ";
-				echo "onmouseover='parent.parent.showHighlight(" .$x. "," .$y. ")' ";
-				echo "onmouseout='parent.parent.hideHighlight()'";
-			echo ">".$sname." (".$nr.")</a>";
+				echo "\n\t\tparent.parent.parent.mb_repaintScale(\"mapframe1\",".$x.",".$y.",".$scalestr.");";
+				echo "\n\t\tdocument.location.href=\"".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;str_schl=".$str_schl."\"' ";
+				echo "\n\t\tonmouseover='parent.parent.showHighlight(" .$x. "," .$y. ")' ";
+				echo "\n\t\tonmouseout='parent.parent.hideHighlight()'";
+			echo ">\n\t\t".$sname." (".$nr.")\n\t</a>";
 		} else { // keine Koord. dazu gefunden
 			echo $sname." (".$nr.")"; // nur Anzeige, ohne Link
 		}
-		echo "\n</div><hr>";
+		echo "\n</div>\n<hr>";
 		
 		// Haeuser zum Strassenschluessel
-		$sql ="SELECT h.hausnummer, ";
+		$sql ="SELECT replace (h.hausnummer, ' ','') AS hsnr, ";
 		$sql.="x(st_transform(st_Centroid(g.wkb_geometry), ".$epsg.")) AS x, ";
 		$sql.="y(st_transform(st_Centroid(g.wkb_geometry), ".$epsg.")) AS y ";
@@ -149,24 +177,20 @@
 		$sql.="JOIN alkis_beziehungen v ON h.gml_id=v.beziehung_zu ";
 		$sql.="JOIN ax_gebaeude g ON v.beziehung_von=g.gml_id ";
-		$sql.="WHERE h.land=".$land." AND h.regierungsbezirk=".$regb." AND h.kreis=".$kreis." AND h.lage=".$nr." "; // integer
+		$sql.="WHERE h.land= $1 AND h.regierungsbezirk= $2 AND h.kreis= $3 AND h.lage= $4 "; // integer
 		$sql.="AND v.beziehungsart='zeigtAuf' ";
-		$sql.="ORDER BY hausnummer;";
-		// Sortierproblem: Hausnummer, numerischer Teil sollte numerisch sortiert sein.
-		//if ($debug >= 3) {echo "\n<p class='err'>".$sql."</p>";}
-		$resh=pg_query($con, $sql);
+		$sql.="ORDER BY lpad(split_part(hausnummer,' ',1), 4, '0'), split_part(hausnummer,' ',2);";
+ 		$v=array($land,$regb,$kreis,$nr);
+		$resh=pg_prepare("", $sql);
+		$resh=pg_execute("", $v);
 		$cnt=0;
 		$count=0;
-		echo "<table>";
-
+		echo "\n<table>";
 		// mehrere Hausnummern je Zeile ausgeben
 		while($rowh = pg_fetch_array($resh)) {
-			if($count == 0){
-				echo "\n<tr>";
-			}
+			if($count == 0){echo "\n<tr>";}
 			$gml=$rowh["gml_id"];			
-			$nr=$rowh["hausnummer"];			
+			$nr=$rowh["hsnr"];			
 			$x=$rowh["x"];
 			$y=$rowh["y"];
-
 			echo "\n\t<td class='hsnr'>";
 				echo "<a href='";
@@ -176,5 +200,5 @@
 				echo "onmouseout='parent.parent.hideHighlight()";
 				echo "'>".$nr."</a>";
-			echo "\n\t</td>";
+			echo "</td>";
 			$cnt++;
 			$count++;
@@ -196,8 +220,8 @@
 // ===========
 if(isset($epsg)) {
-	if ($debug >= 2) {echo "<p>aktueller EPSG='".$epsg."'</p>";} // aus MB
+	if ($debug >= 2) {echo "\n<p>aktueller EPSG='".$epsg."'</p>";} // aus MB
 	If (substr($epsg, 0, 5) == "EPSG:") {$epsg=substr($epsg, 5);}
 } else {
-	if ($debug >= 2) {echo "<p class='err'>kein EPSG gesetzt</p>";}	
+	if ($debug >= 2) {echo "\n<p class='err'>kein EPSG gesetzt</p>";}	
 	$epsg=$gui_epsg; // aus Conf
 }
@@ -205,22 +229,21 @@
 if ($debug >= 2) {
 	if(isset($gemeinde)) {echo "<p>Filter Gemeinde = ".$gemeinde."</p>";
-	} else {echo "<p>Kein Filter Gemeinde</p>";}
-}
-
-if(isset($street)) {
-	// dies ist noch nicht möglich, es muesste der Gesamt-Keystring eingegeben werden	
-	if (is_numeric($street)) {
-		$str_schl = $street; // Schluessel (eindeutig) ist schon gesetzt
-	} else {
+	} else {echo "\n<p>Kein Filter Gemeinde</p>";}
+}
+
+if(isset($street)) { // Eingabe in Form
+	if (is_numeric(trim($street, "*"))) { // Zahl mit Wildcard
+		if ($debug >= 2) {echo "\n<p>Suche Key='".$street."'</p>";}
+		suchStrKey(); // Suche nach Schluessel
+	} else {
+		if ($debug >= 2) {echo "\n<p>Suche Name='".$street."'</p>";}
 		suchStrName(); // Suche nach Name
 	}
-} 
-// Strassenschluessel suchen
-// Verknuepfung zwischen "suchStrName" und "suchHausZurStr" uber Gesamt-Schluessel
-// Alternative für Eingabefeld (nur db-Feld "lage")?  
-// z.B. HIER trennen zwischen Eingabe-Key und Result-Key
-
-if(isset($str_schl)){
+}
+if(isset($str_schl)){ // Eindeutiges Ergebnis oder Link
+	if ($debug >= 2) {echo "\n<p>Suche Haus zu ='".$str_schl."'</p>";}
 	suchHausZurStr();
+} else {
+	if ($debug >= 2) {echo "\n<p>Keine Suche Haus</p>";}
 }
 ?>
Index: trunk/data/mapbender/http/nav/alkisnav_grd.php
===================================================================
--- trunk/data/mapbender/http/nav/alkisnav_grd.php	(revision 67)
+++ trunk/data/mapbender/http/nav/alkisnav_grd.php	(revision 68)
@@ -1,12 +1,8 @@
 <?php
-// Version vom 12.01.2011  
-$gkz = urldecode($_REQUEST["gkz"]); // Mandant
+// Version vom 13.01.2011  
+import_request_variables("PG");
 include("../../conf/alkisnav_conf.php");
-import_request_variables("PG");
-
-// Datenbank-Connection
 $con_string = "host=".$host." port=".$port." dbname=".$dbname.$gkz." user=".$user." password=".$password;
 $con = pg_connect ($con_string) or die ("Fehler bei der Verbindung zur Datenbank ".$dbname);
-
 ?>
 
@@ -29,30 +25,10 @@
 }
 
-function is_blatt(&$wert) {
-	// Prueft, ob eine Eingabe dem Format von Grundbuch-Blatt entspricht.
-	// Die Blatt-Nummern wird dabei auf das Datenbank-Format mit fuehrenden Nullen ergaenzt (&).
-	// +++ Nur ein Aufruf der Function. In aufrufendes Programm integrieren? 	
-	$len=strlen($wert);
-	if ($len < 1 or $len > 7) {return false;};
-	if (trim($wert, "0..9") == "") { // Normalfall: nur Zahlen
-		return true;
-	} else { // Sonderfall Zusatz-Buchstabe am Ende 
-		$zahl=substr($wert,0,$len-1);
-		$zus=strtoupper(substr($wert,$len-1,1));
-		if ( (trim($zahl, "0..9") == "") and (trim($zus, "A..Z") == "")) {
-			$wert=$zahl.$zus;	
-			return true;		
-		} else {		
-			return false;
-		}
-	}
-}
-
 function ZerlegungGBKennz($gbkennz) {
-// Das eingegebene Grundbuch-Kennzeichen auseinander nehmen (gggg-999999z-BVNR)
-// Return: 0=Fehler, 1=Such Bezirk-Name oder Listen alle Bezirke
-//         2=Such Bezirk-Nummer $zgbbez, 3=Such Blatt $zblatt, 4=Such BVNR $zbvnr
-	global $debug, $zgbbez, $zblatt, $zbvnr;	
-	$arr = explode("-", $gbkennz, 3);
+	// Das eingegebene Grundbuch-Kennzeichen auseinander nehmen (gggg-999999z-BVNR)
+	// Return: 0=Fehler, 1=Such Bezirk-Name oder Listen alle Bezirke
+	//         2=Such Bezirk-Nummer $zgbbez, 3=Such Blatt $zblatt, 4=Such BVNR $zbvnr
+	global $debug, $zgbbez, $zblatt, $zblattn, $zblattz, $zbvnr;	
+	$arr=explode("-", $gbkennz, 3);
 	$zgbbez=trim($arr[0]);
 	$zblatt=trim($arr[1]);
@@ -60,27 +36,44 @@
 	if ($zgbbez == "") { // keine Eingabe
 		return 1; // alle Bezirke listen
-	} elseif ( ! is_ne_zahl($zgbbez)) {
+	} elseif ( ! is_ne_zahl($zgbbez)) { // Alphabetische Eingabe
 		return 1; // Such Bezirk-NAME
 	} elseif ($zblatt == "") {
 		return 2; // Such Bezirk-NUMMER
-	} elseif (is_blatt($zblatt)) {
-		if ($zbvnr == "") {
-			return 3; // Such BLATT
-		} elseif (is_ne_zahl($zbvnr)) {		
-			// $zbvnr=ltrim($zbvnr,"0"); // DB-Format ist integer
-			// Vorsicht, Wert "0" ist moeglich und gueltig
-			return 4; // Such Grundstueck
+	} else  { // Format von Blatt pruefen
+		$len=strlen($zblatt);
+		if ($len > 0 AND $len < 8) {		
+			if (trim($zblatt, "0..9") == "") { // Normalfall: nur Zahlen
+				$zblattn= ltrim($zblatt, "0");
+				$zblattz="";
+			} else { // Sonderfall: Zusatz-Buchstabe am Ende
+				$zblattn=substr($zblatt,0,$len-1);
+				$zblattz=strtoupper(substr($zblatt,$len-1,1)); 
+				if ( (trim($zblattn, "0..9") == "") and (trim($zblattz, "A..Z") == "")) {
+					$zblatt=$zblattn.$zblattz;
+					$zblattn= ltrim($zblattn, "0"); // ohne fuehrende Nullen
+				} else {
+					echo "<p class='err>Format 'Blatt': bis zu 6 Zahlen und ggf. ein Buchstabe</p>";	
+					return 0;
+				}
+			}
+			if ($zbvnr == "") {
+				return 3; // Such BLATT
+			} elseif (is_ne_zahl($zbvnr)) {		
+				// $zbvnr=ltrim($zbvnr,"0"); // DB-Format ist integer
+				// Vorsicht, Wert "0" ist moeglich und gueltig
+				return 4; // Such Grundstueck
+			} else {
+				echo "<p class='err>Die Buchungsstelle (BVNR) '".$zbvnr."' ist nicht numerisch</p>";
+				return 0;
+			}
 		} else {
-			echo "<p class='err>Die Buchungsstelle (BVNR) '".$zbvnr."' ist nicht numerisch</p>";
+			echo "<p class='err>Das Grundbuch-Blatt '".$zblatt."' ist ung&uuml;ltig.</p>";
 			return 0;
 		}
-	} else {
-		echo "<p class='err>Das Grundbuch-Blatt '".$zblatt."' ist ung&uuml;ltig.</p>";
-		return 0;
 	}
 }
 
 function SuchGBBezName() {
-// Grundbuch-Bezirk suchen nach Name(-nsanfang)
+	// Grundbuch-Bezirk suchen nach Name(-nsanfang)
 	global $con, $gkz, $gemeinde, $debug, $gbkennz;
 	$linelimit=50;
@@ -134,8 +127,7 @@
 	global $con, $gkz, $gemeinde, $debug, $zgbbez, $auskpath;
 	$linelimit=200; // max. Blatt je Bezirk
-	// Dies linelimit nicht ausreichend fuer alle Blaetter eines Bezirks, aber ...
-	//  Wenn man die Blatt-Nr nicht kennt, kommt man hier sowieso nicht weiter.
-	//  Es nutzt also nichts, hier Tausende Nummern aufzulisten.
-	// +++ Wildcard in Blatt zulassen? Schwiegig bei numerischem Wert mit fuehrenden Nullen.
+	// Dies linelimit ist nicht ausreichend fuer alle Blaetter eines Bezirks, aber ...
+	// Wenn man die Blatt-Nr nicht kennt, kommt man hier sowieso nicht weiter.
+	// Es nutzt also nichts, hier Tausende Nummern aufzulisten.
 	if ($showParent) {
 		$sql ="SELECT a.bezeichnung AS ag, g.bezeichnung FROM ax_buchungsblattbezirk g ";
@@ -163,8 +155,8 @@
 			return;
 		}
-		// > 1 auch mÃ¶glich ???
+		// > 1 auch mÃ¶glich?
 		echo "\n<div class='gk' title='GB-Bezirk'>";
 			echo "\n\t\t<img class='nwlink' src='ico/Gericht.ico' width='16' height='16' alt='Bez.'> ";
-			echo "<a href='alkisnav_grd.php?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;gbkennz=".$zgbbez."'>";		
+			echo "<a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;gbkennz=".$zgbbez."'>";		
 			echo $gnam."</a> (".$zgbbez.") AG ".$ag;
 		echo "\n</div>";
@@ -188,5 +180,5 @@
 				echo "\n\t\t<img class='nwlink' src='ico/GBBlatt_link.ico' width='16' height='16' alt='Blatt'>";
 			echo "\n\t</a> ";
-			echo "Blatt <a href='alkisnav_grd.php?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;gblatt=".$gml."&amp;gbkennz=".$zgbbez."-".$blatt."'>&nbsp;".$blatt."&nbsp;</a>";
+			echo "Blatt <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;gblatt=".$gml."&amp;gbkennz=".$zgbbez."-".$blatt."'>&nbsp;".$blatt."&nbsp;</a>";
 		echo "\n</div>";
 		$cntbl++;
@@ -204,16 +196,12 @@
 
 function gml_blatt() {
-	// Komplettes Kennzeichen "Bezirk + Blatt" wurde eingegeben.
-	// Dazu die gml_id des GB-Blattes ermitteln.
-	global $con, $gkz, $debug, $zgbbez, $zblatt;
-
-	// Blatt ->  B u c h u n g s s t e l l e
-	// ax_buchungsblatt   <istBestandteilVon<  ax_buchungsstelle 	
-	$sql ="SELECT b.gml_id FROM ax_buchungsblatt b "; 
+	// Kennzeichen "Bezirk + Blatt" eingegeben. Dazu die gml_id des Blattes ermitteln.
+	global $con, $gkz, $debug, $zgbbez, $zblatt, $zblattn, $zblattz;
+	$sql ="SELECT b.gml_id, b.buchungsblattnummermitbuchstabenerweiterung AS blatt FROM ax_buchungsblatt b "; 
 	$sql.="WHERE b.bezirk= $1 AND b.buchungsblattnummermitbuchstabenerweiterung IN ( $2 , $3 );";
 	// Unterschiedliche Formate in ax_buchungsblatt.buchungsblattnummermitbuchstabenerweiterung
 	// Musterdaten RLP: ohne fuehrende Nullen, Lippe NRW: mit!
-	$zblatt0v=str_pad($zblatt, 7, "0", STR_PAD_LEFT); // Nullen vorne oder Blanks hinten ?
-	$v=array($zgbbez,$zblatt,$zblatt0);
+	$zblatt0v=str_pad($zblattn, 6, "0", STR_PAD_LEFT).$zblattz;	// mit 0 vorne
+	$v=array($zgbbez,$zblattn.$zblattz,$zblatt0v);
 	$res=pg_prepare("", $sql);
 	$res=pg_execute("", $v);
@@ -225,4 +213,5 @@
 	while($row = pg_fetch_array($res)) {	
 		$bl_gml=$row["gml_id"];
+		$zblatt=$row["blatt"]; // das tatsaechliche Format (mit/ohne fuehrende 0)
 		$cntbl++;
 	}
@@ -241,20 +230,23 @@
 
 	if ($showParent) {	
+		echo "\n<div class='gk' title='GB-Bezirk'>";
+			echo "\n\t\t<img class='nwlink' src='ico/Gericht.ico' width='16' height='16' alt='Bez.'> ";
+			echo "<a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;gbkennz=".$zgbbez."'>";		
+			echo "Bezirk ".$zgbbez."</a>";
+			// Key ist bekannt. Sollte man sich die Muehe machen, Namen und Amtsgericht zu ermitteln?
+		echo "\n</div>";
 		echo "\n<div class='gb' title='GB-Blatt'>";
 			echo "\n\t<a title='Nachweis' target='_blank' href='".$auskpath."alkisbestnw.php?gkz=".$gkz."&amp;gmlid=".$gblatt."'>";
 				echo "\n\t\t<img class='nwlink' src='ico/GBBlatt_link.ico' width='16' height='16' alt='Blatt'>";
 			echo "\n\t</a> ";
-			echo "Blatt <a href='alkisnav_grd.php?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;gblatt=".$gblatt."&amp;gbkennz=".$zgbbez."-".$zblatt."'> ".$zblatt."</a>";
+			echo "Blatt <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;gblatt=".$gblatt."&amp;gbkennz=".$zgbbez."-".$zblatt."'>&nbsp;".$zblatt."&nbsp;</a>";
 		echo "\n</div>";
 	}
 	// Blatt ->  B u c h u n g s s t e l l e
-	// ax_buchungsblatt   <istBestandteilVon<  ax_buchungsstelle 
-	$sql ="SELECT s.gml_id, s.laufendenummer AS lfd ";
-	$sql.="FROM ax_buchungsstelle s ";
+	$sql ="SELECT s.gml_id, s.laufendenummer AS lfd FROM ax_buchungsstelle s ";
 	$sql.="JOIN alkis_beziehungen v ON s.gml_id=v.beziehung_von "; 
 	$sql.="JOIN ax_buchungsblatt b ON v.beziehung_zu=b.gml_id ";
-	$sql.="WHERE v.beziehungsart='istBestandteilVon' AND b.gml_id= $1 ";
-	$sql.="ORDER BY s.laufendenummer;";
-	// +++ Buchungen ohne FLST weglassen ??
+	$sql.="WHERE v.beziehungsart='istBestandteilVon' AND b.gml_id= $1 ORDER BY s.laufendenummer;";
+	// +++ Buchungen ohne FLST weglassen?
 	// +++ Counter FLST ausgeben, Buchungen mit 0 weglassen 
 	$v=array($gblatt);
@@ -271,5 +263,5 @@
 		echo "\n<div class='gs'>";
 			echo "\n\t\t<img class='nwlink' title='Grundst&uuml;ck' src='ico/Grundstueck.ico' width='16' height='16' alt='GS'> ";
-			echo "Buchung <a href='alkisnav_grd.php?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;gbuchung=".$bs_gml."&amp;gbkennz=".$zgbbez."-".$zblatt."-".$lfd."'>".$lfd."</a>";
+			echo "Buchung <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;gbuchung=".$bs_gml."&amp;gbkennz=".$zgbbez."-".$zblatt."-".$lfd."'>&nbsp;".$lfd."&nbsp;</a>";
 		echo "\n</div>";
 		$cntbu++;
@@ -285,10 +277,7 @@
 
 function gml_buchungsstelle() {
-	// Komplettes Kennzeichen "Bezirk + Blatt + BVNR" wurde eingegeben.
-	// Dazu die gml_id der Buchungsstelle ermitteln fuer die weitere Verfolgung der Beziehungen.
+	// Kennzeichen "Bezirk + Blatt + BVNR" eingegeben. Dazu die gml_id der Buchungsstelle ermitteln.
 	global $con, $gkz, $debug, $zgbbez, $zblatt, $zbvnr;
-
 	// Blatt ->  B u c h u n g s s t e l l e
-	// ax_buchungsblatt   <istBestandteilVon<  ax_buchungsstelle 	
 	$sql ="SELECT s.gml_id FROM ax_buchungsstelle s ";
 	$sql.="JOIN alkis_beziehungen v ON s.gml_id=v.beziehung_von "; 
@@ -322,11 +311,15 @@
 	// Die gml_id der Buchungsstelle ist bekannt.
 	global $con, $gkz, $debug, $gemeinde, $scalefs, $epsg, $auskpath, $gbuchung, $zgbbez, $zblatt, $zbvnr;
-
-	if ($showParent) {	
-		// wenn Kennzeichen bekannt ist, dann auch Blatt ausgeben
+	if ($showParent) { // wenn Kennzeichen bekannt ist, dann auch Blatt ausgeben
 		if (isset($zgbbez) and isset($zblatt)) {
+			echo "\n<div class='gk' title='GB-Bezirk'>";
+				echo "\n\t\t<img class='nwlink' src='ico/Gericht.ico' width='16' height='16' alt='Bez.'> ";
+				echo "<a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;gbkennz=".$zgbbez."'>";		
+				echo "Bezirk ".$zgbbez."</a>";
+				// Key ist bekannt. Sollte man sich die Muehe machen, Namen und Amtsgericht zu ermitteln?
+			echo "\n</div>";			
 			echo "\n<div class='gb' title='GB-Blatt'>";
-				echo "\n\t\t<img class='nwlink' src='ico/GBBlatt.ico' width='16' height='16' alt='Blatt'>";
-				echo "Blatt <a href='alkisnav_grd.php?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;gbkennz=".$zgbbez."-".$zblatt."'>&nbsp;".$zblatt."&nbsp;</a>";
+				echo "\n\t\t<img class='nwlink' src='ico/GBBlatt.ico' width='16' height='16' alt='Blatt'> ";
+				echo "Blatt <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;gbkennz=".$zgbbez."-".$zblatt."'>&nbsp;".$zblatt."&nbsp;</a>";
 			echo "\n</div>";
 		} else {
@@ -335,5 +328,5 @@
 		echo "\n<div class='gs'>";
 			echo "\n\t\t<img class='nwlink' title='Grundst&uuml;ck' src='ico/Grundstueck.ico' width='16' height='16' alt='GS'> ";
-			echo "Buchung <a href='alkisnav_grd.php?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;gbuchung=".$gbuchung."&amp;gbkennz=".$zgbbez."-".$zblatt."-".$zbvnr."'>&nbsp;".$zbvnr."&nbsp;</a>";
+			echo "Buchung <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;gbuchung=".$gbuchung."&amp;gbkennz=".$zgbbez."-".$zblatt."-".$zbvnr."'>&nbsp;".$zbvnr."&nbsp;</a>";
 		echo "\n</div>";
 	}
@@ -378,11 +371,11 @@
 				echo "\n\t<a title='Nachweis' target='_blank' href='".$auskpath."alkisfsnw.php?gkz=".$gkz."&amp;gmlid=".$fs_gml."'>";
 					echo "\n\t\t<img class='nwlink' src='ico/Flurstueck_Link.ico' width='16' height='16' alt='FS'>";
-				echo "\n\t</a>";
-				echo "\n\t<a title='Flurst&uuml;ck positionieren 1:".$scalefs."' href='";
+				echo "\n\t</a> ";
+				echo "\n\t".$gmkg." <a title='Flurst&uuml;ck positionieren 1:".$scalefs."' href='";
 					echo "javascript:parent.parent.parent.mb_repaintScale(\"mapframe1\",".$x.",".$y.",".$scalefs."); ";
 					echo "parent.parent.hideHighlight();' ";
 					echo "onmouseover='parent.parent.showHighlight(".$x.",".$y.")' ";
-					echo "onmouseout='parent.parent.hideHighlight()'>";
-				echo $gmkg." ".$flur."-".$fskenn."</a>";
+					echo "onmouseout='parent.parent.hideHighlight()'>&nbsp;";
+				echo $flur."-".$fskenn."&nbsp;</a>";
 			echo "\n</div>";
 		}
@@ -411,5 +404,7 @@
 $kennztyp=ZerlegungGBKennz($gbkennz);
 if ($debug >= 2) {echo "<p>GB-Kennzeichen Typ=".$kennztyp."</p>";}
-// Wurde eine gml_id (internes Kennzeichen) aus einem Link verwendet?
+
+// Wurde eine gml_id (internes Kennzeichen) aus einem Self-Link verwendet?
+// Dann hat das Prioritaet, nicht nach $gbkennz suchen.
 If (isset($gbuchung)) { // gml der Buchungsstelle
 	if ($debug >= 2) {echo "<p>Link Buchung(gml)=".$gbuchung."</p>";}
@@ -422,5 +417,5 @@
 	};
 } else {
-	// Kein internes Kennzeichen (gml_id), also nur die (manuelle) Eingabe interpretieren.
+	// Kein internes Kennzeichen (gml_id), die (manuelle) Eingabe interpretieren.
 	switch ($kennztyp) {
 	// +++ Ersten Schritt "Suche Amtsgericht" voranstellen?
