Index: /trunk/data/mapbender/http/nav/alkisnav.css
===================================================================
--- /trunk/data/mapbender/http/nav/alkisnav.css	(revision 125)
+++ /trunk/data/mapbender/http/nav/alkisnav.css	(revision 126)
@@ -2,5 +2,5 @@
 	Version
 	 2011-04-11
-	 2011-11-07 Historie
+	 2011-11-09 Historie, dbg
 */
 body,p,a,.textfield,.sbutton	{font-family: Verdana, Arial, Helvetica, sans-serif;}
@@ -11,8 +11,11 @@
 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;}
+p.err		{font-size: 11px; color: red;}	/* Fehler -> Anwender */
+p.dbg		{font-size: 10px; color: gray;}	/* Debug -> Entwickler */
 
 a			{text-decoration: none;} /* font-size: 11px; */
 a:hover, a:active	{color: red;}
+a.hislnk {color: gray; font-style: italic; text-align: right; padding-left: 50px;}	/* Link zur Historie */
+
 /* abgestuft eingerueckte Treffer in der Suche */
 div			{margin: 0px; padding: 0px;}
@@ -47,5 +50,5 @@
 	background: #6699FF;
 }
-img.nwlink	{border: 0px; margin: 0px; padding: 0px;} /* Icons */
+img.nwlink	{border: 0px; margin: 0px; padding: 0px;} /* Icons mit Link zum Buch-Nachweis */
 .letter		{cursor: pointer; font-weight: bold;} /* Liste Anfangsbuchstaben */
 
Index: /trunk/data/mapbender/http/nav/alkisnav_fls.php
===================================================================
--- /trunk/data/mapbender/http/nav/alkisnav_fls.php	(revision 125)
+++ /trunk/data/mapbender/http/nav/alkisnav_fls.php	(revision 126)
@@ -8,6 +8,10 @@
 	24.10.2011 Nach Pos-Klick Highlight erneuern statt hideHighlight
 	07.11.2011 optional auch Historische FS suchen, Link auf Buchauskunft-Modul alkisfshis.php
+	09.11.2011 "h" hinter Flur oder FlurstÃŒck sucht sofort in Historie
+					Ausgabe Flur in Varianten aktuell/historisch mit gegenseitigen Verweisen 
 	ToDo:
-		Hist: die Nachfolger-Liste gleich in der DB nachschlagen,und aktuelle FS als solche anzeigen
+		Hist: Gemarkung entschlÃŒsseln
+		Hist: die Nachfolger-Liste gleich in der DB nachschlagen, und aktuelle FS als solche anzeigen
+		Hist: Icons fÃŒr Link (mit Pfeil), Icons H/O unterscheiden
 */
 import_request_variables("PG");
@@ -36,11 +40,35 @@
 }
 
+function h_hinten($zahl) {
+	// Testen: Wurde an eine Zahl ein "h" angehÃ€ngt?
+	// Wenn ja, dann Schalter setzen und nur numerischen Teil zurÃŒck geben.
+	global $phist, $debug;
+//	if ($debug >= 2) {echo "<p class='dbg'>Teilen '".$zahl."'</p>";}		
+	$zahl=trim($zahl);	
+	$zlen=strlen($zahl) - 1;
+	if ($zlen > 0) { 
+		$hinten = ucfirst(substr($zahl, $zlen, 1));
+		if ($hinten == "H" ) {
+			$vorn=trim(substr($zahl, 0, $zlen));
+			if (is_ne_zahl($vorn)) { // Zahl *und* "H"
+				$zahl = $vorn;
+				$phist = true;
+			}
+		}
+	}
+//	if ($debug >= 2) {echo "<p class='dbg'>Teile '".$vorn."'/'".$hinten."'</p>";}	
+	return $zahl;
+}
+
 function ZerlegungFsKennz($fskennz) {
-// Das eingegebene FlurstÃŒcks-Kennzeichen auseinander nehmen, Erwartet wird gggg-fff-zzzz/nnn
+// Das eingegebene FlurstÃŒcks-Kennzeichen auseinander nehmen. Erwartet wird gggg-fff-zzzz/nnn
 	global $debug, $zgemkg, $zflur, $zzaehler, $znenner;	
+//	if ($debug > 1) {echo "<p class='dbg'>Zerlegen: '".$fskennz."'</p>";}
 	$arr = explode("-", $fskennz, 4);
 	$zgemkg=trim($arr[0]);
-	$zflur=trim($arr[1]);
+	$zflur=h_hinten($arr[1]);
 	$zfsnr=trim($arr[2]);
+	if ($debug > 1) {echo "<p class='dbg'>Gemkg: '".$zgemkg."' Flur: '".$zflur."' NR: '".$zfsnr."'</p>";}
+	
 	if ($zgemkg == "") {
 		return 0; // Gemeinden oder Gemarkungen listen
@@ -50,14 +78,14 @@
 		return 2; // G-Nr
 	} elseif ( ! is_ne_zahl($zflur)) {
-		echo "<p class='err>Die Flurnummer '".$zflur."' ist nicht numerisch</p>";
+		echo "<p class='err'>Die Flurnummer '".$zflur."' ist nicht numerisch</p>";
 		return 9;
-	} elseif ($zfsnr == "") {		
+	} elseif ($zfsnr == "") {
 		return 3; // Flur				
 	} else {
 		$zn=explode("/", $zfsnr, 2);
-		$zzaehler=trim($zn[0]);
-		$znenner=trim($zn[1]);				
+		$zzaehler=h_hinten(trim($zn[0]));
+		$znenner =h_hinten(trim($zn[1]));
 		if ( ! is_ne_zahl($zzaehler)) {
-			echo "<p class='err>FlurstÃŒcksnummer '".$zzaehler."' ist nicht numerisch</p>";
+			echo "<p class='err'>FlurstÃŒcksnummer '".$zzaehler."' ist nicht numerisch</p>";
 			return 9;
 		} elseif ($znenner == "") {
@@ -66,5 +94,5 @@
 			return 5;								
 		} else {
-			echo "<p class='err>FlurstÃŒcks-Nenner '".$znenner."' ist nicht numerisch</p>";
+			echo "<p class='err'>FlurstÃŒcks-Nenner '".$znenner."' ist nicht numerisch</p>";
 			return 9;
 		}
@@ -95,5 +123,5 @@
 	if (!$res) {
 		echo "\n<p class='err'>Fehler bei Gemeinde</p>";
-		if ($debug >= 3) {echo "\n<p class='err'>".$sql."</p>";}
+		if ($debug >= 3) {echo "\n<p class='dbg'>".$sql."</p>";}
 		return 0;
 	}
@@ -131,5 +159,5 @@
 	if (!$res) {
 		echo "\n<p class='err'>Fehler bei Gemarkungen</p>";
-		if ($debug >= 3) {echo "\n<p class='err'>".$sql."</p>";}
+		if ($debug >= 3) {echo "\n<p class='dbg'>".$sql."</p>";}
 		return 0;
 	}
@@ -188,5 +216,5 @@
 	if (!$res) {
 		echo "\n<p class='err'>Fehler bei Gemarkung</p>";
-		if ($debug >= 3) {echo "\n<p class='err'>".$sql."</p>";}
+		if ($debug >= 3) {echo "\n<p class='dbg'>".$sql."</p>";}
 		return 0;
 	}
@@ -275,8 +303,9 @@
 }
 
-function EineFlur() {
-	// Kennzeichen aus Gemarkung und FlurNr wurde eingegeben
-	global $con, $gkz, $gemeinde, $epsg, $debug, $scalefs, $auskpath, $zgemkg, $zflur;
-	$linelimit=600; // Wie groÃ kann eine Flur sein?
+function gemkg_zeile($zgemkg) {
+// Zeile zu Gemarkung ausgeben, gkg-schlÃŒssel ÃŒbergeben
+
+	global $con, $gkz, $gemeinde, $epsg;
+
 	$sql ="SELECT bezeichnung FROM ax_gemarkung g WHERE g.gemarkungsnummer= $1 ;";
 	$v=array($zgemkg);
@@ -300,12 +329,22 @@
 		echo " OT <a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;fskennz=".$zgemkg."'> ".$gmkg." (".$zgemkg.")</a>";
 	echo "\n</div>";
+	return 0;
+}
+
+function EineFlur() {
+	// Kennzeichen aus Gemarkung und FlurNr wurde eingegeben, dazu aktuelle FlurstÃŒcke suchen
+	global $con, $gkz, $gemeinde, $epsg, $debug, $scalefs, $auskpath, $zgemkg, $zflur;
+	$linelimit=600; // Wie groÃ kann eine Flur sein?
+
+	gemkg_zeile($zgemkg);
 	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='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;fskennz=".$zgemkg."-".$zflur."'> ".$zflur."</a>";
+		$url=$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;fskennz=".$zgemkg."-".$zflur;
+		echo "Flur <a href='".$url."'>".$zflur."</a>";
+		//echo "<span class='hislnk'>";
+		echo " <a class='hislnk' title='Historische Flurst&uuml;cke' href='".$url."&amp;hist=j'>Hist.</a>";		
 	echo "\n</div>";
 
 	$sql ="SELECT f.gml_id, f.flurnummer, f.zaehler, f.nenner, f.gemeinde, ";
-	//	$sql.="x(st_transform (st_centroid(f.wkb_geometry), ".$epsg.")) AS x, ";
-	//	$sql.="y(st_transform (st_centroid(f.wkb_geometry), ".$epsg.")) AS y ";
 	if($epsg == "25832") { // Transform nicht notwendig
 		$sql.="x(st_Centroid(f.wkb_geometry)) AS x, ";
@@ -344,4 +383,57 @@
 	if($zfs == 0) { 
 		echo "\n<p class='err'>Kein Flurst&uuml;ck.</p>";
+	} elseif($zfs >= $linelimit) {
+		echo "\n<p>... und weitere</p>";
+	}
+	return;
+}
+
+function HistFlur() {
+	// Kennzeichen aus Gemarkung und FlurNr wurde eingegeben
+	// Die Flur nach Historischen FlurstÃŒcken durchsuchen
+	global $con, $gkz, $gemeinde, $epsg, $debug, $scalefs, $auskpath, $land, $zgemkg, $zflur;
+	$linelimit=400;
+
+	gemkg_zeile($zgemkg);
+	echo "\n<div class='fl' title='Flur'>";
+		echo "\n\t\t<img class='nwlink' src='ico/Flur.ico' width='16' height='16' alt='Flur-Historie'> ";
+		$url=$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;fskennz=".$zgemkg."-".$zflur;
+		echo "Historie: Flur<a title='Aktuelle Flurst&uuml;cke suchen' href='".$url."'> ".$zflur." </a>"; 
+	echo "\n</div>";
+
+	$whcl.="WHERE flurstueckskennzeichen like $1 ";
+	$sql ="SELECT 'h' AS ftyp, gml_id, zaehler, nenner, nachfolgerflurstueckskennzeichen as nachf FROM ax_historischesflurstueck ".$whcl;
+	$sql.="UNION SELECT 'o' AS ftyp, gml_id, zaehler, nenner, nachfolgerflurstueckskennzeichen as nachf FROM ax_historischesflurstueckohneraumbezug ".$whcl;
+	$sql.="ORDER BY zaehler, nenner LIMIT $2 ;"; 
+	$fskzwhere =$land.$zgemkg.str_pad($zflur, 3, "0", $STR_PAD_LEFT)."%";
+	$v=array($fskzwhere,   $linelimit);
+	$res=pg_prepare("", $sql);
+	$res=pg_execute("", $v);
+	if (!$res) {echo "\n<p class='err'>Fehler bei Historie Flur.</p>";}
+	$zfs=0;
+
+	// Konst. Teil d.URL (Flur), FS anhÃ€ngen
+	$flurl=$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;hist=j&amp;fskennz=".$zgemkg."-".$zflur."-";
+
+	while($row = pg_fetch_array($res)) {	
+		$ftyp=$row["ftyp"];
+		$fs_gml=$row["gml_id"];	// fuer Buchausk.
+		$fskenn=$row["zaehler"];
+		if ($row["nenner"] != "") {$fskenn.="/".$row["nenner"];} // Bruchnummer
+
+		//++	if ($ftyp == "h") { } else { }  // versch. Icons? h: Karte Pos.?
+		echo "\n<div class='hi' title='Historisches Flurst&uuml;ck'>"; // Zeile
+			// Icon -> Bauchauskunft
+			echo "\n\t<a title='Nachweis' target='_blank' href='".$auskpath."alkisfshist.php?gkz=".$gkz."&amp;gmlid=".$fs_gml."'>";
+				echo "\n\t\t<img class='nwlink' src='ico/Flurstueck_Historisch.ico' width='16' height='16' alt='Hist'>";
+			echo "\n\t</a> ";		
+			// Kennzeichen -> weiter in die Historie hinein
+			echo "\n\tFlst. <a href='".$flurl.$fskenn."'>".$fskenn."</a>";					
+		echo "\n</div>";
+		$zfs++;
+	}
+	if($zfs == 0) { 
+		echo "\n<p class='err'>Kein historisches Flurst&uuml;ck.</p>";
+		if ($debug > 2) {echo "<p class='dbg'>SQL=<br>".$sql."<br>$1 = ".$fskzwhere."</p>";}
 	} elseif($zfs >= $linelimit) {
 		echo "\n<p>... und weitere</p>";
@@ -409,10 +501,9 @@
 
 function HistFlurstueck() {
-	// Ein HISTORISCHES FlurstÃŒckskennzeichen oder Nachfolger komplett eingegeben
+	// Ein Nachfolger-FS-Kennzeichen soll recherchiert werden.
+	// Es ist unbekannt, ob dies aktuell ist oder auch schon historisch.
 	global $con, $gkz, $debug, $scalefs, $epsg, $auskpath, $land, $zgemkg, $zflur, $zzaehler, $znenner;
 
-//++++ TEST 300 :  2769-9-5/1
-
-	// Suche ueber das Flurstueckskennzeichen, gml meist unbekannt
+	// Suche ueber das Flurstueckskennzeichen, gml ist meist unbekannt
 	$whcl.="WHERE flurstueckskennzeichen= $1 ";
 
@@ -441,7 +532,5 @@
 		if ($row["nenner"] != "") {$fskenn.="/".$row["nenner"];} // Bruchnummer
 
-		if ($ftyp == "a") { // aktuelles FS gefunden
-
-			// noch die Koordinate dazu besorgen
+		if ($ftyp == "a") { // aktuelles FS gefunden, Koordinate holen
 			$sql ="SELECT ";
 			if($epsg == "25832") { // Transform nicht notwendig
@@ -465,7 +554,5 @@
 			if ($zfs == 0) {echo "\n<p class='err'>Kein Treffer bei Koordinate.</p>";}
 			echo "\n<p>aktueller Nachfolger:</p>";	
-
-			// Zeile
-			echo "\n<div class='fs' title='Aktuelles Nachfolger-Flurst&uuml;ck'>";
+			echo "\n<div class='fs' title='Aktuelles Nachfolger-Flurst&uuml;ck'>"; // Zeile
 
 				// Icon -> Nachweis FS-Hist. in Buchauskunft
@@ -530,5 +617,5 @@
 	if($zfs == 0) {
 		echo "\n<p class='err'>Kein historisches Flurst&uuml;ck.</p>";
-		if ($debug > 2) {echo "<p class='err'>".$sql."</p>";}
+		if ($debug > 2) {echo "<p class='dbg'>".$sql."</p>";}
 	}
 	return;
@@ -539,13 +626,11 @@
 // ===========
 if(isset($epsg)) {
-	if ($debug >= 2) {echo "<p>aktueller EPSG='".$epsg."'</p>";	} // aus MB
+	//if ($debug >= 2) {echo "<p class='dbg'>aktueller EPSG='".$epsg."'</p>";} // aus MB
 	$epsg = str_replace("EPSG:", "" , $_REQUEST["epsg"]);	
 } else {
-	if ($debug >= 1) {echo "<p class='err'>kein EPSG gesetzt</p>";}	
+	if ($debug >= 1) {echo "<p class='dbg'>kein EPSG gesetzt</p>";}	
 	$epsg=$gui_epsg; // aus Conf
 }
-if ($debug >= 2) {
-	echo "<p>Filter Gemeinde = ".$gemeinde."</p>";
-}
+//if ($debug >= 2) {echo "<p class='dbg'>Filter Gemeinde = ".$gemeinde."</p>";}
 if ($gemeinde == "") {
 	$gfilter = 0; // ungefiltert
@@ -555,5 +640,5 @@
 	$gfilter = 2; // Liste
 }
-if ($hist == "j") { $phist = true;} else {$phist = false;}
+if ($hist == "j") {$phist = true;} else {$phist = false;}
 
 if(isset($gm)) { // Self-Link aus Gemeinde-Liste 
@@ -562,8 +647,10 @@
 		$zgemkg=$gnr;
 		EineGemarkung(false);
-	};	
+	}
 } else {
 	// Die Formular-Eingabe interpretieren (kann auch ein Link sein)
-	switch (ZerlegungFsKennz($fskennz)) {
+	$retzer=ZerlegungFsKennz($fskennz);
+//	if ($debug > 1) {echo "<p class='dbg'>Return Zerlegung (case) = '".$retzer."'</p>";}	
+	switch ($retzer) {
 	case 0: // leere Eingabe
 		if ($gfilter == 1) { // Die GUI ist bereits auf eine Gemeinde gefiltert
@@ -574,25 +661,25 @@
 	break;
 	case 1:
-		if ($debug >= 2) {echo "<p>Gemarkungsname ".$zgemkg."</p>";}
+		if ($debug >= 2) {echo "<p class='dbg'>Gemarkungsname ".$zgemkg."</p>";}
 		$gnr=SuchGmkgName();
 		if ($gnr > 0) {
 			$zgemkg=$gnr;
 			EineGemarkung(false);
-		};	
+		}
 	break;
 	case 2:
-		if ($debug >= 2) {echo "<p>Gemarkungsnummer ".$zgemkg."</p>";}	
+		if ($debug >= 2) {echo "<p class='dbg'>Gemarkungsnummer ".$zgemkg."</p>";}	
 		EineGemarkung(true);
 	break;
 	case 3:
-		if ($debug >= 2) {echo "<p>Gemarkung ".$zgemkg." Flur ".$zflur."</p>";}
-		EineFlur();
+		if ($debug >= 2) {echo "<p class='dbg'>Gemarkung ".$zgemkg." Flur ".$zflur."</p>";}
+		if ($phist)	{HistFlur();} else {EineFlur();}
 	break;
 	case 4:
-		if ($debug >= 2) {echo "<p>Gemarkung ".$zgemkg." Flur ".$zflur." FlurstÃŒck ".$zzaehler."</p>";}
+		if ($debug >= 2) {echo "<p class='dbg'>Gemarkung ".$zgemkg." Flur ".$zflur." FlurstÃŒck ".$zzaehler."</p>";}
 		if ($phist)	{HistFlurstueck();} else {EinFlurstueck();}
 	break;
 	case 5:
-		if ($debug >= 2) {echo "<p>Gemarkung ".$zgemkg." Flur ".$zflur." FlurstÃŒck ".$zzaehler."/".$znenner."</p>";}
+		if ($debug >= 2) {echo "<p class='dbg'>Gemarkung ".$zgemkg." Flur ".$zflur." FlurstÃŒck ".$zzaehler."/".$znenner."</p>";}
 		if ($phist) {HistFlurstueck();} else {EinFlurstueck();}		
 	break;
