Index: /trunk/info/info/alkisn/alkisfsnw.php
===================================================================
--- /trunk/info/info/alkisn/alkisfsnw.php	(revision 416)
+++ /trunk/info/info/alkisn/alkisfsnw.php	(revision 417)
@@ -22,4 +22,5 @@
 	2018-05-03 Anpassung fÃŒr GrundstÃŒcksnachweis
 	2018-11-09 Umstellung Full-Schema
+	2018-11-19 EntschlÃŒsseln "zeigtaufexternes_art" mit function fortfuehrungen().
 
 ++ToDo:
@@ -129,7 +130,6 @@
 
 // F L U R S T U E C K  m. Gebiet
-$sql ="SELECT f.zeigtaufexternes_name, f.flurnummer, f.zaehler, f.nenner, f.gemeindezugehoerigkeit_regierungsbezirk, f.gemeindezugehoerigkeit_kreis, f.gemeindezugehoerigkeit_gemeinde, f.amtlicheflaeche, st_area(f.wkb_geometry) AS fsgeomflae, 
-to_char(cast(f.zeitpunktderentstehung AS date),'DD.MM.YYYY') AS zeitpunktderentstehung, f.istgebucht, g.gemarkungsnummer, g.bezeichnung, 
-r.bezeichnung AS rbez, k.bezeichnung AS kbez, m.bezeichnung AS mbez 
+$sql ="SELECT f.zeigtaufexternes_art, f.zeigtaufexternes_name, f.flurnummer, f.zaehler, f.nenner, f.gemeindezugehoerigkeit_regierungsbezirk, f.gemeindezugehoerigkeit_kreis, f.gemeindezugehoerigkeit_gemeinde, f.amtlicheflaeche, st_area(f.wkb_geometry) AS fsgeomflae, 
+to_char(cast(f.zeitpunktderentstehung AS date),'DD.MM.YYYY') AS zeitpunktderentstehung, f.istgebucht, g.gemarkungsnummer, g.bezeichnung, r.bezeichnung AS rbez, k.bezeichnung AS kbez, m.bezeichnung AS mbez 
 FROM ax_flurstueck f 
 LEFT JOIN ax_gemarkung g ON f.gemeindezugehoerigkeit_land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer 
@@ -165,8 +165,8 @@
 	$fsbuchflaed=number_format($fsbuchflae,0,",",".") . " m&#178;"; // Display-Format dazu
 	$fsgeomflaed=number_format($fsgeomflae,0,",",".") . " m&#178;";
+	$gml_buchungsstelle=$row["istgebucht"]; // wird erst im GB-Teil benÃ¶tigt
 	$entsteh=$row["zeitpunktderentstehung"];
-	$gml_buchungsstelle=$row["istgebucht"]; // wird erst im GB-Teil benÃ¶tigt
-	$ffnr=$row["zeigtaufexternes_name"]; // Fortfuehrungsnummer(n)
-	$arrn=explode(",", trim($ffnr, "{}") ); // PHP-Array
+	$zeart=$row["zeigtaufexternes_art"];
+	$zename=$row["zeigtaufexternes_name"];
 } else {
 	echo "\n<p class='err'>Fehler! Kein Treffer f&uuml;r Flurst&uuml;ck mit gml_id=".$gmlid."</p>";
@@ -209,18 +209,7 @@
 		."\n\t\t\t\t\t<td title='Flurst&uuml;cksnummer (Z&auml;hler / Nenner)'><span class='wichtig'>".$flstnummer."</span></td>\n\t\t\t\t</tr>"
 	."\n\t\t\t</table>"
-	."\n\t\t</td>\n\t\t<td>" // Rechts
-	."\n\t\t\t<table class='fsd'>" // FS-Daten 2 Spalten
-		."\n\t\t\t\t<tr>\n\t\t\t\t\t<td>Entstehung</td>"
-		."\n\t\t\t\t\t<td>".$entsteh."</td>\n\t\t\t\t</tr>"
-		."\n\t\t\t\t<tr>"
-			."\n\t\t\t\t\t<td>letz. Fortf</td>"
-			."\n\t\t\t\t\t<td title='Jahrgang / Fortf&uuml;hrungsnummer - Fortf&uuml;hrungsart'>";
-				foreach($arrn AS $val) { // Zeile f. jedes Element des Array
-					echo trim($val, '"')."<br>";
-				}
-			echo "</td>"
-		."\n\t\t\t\t</tr>"
-	."\n\t\t\t</table>"
-."\n\t\t</td>\n\t</tr>\n</table>";
+	."\n\t\t</td>\n\t\t<td>"; // Rechts
+	fortfuehrungen($entsteh, $zeart, $zename);
+echo "\n\t\t</td>\n\t</tr>\n</table>";
 
 echo "\n<hr>\n<table class='fs'>"; // FS-Teil 6 Spalten
Index: /trunk/info/info/alkisn/alkisfkt.php
===================================================================
--- /trunk/info/info/alkisn/alkisfkt.php	(revision 416)
+++ /trunk/info/info/alkisn/alkisfkt.php	(revision 417)
@@ -17,4 +17,5 @@
 	2018-05-03 GrundstÃŒcksnachweis
 	2018-11-09 Umstellung Full-Schema
+	2018-11-19 EntschlÃŒsseln "zeigtaufexternes_art" mit function fortfuehrungen().
 
 	++ ToDo: Parameter $lnkclass in eigentuemer() und $jfenster in buchung_anzg() vereinheitlichen
@@ -611,3 +612,53 @@
 }
 
+function fortfuehrungen($entsteh, $dbzeart, $dbzename) {
+// Tabelle im Kopf von FlurstÃŒck und FS-Historie. 2 Z./Sp. Entstehung/FortfÃŒhrung
+// Parameter: Die DB-Spalten "zeitpunktderentstehung", "zeigtaufexternes_art" und "zeigtaufexternes_name"
+	global $debug, $showkey;
+
+//	if ($debug > 2) {echo "<p class='dbg'>function fortfuehrungen<br>1: ".$dbzeart."<br>2: ".$dbzename."</p>";}
+ 
+	echo "\n\t<table class='fsd'>" // FS-Daten 2 Spalten
+		."\n\t\t<tr>\n\t\t\t<td>Entstehung</td>"
+		."\n\t\t\t<td title='Zeitpunkt der Enstehung'>".$entsteh."</td>\n\t\t</tr>";
+	echo "\n\t<tr>"
+		."\n\t\t\t<td>";
+	$arrart=explode(",", trim($dbzeart, "{}"));
+	foreach($arrart AS $artval) { // Zeile fÃŒr jedes Element
+		$artval=trim($artval, '"');
+// ibR: {"Entstehung des FlurstÃŒcks/5200","Letzte FortfÃŒhrung des FlurstÃŒcks/5300",urn:adv:fachdatenverbindung:AA_Antrag}
+// AED: {http://geoportal.kreis-herford.de/alkis/alkis.html#5200,http://geoportal.kreis-herford.de/alkis/alkis.html#5300,urn:adv:fachdatenverbindung:AA_Antrag}
+
+		$artpos=strpos($artval, '#');
+		if ($artpos > 0) { // AED
+			$artkey=substr($artval, $artpos + 1);
+			switch ($artkey) { // keine SchlÃŒsseltabelle?
+				case '5100': $arttxt="Grundst&uuml;ckshinweis (aus ALB-Historie)"; break;
+				case '5200': $arttxt="Entstehung des Flurst&uuml;cks"; break;
+				case '5300': $arttxt="Letzte Fortf&uuml;hrung des Flurst&uuml;cks"; break;
+				default: $arttxt=$artval;
+			}
+			if ($showkey) {echo "<span class='key'><a target='_blank' href='".$artval."'>".$artkey."</a></span> ";}
+			echo $arttxt."<br>";
+		} else {
+			$artpos=strpos($artval, '/');
+			if ($artpos > 0) { // ibR
+				$artkey=substr($artval, $artpos + 1);
+				$arttxt=substr($artval, 0, $artpos);
+				if ($showkey) {echo "<span class='key'>".$artkey."</span> ";}
+				echo $arttxt."<br>";
+			}
+		}
+	}
+	echo "</td>"
+	."\n\t\t\t<td title='Jahrgang / Fortf&uuml;hrungsnummer - Fortf&uuml;hrungsart'>";
+	$arrname=explode(",", trim($dbzename, "{}"));
+	foreach($arrname AS $val) {
+		echo trim($val, '"')."<br>";
+	}
+	echo "</td>"
+	."\n\t\t</tr>"
+	."\n\t</table>";
+}
+
 ?>
Index: /trunk/info/info/alkisn/alkisfshist.php
===================================================================
--- /trunk/info/info/alkisn/alkisfshist.php	(revision 416)
+++ /trunk/info/info/alkisn/alkisfshist.php	(revision 417)
@@ -12,5 +12,5 @@
 	2018-03-16 NULL-Werte in gemeinde und kreis in ax_historischesflurstueck berÃŒcksichtigen
 	2018-04-23 &nodebug
-	2018-11-09 Umstellung Full-Schema
+	2018-11-19 Full-Schema: EntschlÃŒsseln "zeigtaufexternes_art" mit function fortfuehrungen(). Tab. "ax_historischesflurstueck" hat kein "vorgaengerflurstueckskennzeichen" mehr.
 */
 
@@ -68,6 +68,6 @@
 
 function such_vor_arr($fsk) {
-// Suchen der Vorgaenger zum aktuellen Flurst. Ausgabe von Selbst-Links Zeilenweise in <td>.
-// Akt. FS hat keine Verweise auf Vorgaenger. Darum in den Nachfolger-Verweisen von Hist.-FS suchen.
+// Suchen Vorgaenger zum aktuellen Flurst. Ausgabe von Selbst-Links Zeilenweise in <td>.
+// Akt. FS und hist.FS hat keine Verweise auf Vorgaenger. Darum in den Nachfolger-Verweisen von Hist.-FS suchen.
 	global $gkz, $con, $debug, $showkey, $filtkreis, $filtgem;
 
@@ -75,6 +75,5 @@
 	."WHERE $1 = ANY (h.nachfolgerflurstueckskennzeichen) AND h.endet IS NULL "
 	."UNION SELECT 'o' AS ftyp, o.gml_id, o.flurstueckskennzeichen FROM ax_historischesflurstueckohneraumbezug o "
-	."WHERE $1 = ANY (o.nachfolgerflurstueckskennzeichen) AND o.endet IS NULL "
-	."ORDER BY flurstueckskennzeichen";
+	."WHERE $1 = ANY (o.nachfolgerflurstueckskennzeichen) AND o.endet IS NULL ORDER BY flurstueckskennzeichen";
 
 	$v=array($fsk);
@@ -97,7 +96,4 @@
 	if ($zv == 0) {
 		echo "(keine)";
-		// if ($debug > 2) {echo "\n<p class='dbg'>SQL='".$sqlv."' FSK='".$fsk."'</p>";}
-	} else {
-		// if ($debug > 2) {echo "\n<p class='dbg'>Treffer=".$zv."</p>";}
 	}
 	return;
@@ -165,5 +161,4 @@
 if ($parmtyp != "") { // einer der beiden erlaubten FÃ€lle
 	// UNION-Abfrage auf 3Ã€hnliche Tabellen, darin aber immer nur 1 Treffer.
-
 	$felder="gml_id, flurnummer, cast(zaehler AS character varying), cast(nenner AS character varying), flurstueckskennzeichen, amtlicheflaeche, to_char(cast(zeitpunktderentstehung AS date),'DD.MM.YYYY') AS zeitpunktderentstehung, gemarkungsnummer, ";
 
@@ -174,11 +169,11 @@
 	} else { // ZusÃ€tze zur WHERE-Clausel
 		$wheref=" AND f.gemeindezugehoerigkeit_kreis = '".$filtkreis."' AND f.gemeindezugehoerigkeit_gemeinde = '".$filtgem."' ";
-		$whereh=" AND (h.kreis IS NULL OR h.kreis = '".$filtkreis."' ) AND (h.gemeinde IS NULL OR h.gemeinde = '".$filtgem."') ";
-		$whereo=" AND (o.gemeinde IS NULL OR o.gemeinde = '".$filtgem."') ";
-	}
-
-	$sqlu ="SELECT 'a' AS ftyp, ".$felder."null AS nach, null AS vor, null AS \"name\" FROM ax_flurstueck f ".$whereclause.$wheref." AND f.endet IS NULL "
-	."UNION SELECT 'h' AS ftyp, ".$felder."nachfolgerflurstueckskennzeichen AS nach, vorgaengerflurstueckskennzeichen AS vor, name FROM ax_historischesflurstueck h ".$whereclause.$whereh." AND h.endet IS NULL "
-	."UNION SELECT 'o' AS ftyp, ".$felder."nachfolgerflurstueckskennzeichen AS nach, vorgaengerflurstueckskennzeichen AS vor, name FROM ax_historischesflurstueckohneraumbezug o ".$whereclause.$whereo." AND o.endet IS NULL;";
+		$whereh=" AND (h.gemeindezugehoerigkeit_kreis IS NULL OR h.gemeindezugehoerigkeit_kreis = '".$filtkreis."' ) AND (h.gemeindezugehoerigkeit_gemeinde IS NULL OR h.gemeindezugehoerigkeit_gemeinde = '".$filtgem."') ";
+		$whereo=" AND (o.gemeindezugehoerigkeit_gemeinde IS NULL OR o.gemeindezugehoerigkeit_gemeinde = '".$filtgem."') ";
+	}
+
+	$sqlu ="SELECT 'a' AS ftyp, ".$felder."null::character varying[] AS nach, null::character varying[] AS vor, zeigtaufexternes_art AS zart, zeigtaufexternes_name AS zname FROM ax_flurstueck f ".$whereclause.$wheref." AND f.endet IS NULL "
+	."UNION SELECT 'h' AS ftyp, ".$felder."nachfolgerflurstueckskennzeichen AS nach, null AS vor, zeigtaufexternes_art AS zart, zeigtaufexternes_name AS zname FROM ax_historischesflurstueck h ".$whereclause.$whereh." AND h.endet IS NULL "
+	."UNION SELECT 'o' AS ftyp, ".$felder."nachfolgerflurstueckskennzeichen AS nach, vorgaengerflurstueckskennzeichen AS vor, zeigtaufexternes_art AS zart, zeigtaufexternes_name AS zname FROM ax_historischesflurstueckohneraumbezug o ".$whereclause.$whereo." AND o.endet IS NULL;";
 
 	$resu = pg_prepare("", $sqlu);
@@ -194,11 +189,34 @@
 		$fskenn=$rowu["flurstueckskennzeichen"];
 		$flae=number_format($rowu["amtlicheflaeche"],0,",",".") . " m&#178;";
-		$name=$rowu["name"]; // in DB ein Array
-		$arrn=explode(",", trim($name, "{}") ); // PHP-Array 
 		$gemkname= gemkg_name($gmkgnr);
-		$entsteh=$rowu["zeitpunktderentstehung"];
 		$vor=$rowu["vor"];
 		$nach=$rowu["nach"];
+		$entsteh=$rowu["zeitpunktderentstehung"];
+		$zeart=$rowu["zart"];
+		$zename=$rowu["zname"];
 		if ($gmlid == "") {$gmlid=$rowu["gml_id"];} // fuer selbst-link-Umschalter ueber footer
+
+		switch ($ftyp) { // Diff. Hist./Akt.
+			case 'a': 
+				$wert = "aktuell";
+				$ico= "Flurstueck.png";
+				$cls= "kennzfs";	
+			break;
+			case 'h': 
+				$wert = "historisch<br>(mit Raumbezug)";
+				$ico= "Flurstueck_Historisch.png"; //
+				$cls= "kennzfsh";
+			break;
+			case 'o': 
+				$wert = "historisch<br>ohne Raumbezug";
+				$ico= "Flurstueck_Historisch_oR.png";
+				$cls= "kennzfsh";
+			break;
+			default:
+				$wert = "<b>nicht gefunden: ".$parmtyp." = '".$parmval."'</b>";
+				$ico= "Flurstueck_Historisch.png";
+				$cls= "kennzfsh";
+			break;
+		}
 	} else {
 		if ($debug > 1) {
@@ -211,34 +229,12 @@
 }
 
-switch ($ftyp) { // Unterschiede Hist./Aktuell
-	case 'a': 
-		$wert = "aktuell";
-		$ico= "Flurstueck.png";
-		$cls= "kennzfs";	
-	break;
-	case 'h': 
-		$wert = "historisch<br>(mit Raumbezug)";
-		$ico= "Flurstueck_Historisch.png"; //
-		$cls= "kennzfsh";
-	break;
-	case 'o': 
-		$wert = "historisch<br>ohne Raumbezug";
-		$ico= "Flurstueck_Historisch_oR.png";
-		$cls= "kennzfsh";
-	break;
-	default:
-		$wert = "<b>nicht gefunden: ".$parmtyp." = '".$parmval."'</b>";
-		$ico= "Flurstueck_Historisch.png";
-		$cls= "kennzfsh";
-	break;
-}
-
 // Balken
 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>";
-	// darin Tabelle Kennzeichen
-	echo "\n\t<table class='".$cls."' title='Flurst&uuml;ckskennzeichen'>\n\t<tr>"
+echo "\n<h2>Flurst&uuml;ck Historie</h2>";
+
+echo "\n<table class='outer'>\n<tr>\n\t<td>"
+	."\n\t<tr>\n\t\t<td class='ll'><img src='ico/".$ico."' width='16' height='16' alt=''> Kennzeichen:</td>" // Links
+	."\n\t\t<td>" // Mitte
+	."\n\t<table class='".$cls."' title='Flurst&uuml;ckskennzeichen'>\n\t<tr>" // innere Tabelle Kennzeichen
 		."\n\t\t<td class='head'>Gemarkung</td>\n\t\t<td class='head'>Flur</td>\n\t\t<td class='head'>Flurst-Nr.</td>\n\t</tr>"
 		."\n\t<tr>\n\t\t<td title='Gemarkung'>";
@@ -249,18 +245,6 @@
 	."\n\t</table>"
 ."\n\t</td>\n\t<td>";
-	// FS-Daten 2 Spalten
-	echo "\n\t<table class='fsd'>"
-		."\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'>";
-				foreach($arrn AS $val) { // Zeile f. jedes Element
-					echo trim($val, '"')."<br>";
-				}
-			echo "</td>"
-		."\n\t</tr>"
-	."\n\t</table>"
-."\n\t</td>\n</tr>\n</table>";
+fortfuehrungen($entsteh, $zeart, $zename);
+echo "\n\t</td>\n</tr>\n</table>";
 
 if ($ftyp == "a") { // Aktuell -> Historie
@@ -288,14 +272,10 @@
 	// Spalte 2: V o r g Ã€ n g e r
 	echo "\n\t<td>";
-	switch ($ftyp) { // Unterschiede Historisch/Aktuell
+	switch ($ftyp) { // Diff. Hist./Akt.
 		case 'a':
 			such_vor_arr($fskenn);
 		break;
 		case 'h':
-			if ($vor == "") {
-				echo "Geometrische Suche<br>(noch nicht m&ouml;glich)";
-			} else {
-				vornach($vor);
-			}
+			such_vor_arr($fskenn);
 		break;
 		case 'o':
