Index: trunk/info/info/alkisn/alkisbauwerk.php
===================================================================
--- trunk/info/info/alkisn/alkisbauwerk.php	(revision 425)
+++ trunk/info/info/alkisn/alkisbauwerk.php	(revision 427)
@@ -1,35 +1,39 @@
 <?php
-/*	alkisbauwerk.php - Bauwerksdaten
-	ALKIS-Buchauskunft, Kommunales Rechenzentrum Minden-Ravensberg/Lippe (Lemgo).
-
-	1 Bauwerk im Verkehrsbereich
-	2 Bauwerk im GewÃ€sserbereich
-	3 Sonstiges Bauwerk oder sonstige Einrichtung 51009
-	4 Bauwerk oder Anlage fÃŒr Industrie und Gewerbe 51002
-	5 Bauwerk oder Anlage fÃŒr Sport, Freizeit und Erholung 51006
-	6 Leitung 51005
-	7 Transportanlage 51004
-	8 Turm 51001
-	9 VorratsbehÃ€lter, Speicherbauwerk 51003
+/*	alkisbauwerk.php
+
+	ALKIS-Buchauskunft
+	Author: Frank JÃ€ger, Kommunales Rechenzentrum Minden-Ravensberg/Lippe (Lemgo)
+ 
+	Bauwerksdaten
+
+	Typen von Bauwerken (jeweils eigene Tabellen mit unterschiedlicher Struktur):
+	 1 Bauwerk im Verkehrsbereich
+	 2 Bauwerk im GewÃ€sserbereich
+	 3 Sonstiges Bauwerk oder sonstige Einrichtung 51009
+	 4 Bauwerk oder Anlage fÃŒr Industrie und Gewerbe 51002
+	 5 Bauwerk oder Anlage fÃŒr Sport, Freizeit und Erholung 51006
+	 6 Leitung 51005
+	 7 Transportanlage 51004
+	 8 Turm 51001
+	 9 VorratsbehÃ€lter, Speicherbauwerk 51003
+	10 Historisches Bauwerk oder historische Einrichtung 51007
+	11 Heilquelle, Gasquelle 51008 
+	12 Einrichtung in Ã¶ffentlichen Bereichen 51010
+	(13 Besonderer Bauwerkspunkt 51011) fehlt noch
 
 	Version:
 	2021-03-11 Neues Modul
-	2021-03-17 Korrekturen
-	2021-12-09 2021-12-09 Neue Parameter: $katAmtMix (Kataster-Amt-Mix), $PrntBtn (Drucken-SchaltflÃ€che). Debugging verbessert.
+	2021-12-09 Neue Parameter: $katAmtMix (Kataster-Amt-Mix), $PrntBtn (Drucken-SchaltflÃ€che). Debugging verbessert.
+	2022-01-13 Neue Functions LnkStf(), DsKy()
+	2022-02-23 Neue Bauwerks-Typen 10-12
 
 ToDo:
-	- Icon fÃŒr "Bauwerk" machen! ggf. einzeln fÃŒr jede der 9 Arten?
-	- 4 weitere Objektarten, bisher nicht verwendet:
-	51007 'Historisches Bauwerk oder historische Einrichtung'
-	51008 'Heilquelle, Gasquelle'
-	51010 'Einrichtung in Ã¶ffentlichen Bereichen'
-	51011 'Besonderer Bauwerkspunkt'
+	- Vom Bauwerk ÃŒberlagerte FlurstÃŒcke ÃŒber geom. Verschneidung ermitteln und verlinken.
+	- Icon fÃŒr "Bauwerk" machen! Ggf. einzeln fÃŒr jede Art?
 */
 
-// Bauwerk (bw) gehÃ¶rt zu (gz) Lage
-// Ein Bauwerk "gehÃ¶rt zu" (Relation) einem GebÃ€ude. Zu diesem GebÃ€ude die Adresse(n) als Tabellen-Zeile ausgeben
+// Ein Bauwerk (bw_) "gehÃ¶rt zu" (_gz_) (Relation) einem GebÃ€ude. Zu diesem GebÃ€ude die Lage-Zeilen als Tabellen ausgeben
 function bw_gz_lage($gmlgz) {
-	global $gkz, $dbg, $showkey;
-	
+	global $gkz, $dbg;
 	// HAUPTgebÃ€ude  Geb >zeigtAuf> lage (mehrere)
 	$sqlgz ="SELECT 'm' AS ltyp, l.gml_id AS lgml, s.lage, s.bezeichnung, l.hausnummer, '' AS laufendenummer, p.bezeichnung as gemeinde "
@@ -38,6 +42,4 @@
 	."JOIN ax_gemeinde p ON s.land=p.land AND s.regierungsbezirk=p.regierungsbezirk AND s.kreis=p.kreis AND s.gemeinde=p.gemeinde ".UnqKatAmt("s","p")
 	."WHERE g.gml_id= $1 AND g.endet IS NULL AND l.endet IS NULL AND s.endet IS NULL ";
-
-	// ++ evtl. keine NEBEN-GebÃ€ude mÃ¶glich, nur Haupt-?
 	// UNION - oder NEBENgebÃ€ude  Geb >hat> Pseudo
 	$sqlgz.="UNION SELECT 'p' AS ltyp, l.gml_id AS lgml, s.lage, s.bezeichnung, l.pseudonummer AS hausnummer, l.laufendenummer, p.bezeichnung as gemeinde "
@@ -45,6 +47,7 @@
 	."JOIN ax_lagebezeichnungkatalogeintrag s ON l.kreis=s.kreis AND l.gemeinde=s.gemeinde AND l.lage=s.lage "
 	."JOIN ax_gemeinde p ON s.land=p.land AND s.regierungsbezirk=p.regierungsbezirk AND s.kreis=p.kreis AND s.gemeinde=p.gemeinde ".UnqKatAmt("s","p")	
-	."WHERE g.gml_id= $1 AND g.endet IS NULL AND l.endet IS NULL AND s.endet IS NULL " // ID des Hauses"
-	."ORDER BY bezeichnung, hausnummer, laufendenummer;";
+	."WHERE g.gml_id= $1 AND g.endet IS NULL AND l.endet IS NULL AND s.endet IS NULL ";
+
+	$sqlgz.="ORDER BY bezeichnung, hausnummer, laufendenummer;";
 	$v = array($gmlgz);
 	$resgz = pg_prepare("", $sqlgz);
@@ -52,11 +55,17 @@
 	if (!$resgz) {
 		echo "\n<p class='err'>Fehler bei Lage mit HsNr. zum Bauwerk</p>";
-		if ($dbg > 2) {echo "\n<p class='dbg'>SQL=<br>".str_replace("$1", "'".$gmlgz."'", $sqlgz)."</p>";}
-		if ($dbg > 1) {echo "<p class='dbg'>Fehler:".pg_result_error($resgz)."</p>";}
+		if ($dbg > 1) {
+			echo "<p class='dbg'>Fehler:".pg_result_error($resgz)."</p>";
+			if ($dbg > 2) {echo "\n<p class='dbg'>SQL=<br>".str_replace("$1", "'".$gmlgz."'", $sqlgz)."</p>";}
+		}
 	} else {
-		echo "\n<tr>";
-		echo "\n\t<td class='li'>Lage</td>";
-		echo "\n\t<td class='fett'>";
+		$erst=true;
 		while($rowgz = pg_fetch_assoc($resgz)) { // LOOP: Lagezeilen
+			if ($erst) {
+				echo "\n<tr>\n\t<td class='li'>Lage</td>";
+				$erst=false;
+			} else {
+				echo "\n<tr>\n\t<td class='li'>&nbsp;</td>";
+			}
 			$ltyp=$rowgz["ltyp"];
 			$skey=$rowgz["lage"];
@@ -65,24 +74,16 @@
 			$hlfd=$rowgz["laufendenummer"];
 			$gmllag=$rowgz["lgml"];
-			$gemeinde=$rowgz["gemeinde"];
-
+			$gemeinde=htmlentities($rowgz["gemeinde"], ENT_QUOTES, "UTF-8");
 			if ($ltyp === "p") {
-				$lagetitl="NebengebÃ€ude Nr. ".$hlfd;
+				$lagetitl="Nebengeb&auml;ude Nr. ".$hlfd;
 				$lagetxt=$snam." ".$hsnr." (".$hlfd."), ".$gemeinde;
 			} else {
-				$lagetitl="HauptgebÃ€ude - Hausnummer ".$hsnr;
+				$lagetitl="HauptgebÃ€ude - HsNr. ".$hsnr;
 				$lagetxt=$snam." ".$hsnr.", ".$gemeinde;
 			}
-
-			echo "\n\t\t<a title='".$lagetitl."' href='alkislage.php?gkz=".$gkz."&amp;gmlid=".$gmllag."&amp;ltyp=".$ltyp;
-				if ($showkey) {echo "&amp;showkey=j";}
-				echo "'>";
-				if ($showkey) {echo "<span class='key'>(".$skey.")</span>&nbsp;";}
-			echo $lagetxt."&nbsp;<img src='ico/Lage_mit_Haus.png' width='16' height='16' alt=''></a>&nbsp;";
-		}
-		echo "</td>";
-		echo "\n\t<td>";
-		echo "\n\t\t<p class='erkli'>Das Haus hat die Adresse ".$lagetitl."</p>";
-		echo "\n\t</td>\n</tr>";
+			echo "\n\t<td class='adrlink'><a title='".$lagetitl."' href='alkislage.php?gkz=".$gkz."&amp;gmlid=".$gmllag."&amp;ltyp=".$ltyp.LnkStf()."'>"
+			.DsKy($skey, 'Stra&szlig;en-*').$lagetxt."&nbsp;<img src='ico/Lage_mit_Haus.png' width='16' height='16' alt=''></a>&nbsp;";
+			echo "</td>\n\t<td><p class='erkli'>Adresse: ".$lagetitl."</p></td>\n</tr>";
+		}
 		pg_free_result($resgz);
 	}
@@ -119,24 +120,23 @@
 			$titel='Bezeichnung';
 		break;	
-	// 1 Verk.
-		case 'durchfahrtshoehe':
+		case 'durchfahrtshoehe': // 1
 			$titel='Durchfahrtsh&ouml;he';
 			$einh=' m';
 		break;	
-	// 6 Leitung
-		case 'spannungsebene':
+		case 'spannungsebene': // 6
 			$titel='Spannungsebene';
 			$einh=' KV';
 		break;
-	// 7 Transport
-		case 'produkt':
+		case 'produkt': // 7
 			$titel='Produkt';
 		break;
-	// Fehler
+		case 'kilometerangabe': // 12
+			$titel='Kilometerangabe';
+			$einh=' KM';
+		break;
 		default: // noch nicht berÃŒcksichtigt
 			if ($dbg > 1) {echo "<p class='dbg'>Der Feldname ".$col." ist in function zusatz_spalte noch nicht ber&uuml;cksichtigt.</p>";}
 			$titel=$col;
 	}
-
 	if ($inhalt != '') {$inhalt.=$einh;}
 	tab_zeile($titel, '', $inhalt, '', '');
@@ -156,5 +156,5 @@
 //	if ($dbg > 1) {echo "<p>Verweis Typ '".$col."' auf Objekt(e): '".$inhalt."'.</p>";}
 	switch ($col) {
-		case 'hatdirektunten': // [] ++ Wie kann man dies Objekt finden?
+		case 'hatdirektunten': // [] In welcher Tabelle kann man dies Objekt finden?
 			$olist='';
 			$arrhdu=explode(",", trim($inhalt, "{}"));
@@ -167,7 +167,6 @@
 				verweis_zeile('Haus', '', 'Das Bauwerk geh&ouml;rt zum Haus');
 			} else {
-				$link="\n\t\t<a title='geh&ouml;rt zu' href='alkishaus.php?gkz=".$gkz."&amp;gmlid=".$inhalt;
-				if ($showkey) {$link.="&amp;showkey=j";}
-				$link.="'>Haus&nbsp;<img src='ico/Haus.png' width='16' height='16' alt=''></a>";
+				$link="\n\t\t<a title='geh&ouml;rt zu' href='alkishaus.php?gkz=".$gkz."&amp;gmlid=".$inhalt.LnkStf()
+				."'>Haus&nbsp;<img src='ico/Haus.png' width='16' height='16' alt=''></a>";
 				verweis_zeile('Haus', $link, 'Das Bauwerk geh&ouml;rt zum Haus');
 				bw_gz_lage($inhalt);				
@@ -182,5 +181,4 @@
 
 // S T A R T
-
 ini_set("session.cookie_httponly", 1);
 session_start();
@@ -199,5 +197,5 @@
 	die("Fehlender Parameter");
 }
-if (!preg_match('#^[1-9]{1}$#', $btyp)) {die("Eingabefehler btyp");} // Bauwerks-Typ = Tabelle
+if (!preg_match('#^[0-9]{1,2}$#', $btyp)) {die("Eingabefehler btyp");} // Bauwerks-Typ = Tabelle
 if (!preg_match('#^[j|n]{0,1}$#', $showkey)) {die ("Eingabefehler showkey");}
 if ($showkey === "j") {$showkey=true;} else {$showkey=false;}
@@ -224,13 +222,14 @@
 
 $erlaubnis = darf_ich(); if ($erlaubnis === 0) { die('<p class="stop1">Abbruch</p></body>'); }
-$dbg=$debug; // CONF in Arbeits-Variable
-if ($nodebug === "j") {$dbg=0;} // Entwicklungsumgebung temporÃ€r ausschalten
+$dbg=$debug;
+if ($nodebug === "j") {$dbg=0;}
 
 $con = pg_connect($dbconn." options='--application_name=ALKIS-Auskunft_alkisbauwerk.php'");
 if (!$con) echo "\n<p class='err'>Fehler beim Verbinden der DB</p>\n";
 
-// Konstanten fÃŒr Sortierung und Gruppierung
+// Konstanten fÃŒr Sortierung und Gruppierung nach Bauwerks-Typen
 $btyp_verkehr=1; $btyp_gewaesser=2; $btyp_sonst=3; $btyp_indu=4; $btyp_sport=5;
 $btyp_leitg=6; $btyp_trans=7; $btyp_turm=8; $btyp_vorrat=9;
+$btyp_hist=10; $btyp_heil=11; $btyp_oeff=12; $btyp_bpkt=13;
 
 /* in ALLEN Bauwerks-Typen folgende Spalten, bisher NICHT verwendet:
@@ -244,161 +243,150 @@
 	3. sqlz: ZusÃ€tzliche Spalten, individuell je Objektart (einfache Werte-Darstellung)
 	4. sqlr: Relationen zu anderen Objektarten */
+$WH=" WHERE b".$btyp.".gml_id = $1 AND b".$btyp.".endet IS NULL;"; // WHERE-Clause (mehrfach je Typ verwendet)
 switch ($btyp) {
-	
+
 case $btyp_verkehr:	// 1 - V e r k e h r
+	$FR=" FROM ax_bauwerkimverkehrsbereich b1 "; // FROM-Clause (mehrfach je Typ verwendet)
 	$btyptitle='Bauwerk im Verkehrsbereich';
-	$sqlb="SELECT b1.bauwerksfunktion, k1.beschreibung, k1.dokumentation, b1.name, b1.statement, GeometryType(b1.wkb_geometry) as bgeotyp, round(st_area(b1.wkb_geometry)::numeric,2) AS flae
- FROM ax_bauwerkimverkehrsbereich b1 LEFT JOIN ax_bauwerksfunktion_bauwerkimverkehrsbereich k1 ON b1.bauwerksfunktion=k1.wert 
- WHERE b1.gml_id = $1 AND b1.endet IS NULL;";
-	$sqlk="SELECT b1.zustand, k1.beschreibung, k1.dokumentation
- FROM ax_bauwerkimverkehrsbereich b1 LEFT JOIN ax_zustand_bauwerkimverkehrsbereich k1 ON b1.zustand=k1.wert 
- WHERE b1.gml_id = $1 AND b1.endet IS NULL;";
-	$sqlz="SELECT b1.bezeichnung, b1.breitedesobjekts, b1.durchfahrtshoehe FROM ax_bauwerkimverkehrsbereich b1 WHERE b1.gml_id = $1 AND b1.endet IS NULL;";
-	$sqlr="SELECT b1.hatdirektunten FROM ax_bauwerkimverkehrsbereich b1 WHERE b1.gml_id = $1 AND b1.endet IS NULL;";
+	$sqlb="SELECT b1.bauwerksfunktion, k1.beschreibung, k1.dokumentation, b1.name, b1.statement, GeometryType(b1.wkb_geometry) as bgeotyp, round(st_area(b1.wkb_geometry)::numeric,2) AS flae"
+	.$FR."LEFT JOIN ax_bauwerksfunktion_bauwerkimverkehrsbereich k1 ON b1.bauwerksfunktion=k1.wert".$WH;
+	$sqlk="SELECT b1.zustand, k1.beschreibung, k1.dokumentation".$FR."LEFT JOIN ax_zustand_bauwerkimverkehrsbereich k1 ON b1.zustand=k1.wert".$WH;
+	$sqlz="SELECT b1.bezeichnung, b1.breitedesobjekts, b1.durchfahrtshoehe".$FR.$WH;
+	$sqlr="SELECT b1.hatdirektunten".$FR.$WH;
 break;
 
 case $btyp_gewaesser:	// 2 - G e w Ã€ s s e r
+	$FR=" FROM ax_bauwerkimgewaesserbereich b2 ";
 	$btyptitle='Bauwerk im GewÃ€sserbereich';
-	$sqlb="SELECT b2.bauwerksfunktion, ug.beschreibung, ug.dokumentation, b2.name, b2.statement, GeometryType(b2.wkb_geometry) as bgeotyp, round(st_area(b2.wkb_geometry)::numeric,2) AS flae
- FROM ax_bauwerkimgewaesserbereich b2 LEFT JOIN ax_bauwerksfunktion_bauwerkimgewaesserbereich ug ON b2.bauwerksfunktion=ug.wert 
- WHERE b2.gml_id = $1 AND b2.endet IS NULL;";
-	$sqlk="SELECT b2.zustand, k2.beschreibung, k2.dokumentation
- FROM ax_bauwerkimgewaesserbereich b2 LEFT JOIN ax_zustand_bauwerkimgewaesserbereich k2 ON b2.zustand=k2.wert 
- WHERE b2.gml_id = $1 AND b2.endet IS NULL;";
-	$sqlz="SELECT b2.bezeichnung FROM ax_bauwerkimgewaesserbereich b2 WHERE b2.gml_id = $1 AND b2.endet IS NULL;";
-	$sqlr="SELECT b2.hatdirektunten FROM ax_bauwerkimgewaesserbereich b2 WHERE b2.gml_id = $1 AND b2.endet IS NULL;";
+	$sqlb="SELECT b2.bauwerksfunktion, ug.beschreibung, ug.dokumentation, b2.name, b2.statement, GeometryType(b2.wkb_geometry) as bgeotyp, round(st_area(b2.wkb_geometry)::numeric,2) AS flae"
+	.$FR."LEFT JOIN ax_bauwerksfunktion_bauwerkimgewaesserbereich ug ON b2.bauwerksfunktion=ug.wert".$WH;
+	$sqlk="SELECT b2.zustand, k2.beschreibung, k2.dokumentation".$FR."LEFT JOIN ax_zustand_bauwerkimgewaesserbereich k2 ON b2.zustand=k2.wert".$WH;
+	$sqlz="SELECT b2.bezeichnung".$FR.$WH;
+	$sqlr="SELECT b2.hatdirektunten".$FR.$WH;
 break;
 
 case $btyp_sonst:	// 3 - S o n s t i g e  Bauwerke
+	$FR=" FROM ax_sonstigesbauwerkodersonstigeeinrichtung b3 ";
 	$btyptitle='Sonstiges Bauwerk oder sonstige Einrichtung';
-	$sqlb="SELECT b3.bauwerksfunktion, k3.beschreibung, k3.dokumentation, b3.name, b3.statement,
- GeometryType(b3.wkb_geometry) as bgeotyp, round(st_area(b3.wkb_geometry)::numeric,2) AS flae
- FROM ax_sonstigesbauwerkodersonstigeeinrichtung b3 LEFT JOIN ax_bauwerksfunktion_sonstigesbauwerkodersonstigeeinrichtun k3 ON b3.bauwerksfunktion=k3.wert 
- WHERE b3.gml_id = $1 AND b3.endet IS NULL;";
-	$sqlk="SELECT b3.funktion, k3.beschreibung AS beschr, k3.dokumentation AS doku, b3.hydrologischesmerkmal, hm.beschreibung AS hmbeschr, hm.dokumentation AS hmdoku
- FROM ax_sonstigesbauwerkodersonstigeeinrichtung b3 
- LEFT JOIN ax_funktion_bauwerk k3 ON b3.funktion=k3.wert 
- LEFT JOIN ax_hydrologischesmerkmal_sonstigesbauwerkodersonstigeeinri hm ON b3.hydrologischesmerkmal=hm.wert 
- WHERE b3.gml_id = $1 AND b3.endet IS NULL;";
-	$sqlz="SELECT b3.bezeichnung, b3.objekthoehe FROM ax_sonstigesbauwerkodersonstigeeinrichtung b3 WHERE b3.gml_id = $1 AND b3.endet IS NULL;";
- 	$sqlr="SELECT b3.hatdirektunten, b3.gehoertzu FROM ax_sonstigesbauwerkodersonstigeeinrichtung b3 WHERE b3.gml_id = $1 AND b3.endet IS NULL;";
-	
-/*  gehoertzubauwerk_ax_sonstigesbauwerkodersonstigeeinrichtun 
-    gehoertzubauwerk_ax_bauwerkoderanlagefuersportfreizeitunde 
-    gehoertzubauwerk_ax_leitung 
-    gehoertzubauwerk_ax_bauwerkoderanlagefuerindustrieundgewer 
-    gehoertzubauwerk_ax_einrichtunginoeffentlichenbereichen 
-    gehoertzubauwerk_ax_heilquellegasquelle 
-    gehoertzubauwerk_ax_historischesbauwerkoderhistorischeeinr 
-    gehoertzubauwerk_ax_turm 
-    gehoertzubauwerk_ax_vorratsbehaelterspeicherbauwerk 
-    gehoertzubauwerk_ax_transportanlage 
-    gehoertzubauwerk_ax_wegpfadsteig 
-    gehoertzubauwerk_ax_gleis 
-    gehoertzubauwerk_ax_bahnverkehrsanlage 
-    gehoertzubauwerk_ax_bauwerkimgewaesserbereich 
-    gehoertzubauwerk_ax_strassenverkehrsanlage 
-    gehoertzubauwerk_ax_seilbahnschwebebahn 
-    gehoertzubauwerk_ax_einrichtungenfuerdenschiffsverkehr 
-    gehoertzubauwerk_ax_bauwerkimverkehrsbereich 
-    gehoertzubauwerk_ax_flugverkehrsanlage 
-    gehoertzubauwerk_ax_gewaesserstationierungsachse 
-    gehoertzubauwerk_ax_sickerstrecke 
-    gehoertzubauwerk_ax_schifffahrtsliniefaehrverkehr 
-    gehoertzubauwerk_ax_wasserspiegelhoehe 
-    gehoertzubauwerk_ax_abschnitt 
-    gehoertzubauwerk_ax_ast 
-    gehoertzubauwerk_ax_netzknoten 
-    gehoertzubauwerk_ax_nullpunkt 
-    gehoertzubauwerk_ax_hafen 
-    gehoertzubauwerk_ax_testgelaende 
-    gehoertzubauwerk_ax_schleuse 
-    gehoertzubauwerk_ax_ortslage 
-    gehoertzubauwerk_ax_grenzuebergang 
-    gehoertzubauwerk_ax_polder 
-    gehoertzubauwerk_ax_gewaessermerkmal 
-    gehoertzubauwerk_ax_untergeordnetesgewaesser 
-    gehoertzubauwerk_ax_vegetationsmerkmal */ 
+	$sqlb="SELECT b3.bauwerksfunktion, k3.beschreibung, k3.dokumentation, b3.name, b3.statement, GeometryType(b3.wkb_geometry) as bgeotyp, round(st_area(b3.wkb_geometry)::numeric,2) AS flae"
+	.$FR."LEFT JOIN ax_bauwerksfunktion_sonstigesbauwerkodersonstigeeinrichtun k3 ON b3.bauwerksfunktion=k3.wert".$WH;
+	$sqlk="SELECT b3.funktion, k3.beschreibung, k3.dokumentation, b3.hydrologischesmerkmal, hm.beschreibung AS hmbeschr, hm.dokumentation AS hmdoku"
+	.$FR."LEFT JOIN ax_funktion_bauwerk k3 ON b3.funktion=k3.wert "
+	." LEFT JOIN ax_hydrologischesmerkmal_sonstigesbauwerkodersonstigeeinri hm ON b3.hydrologischesmerkmal=hm.wert".$WH;
+	$sqlz="SELECT b3.bezeichnung, b3.objekthoehe".$FR.$WH;
+ 	$sqlr="SELECT b3.hatdirektunten, b3.gehoertzu".$FR.$WH;
 break;
 
 case $btyp_indu:	// 4 - Bauwerk oder Anlage fÃŒr  I n d u s t r i e  und Gewerbe
+	$FR=" FROM ax_bauwerkoderanlagefuerindustrieundgewerbe b4 ";
 	$btyptitle="Bauwerk oder Anlage fÃŒr Industrie und Gewerbe";
-	$sqlb="SELECT b4.bauwerksfunktion, k4.beschreibung, k4.dokumentation, b4.name, b4.statement, GeometryType(b4.wkb_geometry) as bgeotyp, round(st_area(b4.wkb_geometry)::numeric,2) AS flae
- FROM ax_bauwerkoderanlagefuerindustrieundgewerbe b4 LEFT JOIN ax_bauwerksfunktion_bauwerkoderanlagefuerindustrieundgewer k4 ON b4.bauwerksfunktion=k4.wert 
- WHERE b4.gml_id = $1 AND b4.endet IS NULL;";
-	$sqlk="SELECT b4.zustand, k4.beschreibung, k4.dokumentation
- FROM ax_bauwerkoderanlagefuerindustrieundgewerbe b4 LEFT JOIN ax_zustand_bauwerkoderanlagefuerindustrieundgewerbe k4 ON b4.zustand=k4.wert 
- WHERE b4.gml_id = $1 AND b4.endet IS NULL;";
-	$sqlz="SELECT b4.bezeichnung, b4.objekthoehe FROM ax_bauwerkoderanlagefuerindustrieundgewerbe b4 WHERE b4.gml_id = $1 AND b4.endet IS NULL;";
- 	$sqlr="SELECT b4.hatdirektunten FROM ax_bauwerkoderanlagefuerindustrieundgewerbe b4 WHERE b4.gml_id = $1 AND b4.endet IS NULL;";
+	$sqlb="SELECT b4.bauwerksfunktion, k4.beschreibung, k4.dokumentation, b4.name, b4.statement, GeometryType(b4.wkb_geometry) as bgeotyp, round(st_area(b4.wkb_geometry)::numeric,2) AS flae"
+	.$FR."LEFT JOIN ax_bauwerksfunktion_bauwerkoderanlagefuerindustrieundgewer k4 ON b4.bauwerksfunktion=k4.wert".$WH;
+	$sqlk="SELECT b4.zustand, k4.beschreibung, k4.dokumentation"
+	.$FR."LEFT JOIN ax_zustand_bauwerkoderanlagefuerindustrieundgewerbe k4 ON b4.zustand=k4.wert".$WH;
+	$sqlz="SELECT b4.bezeichnung, b4.objekthoehe".$FR.$WH;
+ 	$sqlr="SELECT b4.hatdirektunten".$FR.$WH;
 break;
 
 case $btyp_sport:	// 5 - Bauwerk oder Anlage fÃŒr  S p o r t , Freizeit und Erholung
+	$FR=" FROM ax_bauwerkoderanlagefuersportfreizeitunderholung b5 ";
 	$btyptitle="Bauwerk oder Anlage fÃŒr Sport, Freizeit und Erholung";
-	$sqlb="SELECT b5.bauwerksfunktion, k5.beschreibung, k5.dokumentation, b5.name, b5.statement, GeometryType(b5.wkb_geometry) as bgeotyp, round(st_area(b5.wkb_geometry)::numeric,2) AS flae
- FROM ax_bauwerkoderanlagefuersportfreizeitunderholung b5 LEFT JOIN ax_bauwerksfunktion_bauwerkoderanlagefuersportfreizeitunde k5 ON b5.bauwerksfunktion=k5.wert 
- WHERE b5.gml_id = $1 AND b5.endet IS NULL;";
-	$sqlk="SELECT b5.sportart, k5.beschreibung, k5.dokumentation
- FROM ax_bauwerkoderanlagefuersportfreizeitunderholung b5 LEFT JOIN ax_sportart_bauwerkoderanlagefuersportfreizeitunderholung k5 ON b5.sportart=k5.wert 
- WHERE b5.gml_id = $1 AND b5.endet IS NULL;";
-	$sqlz="SELECT b5.breitedesobjekts FROM ax_bauwerkoderanlagefuersportfreizeitunderholung b5 WHERE b5.gml_id = $1 AND b5.endet IS NULL;";
- 	$sqlr="SELECT b5.hatdirektunten FROM ax_bauwerkoderanlagefuersportfreizeitunderholung b5 WHERE b5.gml_id = $1 AND b5.endet IS NULL;";
+	$sqlb="SELECT b5.bauwerksfunktion, k5.beschreibung, k5.dokumentation, b5.name, b5.statement, GeometryType(b5.wkb_geometry) as bgeotyp, round(st_area(b5.wkb_geometry)::numeric,2) AS flae"
+	.$FR."LEFT JOIN ax_bauwerksfunktion_bauwerkoderanlagefuersportfreizeitunde k5 ON b5.bauwerksfunktion=k5.wert".$WH;
+	$sqlk="SELECT b5.sportart, k5.beschreibung, k5.dokumentation"
+	.$FR."LEFT JOIN ax_sportart_bauwerkoderanlagefuersportfreizeitunderholung k5 ON b5.sportart=k5.wert".$WH;
+	$sqlz="SELECT b5.breitedesobjekts".$FR.$WH;
+ 	$sqlr="SELECT b5.hatdirektunten".$FR.$WH;
 break;
 
 case $btyp_leitg:	// 6 - L e i t u n g
+	$FR=" FROM ax_leitung b6 ";
 	$btyptitle="Leitung";
-	$sqlb="SELECT b6.bauwerksfunktion, k6.beschreibung, k6.dokumentation, b6.name, b6.statement, GeometryType(b6.wkb_geometry) as bgeotyp, round(st_area(b6.wkb_geometry)::numeric,2) AS flae
- FROM ax_leitung b6 LEFT JOIN ax_bauwerksfunktion_leitung k6 ON b6.bauwerksfunktion=k6.wert 
- WHERE b6.gml_id = $1 AND b6.endet IS NULL;";	
+	$sqlb="SELECT b6.bauwerksfunktion, k6.beschreibung, k6.dokumentation, b6.name, b6.statement, GeometryType(b6.wkb_geometry) as bgeotyp, round(st_area(b6.wkb_geometry)::numeric,2) AS flae"
+	.$FR."LEFT JOIN ax_bauwerksfunktion_leitung k6 ON b6.bauwerksfunktion=k6.wert".$WH;	
 	$sqlk="";
-	$sqlz="SELECT b6.spannungsebene FROM ax_leitung b6 WHERE b6.gml_id = $1 AND b6.endet IS NULL;";
- 	$sqlr="SELECT b6.hatdirektunten FROM ax_leitung b6 WHERE b6.gml_id = $1 AND b6.endet IS NULL;";
+	$sqlz="SELECT b6.spannungsebene".$FR.$WH;
+ 	$sqlr="SELECT b6.hatdirektunten".$FR.$WH;
 break;
 
 case $btyp_trans:	// 7 - T r a n s p o r t a n l a g e
+	$FR=" FROM ax_transportanlage b7 ";
 	$btyptitle="Transportanlage";
-	$sqlb="SELECT b7.bauwerksfunktion, k7.beschreibung, k7.dokumentation, NULL AS name, b7.statement, GeometryType(b7.wkb_geometry) as bgeotyp, round(st_area(b7.wkb_geometry)::numeric,2) AS flae
- FROM ax_transportanlage b7 LEFT JOIN ax_bauwerksfunktion_transportanlage k7 ON b7.bauwerksfunktion=k7.wert 
- WHERE b7.gml_id = $1 AND b7.endet IS NULL;";
-	$sqlk="SELECT b7.lagezurerdoberflaeche, k7.beschreibung, k7.dokumentation
- FROM ax_transportanlage b7 LEFT JOIN ax_lagezurerdoberflaeche_transportanlage k7 ON b7.lagezurerdoberflaeche=k7.wert 
- WHERE b7.gml_id = $1 AND b7.endet IS NULL;";
-	$sqlz="SELECT b7.produkt FROM ax_transportanlage b7 WHERE b7.gml_id = $7 AND b7.endet IS NULL;";
- 	$sqlr="SELECT b7.hatdirektunten FROM ax_transportanlage b7 WHERE b7.gml_id = $1 AND b7.endet IS NULL;";
+	$sqlb="SELECT b7.bauwerksfunktion, k7.beschreibung, k7.dokumentation, b7.statement, GeometryType(b7.wkb_geometry) as bgeotyp, round(st_area(b7.wkb_geometry)::numeric,2) AS flae"
+	.$FR."LEFT JOIN ax_bauwerksfunktion_transportanlage k7 ON b7.bauwerksfunktion=k7.wert".$WH;
+	$sqlk="SELECT b7.lagezurerdoberflaeche, k7.beschreibung, k7.dokumentation"
+	.$FR."LEFT JOIN ax_lagezurerdoberflaeche_transportanlage k7 ON b7.lagezurerdoberflaeche=k7.wert".$WH;
+	$sqlz="SELECT b7.produkt".$FR.$WH;
+ 	$sqlr="SELECT b7.hatdirektunten".$FR.$WH;
 break;
 
 case $btyp_turm:	// 8 - T u r m  (Sonderfall Array)
+	$FR=" FROM ax_turm b8 ";
 	$btyptitle="Turm";
-	$sqlb="SELECT k8.wert AS bauwerksfunktion, k8.beschreibung, k8.dokumentation, b8.name, b8.statement, GeometryType(b8.wkb_geometry) as bgeotyp, round(st_area(b8.wkb_geometry)::numeric,2) AS flae
- FROM ax_turm b8 LEFT JOIN ax_bauwerksfunktion_turm k8 ON k8.wert =ANY(b8.bauwerksfunktion)
- WHERE b8.gml_id = $1 AND b8.endet IS NULL;";
-	$sqlk="SELECT b8.zustand, k8.beschreibung, k8.dokumentation
- FROM ax_turm b8 LEFT JOIN ax_zustand_turm k8 ON b8.zustand=k8.wert 
- WHERE b8.gml_id = $1 AND b8.endet IS NULL;";
-	$sqlz="SELECT b8.objekthoehe FROM ax_turm b8 WHERE b8.gml_id = $1 AND b8.endet IS NULL;";
- 	$sqlr="SELECT b8.hatdirektunten, b8.zeigtauf FROM ax_turm b8 WHERE b8.gml_id = $1 AND b8.endet IS NULL;";
+	$sqlb="SELECT k8.wert AS bauwerksfunktion, k8.beschreibung, k8.dokumentation, b8.name, b8.statement, GeometryType(b8.wkb_geometry) as bgeotyp, round(st_area(b8.wkb_geometry)::numeric,2) AS flae"
+	.$FR."LEFT JOIN ax_bauwerksfunktion_turm k8 ON k8.wert =ANY(b8.bauwerksfunktion)".$WH;
+	$sqlk="SELECT b8.zustand, k8.beschreibung, k8.dokumentation"
+	.$FR."LEFT JOIN ax_zustand_turm k8 ON b8.zustand=k8.wert".$WH;
+	$sqlz="SELECT b8.objekthoehe".$FR.$WH;
+ 	$sqlr="SELECT b8.hatdirektunten, b8.zeigtauf".$FR.$WH;
 break;
 
 case $btyp_vorrat:	// 9 -  V o r r a t s b e h Ã€ l t e r ,  S p e i c h e r b a u w e r k
+	$FR=" FROM ax_vorratsbehaelterspeicherbauwerk b9 ";
 	$btyptitle="VorratsbehÃ€lter, Speicherbauwerk";
-	$sqlb="SELECT b9.bauwerksfunktion, k9.beschreibung, k9.dokumentation, b9.name, b9.statement, GeometryType(b9.wkb_geometry) as bgeotyp, round(st_area(b9.wkb_geometry)::numeric,2) AS flae
- FROM ax_vorratsbehaelterspeicherbauwerk b9 LEFT JOIN ax_bauwerksfunktion_vorratsbehaelterspeicherbauwerk k9 ON b9.bauwerksfunktion=k9.wert 
- WHERE b9.gml_id = $1 AND b9.endet IS NULL;";
+	$sqlb="SELECT b9.bauwerksfunktion, k9.beschreibung, k9.dokumentation, b9.name, b9.statement, GeometryType(b9.wkb_geometry) as bgeotyp, round(st_area(b9.wkb_geometry)::numeric,2) AS flae"
+	.$FR."LEFT JOIN ax_bauwerksfunktion_vorratsbehaelterspeicherbauwerk k9 ON b9.bauwerksfunktion=k9.wert".$WH;
 	$sqlk="SELECT b9.lagezurerdoberflaeche, k9.beschreibung, k9.dokumentation, 
-	 b9.speicherinhalt, sp9.beschreibung AS spbes, sp9.dokumentation AS spdok
- FROM ax_vorratsbehaelterspeicherbauwerk b9 
- LEFT JOIN ax_lagezurerdoberflaeche_vorratsbehaelterspeicherbauwerk k9 ON b9.lagezurerdoberflaeche=k9.wert 
- LEFT JOIN ax_speicherinhalt_vorratsbehaelterspeicherbauwerk sp9 ON b9.speicherinhalt=sp9.wert 
- WHERE b9.gml_id = $1 AND b9.endet IS NULL;";
-	$sqlz="SELECT b9.objekthoehe FROM ax_vorratsbehaelterspeicherbauwerk b9 WHERE b9.gml_id = $1 AND b9.endet IS NULL;";
- 	$sqlr="SELECT b9.hatdirektunten FROM ax_vorratsbehaelterspeicherbauwerk b9 WHERE b9.gml_id = $1 AND b9.endet IS NULL;";
-break;
+	 b9.speicherinhalt, sp9.beschreibung AS spbes, sp9.dokumentation AS spdok"
+	.$FR."LEFT JOIN ax_lagezurerdoberflaeche_vorratsbehaelterspeicherbauwerk k9 ON b9.lagezurerdoberflaeche=k9.wert 
+ LEFT JOIN ax_speicherinhalt_vorratsbehaelterspeicherbauwerk sp9 ON b9.speicherinhalt=sp9.wert".$WH;
+	$sqlz="SELECT b9.objekthoehe".$FR.$WH;
+ 	$sqlr="SELECT b9.hatdirektunten".$FR.$WH;
+break;
+
+case $btyp_hist: // 10 - H i s t o r i s c h e s  Bauwerk oder historische Einrichtung
+	$FR=" FROM ax_historischesbauwerkoderhistorischeeinrichtung b10 ";
+	$btyptitle="Historisches Bauwerk oder historische Einrichtung";
+	$sqlb="SELECT b10.name, b10.statement, GeometryType(b10.wkb_geometry) as bgeotyp, round(st_area(b10.wkb_geometry)::numeric,2) AS flae".$FR.$WH;
+	$sqlk="SELECT b10.archaeologischertyp, k10.beschreibung, k10.dokumentation"
+	.$FR."LEFT JOIN ax_archaeologischertyp_historischesbauwerkoderhistorischee k10 ON b10.archaeologischertyp=k10.wert".$WH;
+	$sqlz="";
+ 	$sqlr="SELECT b10.hatdirektunten".$FR.$WH;
+break;
+
+case $btyp_heil: // 11 - H e i l q u e l l e ,  G a s q u e l l e
+	$FR=" FROM ax_heilquellegasquelle b11 ";
+	$btyptitle="Heilquelle, Gasquelle";
+	$sqlb="SELECT b11.name, b11.statement, GeometryType(b11.wkb_geometry) as bgeotyp, round(st_area(b11.wkb_geometry)::numeric,2) AS flae".$FR.$WH;
+	$sqlk="SELECT b11.art, k11.beschreibung, k11.dokumentation, "
+	."b11.hydrologischesmerkmal, hm.beschreibung AS hmbes, hm.dokumentation AS hmdok".$FR
+	."LEFT JOIN ax_art_heilquellegasquelle k11 ON b11.art=k11.wert "
+	."LEFT JOIN ax_hydrologischesmerkmal_heilquellegasquelle hm ON b11.hydrologischesmerkmal=hm.wert".$WH;
+	$sqlz="";
+ 	$sqlr="SELECT b11.hatdirektunten ".$FR.$WH;
+break;
+
+case $btyp_oeff: // 12 - Einrichtung in  Ã¶ f f e n t l i c h e n  Bereichen
+	$FR=" FROM ax_einrichtunginoeffentlichenbereichen b12 ";
+	$btyptitle="Einrichtung in &ouml;ffentlichen Bereichen";
+	$sqlb="SELECT b12.statement, GeometryType(b12.wkb_geometry) as bgeotyp, round(st_area(b12.wkb_geometry)::numeric,2) AS flae".$FR.$WH;
+	$sqlk="SELECT b12.art, k12.beschreibung, k12.dokumentation".$FR
+	."LEFT JOIN ax_art_einrichtunginoeffentlichenbereichen k12 ON b12.art=k12.wert".$WH;
+	$sqlz="SELECT b12.kilometerangabe".$FR.$WH;
+ 	$sqlr="SELECT b12.hatdirektunten ".$FR.$WH;
+break;
+/*
+case $btyp_bpkt: // 13 - Besonderer Bauwerkspunkt (ohne Geom.)
+	$FR=" FROM ax_besondererbauwerkspunkt b13 ";
+	$btyptitle="Besonderer Bauwerkspunkt";
+//  punktkennung, sonstigeeigenschaft, zustaendigestelle_land, zustaendigestelle_stelle
+break; */
 
 default:
-	die('<p class="stop1">Fehler showkey</p></body>');
-break;
-}
-
-// 1. sqlb: Standard-Spalten, die bei jedem Typ vorhanden sind
+	die('<p class="stop1">Falscher Bauwerkstyp.</p></body>');
+break;
+}
+
+// 1. sqlb: Standard-Spalten, die bei (fast) jedem Typ vorhanden sind
 $v=array($gmlid);
 $resb=pg_prepare("", $sqlb);
@@ -423,14 +411,13 @@
 	} else { // Treffer
 		// Seitenkopf
-		echo "<p class='balken bauwerk".$btyp."'>ALKIS Bauwerk ".$btyp." - ".$gmlid."&nbsp;</p>"; // Balken, Farbe wie WMS
-		echo "\n<h2>".$btyptitle."</h2>";
-		echo "\n<p class='nwlink noprint'>"; // Umschalter: auch leere Felder
-		echo "Umschalten: <a class='nwlink' href='".selbstverlinkung()."?gkz=".$gkz."&amp;btyp=".$btyp."&amp;gmlid=".$gmlid;
-			if ($showkey) {echo "&amp;showkey=j";} else {echo "&amp;showkey=n";}
-			if ($allefelder) {
-				echo "&amp;allfld=n'>nur Felder mit Inhalt";
-			} else {
-				echo "&amp;allfld=j'>auch leere Felder";
-			}
+		echo "<p class='balken bauwerk".$btyp."'>ALKIS Bauwerk ".$btyp." - ".$gmlid."&nbsp;</p>" // Balken, Farbe wie WMS
+		."\n<h2>".$btyptitle."</h2>"
+		."\n<p class='nwlink noprint'>" // Umschalter: auch leere Felder
+		."Umschalten: <a class='nwlink' href='".selbstverlinkung()."?gkz=".$gkz."&amp;btyp=".$btyp."&amp;gmlid=".$gmlid.LnkStf();
+		if ($allefelder) {
+			echo "&amp;allfld=n'>nur Felder mit Inhalt";
+		} else {
+			echo "&amp;allfld=j'>auch leere Felder";
+		}
 		echo "</a></p>";
 
@@ -445,30 +432,38 @@
 		."\n</tr>";
 
-		tab_zeile('Bauwerksfunktion', $rowb["bauwerksfunktion"], htmlentities($rowb["beschreibung"], ENT_QUOTES, "UTF-8"), '', htmlentities($rowb["dokumentation"], ENT_QUOTES, "UTF-8"));
-		tab_zeile('Name',        '', htmlentities($rowb["name"], ENT_QUOTES, "UTF-8"), '', '');
-		tab_zeile('Statement',   '', htmlentities($rowb["statement"], ENT_QUOTES, "UTF-8"), '', '');
+		if (isset($rowb["bauwerksfunktion"])) { // nicht immer vorhanden
+			tab_zeile('Bauwerksfunktion', $rowb["bauwerksfunktion"], htmlentities($rowb["beschreibung"], ENT_QUOTES, "UTF-8"), '', htmlentities($rowb["dokumentation"], ENT_QUOTES, "UTF-8"));
+		}
+
+		if (isset($rowb["name"])) {
+			tab_zeile('Name', '', htmlentities($rowb["name"], ENT_QUOTES, "UTF-8"), '', '');
+		}
+
+		tab_zeile('Statement', '', htmlentities($rowb["statement"], ENT_QUOTES, "UTF-8"), '', '');
 
 		// G e o m e t r i e  und FlÃ€che
-		$geotyp=$rowb["bgeotyp"];
-		switch ($geotyp) {
-			case "POINT":
-				$geodeutsch=$geotyp." bedeutet 'Punkt', einzelne Koordinate.";
-			break;
-			case "LINESTRING":
-				$geodeutsch=$geotyp." bedeutet 'Linie'.";
-			break;
-			case "POLYGON":
-				$geodeutsch=$geotyp." bedeutet eine einzelne 'Fl&auml;che'.";
-			break;
-			case "MULTIPOLYGON":
-				$geodeutsch=$geotyp." bedeutet eine 'Fl&auml;che', die aus mehreren Teilen bestehen kann oder die Aussparungen haben kann.";	
-			break;
-			default: $geodeutsch="";
-		}
-		tab_zeile('Geometrietyp', '', $geotyp, '', $geodeutsch);
-
-		if ($geotyp == "POLYGON" or $geotyp == "MULTIPOLYGON") {
-			$flaeche=$rowb["flae"]." m&#178;";
-			tab_zeile('Fl&auml;che', '', $flaeche, '', "Die 'Fl&auml;che' des Bauwerks wird aus der Geometrie berechnet, aber nur bei POLYGON.");
+		if (isset($rowb["bgeotyp"])) {
+			$geotyp=$rowb["bgeotyp"];
+			switch ($geotyp) {
+				case "POINT":
+					$geodeutsch=$geotyp." bedeutet 'Punkt', einzelne Koordinate.";
+				break;
+				case "LINESTRING":
+					$geodeutsch=$geotyp." bedeutet 'Linie'.";
+				break;
+				case "POLYGON":
+					$geodeutsch=$geotyp." bedeutet eine einzelne 'Fl&auml;che'.";
+				break;
+				case "MULTIPOLYGON":
+					$geodeutsch=$geotyp." bedeutet eine 'Fl&auml;che', die aus mehreren Teilen bestehen kann oder die Aussparungen haben kann.";	
+				break;
+				default: $geodeutsch="";
+			}
+			tab_zeile('Geometrietyp', '', $geotyp, '', $geodeutsch);
+
+			if ($geotyp == "POLYGON" or $geotyp == "MULTIPOLYGON") {
+				$flaeche=$rowb["flae"]." m&#178;";
+				tab_zeile('Fl&auml;che', '', $flaeche, '', "Die 'Fl&auml;che' des Bauwerks wird aus der Geometrie berechnet, aber nur bei POLYGON.");
+			}
 		}
 	}
@@ -476,5 +471,5 @@
 }
 
-// 2. sqlk:  Z u s Ã€ t z l i c h e   K e y - V a l u e - B e z i e h u n g e n
+// 2. sqlk:  ZusÃ€tzliche Key-Value-Beziehungen
 // Andere Art der Darstellung als die schlichten Zusatzfelder, Key optional anzeigen, ErklÃ€rung zum Wert aus SchlÃŒsseltabelle
 if ($sqlk != '') {
@@ -500,31 +495,44 @@
 		} else {
 		// Treffer
+			$bes=htmlentities($rowk["beschreibung"], ENT_QUOTES, "UTF-8");
+			$dok=htmlentities($rowk["dokumentation"], ENT_QUOTES, "UTF-8");
 			switch ($btyp) {  // individuell je Typ
 			case $btyp_verkehr: // 1
-				tab_zeile('Zustand', $rowk["zustand"], htmlentities($rowk["beschreibung"], ENT_QUOTES, "UTF-8"), '', htmlentities($rowk["dokumentation"], ENT_QUOTES, "UTF-8"));
+				tab_zeile('Zustand', $rowk["zustand"], $bes, '', $dok);
 			break;
 			case $btyp_gewaesser: // 2
-				tab_zeile('Zustand', $rowk["zustand"], htmlentities($rowk["beschreibung"], ENT_QUOTES, "UTF-8"), '', htmlentities($rowk["dokumentation"], ENT_QUOTES, "UTF-8"));
+				tab_zeile('Zustand', $rowk["zustand"], $bes, '', $dok);
 			break;
 			case $btyp_sonst: // 3
-				tab_zeile('Funktion', $rowk["funktion"], htmlentities($rowk["beschr"], ENT_QUOTES, "UTF-8"), '', htmlentities($rowk["doku"], ENT_QUOTES, "UTF-8"));
+				tab_zeile('Funktion', $rowk["funktion"], $bes, '', $dok);
 				tab_zeile('Hydrologisches Merkmal', $rowk["hydrologischesmerkmal"], htmlentities($rowk["hmbeschr"], ENT_QUOTES, "UTF-8"), '', htmlentities($rowk["hmdoku"], ENT_QUOTES, "UTF-8"));
 			break;
 			case $btyp_indu: // 4
-				tab_zeile('Zustand', $rowk["zustand"], htmlentities($rowk["beschreibung"], ENT_QUOTES, "UTF-8"), '', htmlentities($rowk["dokumentation"], ENT_QUOTES, "UTF-8"));
+				tab_zeile('Zustand', $rowk["zustand"], $bes, '', $dok);
 			break;
 			case $btyp_sport: // 5
-				tab_zeile('Sportart', $rowk["sportart"], htmlentities($rowk["beschreibung"], ENT_QUOTES, "UTF-8"), '', htmlentities($rowk["dokumentation"], ENT_QUOTES, "UTF-8"));
+				tab_zeile('Sportart', $rowk["sportart"], $bes, '', $dok);
 			break;
 			case $btyp_trans: // 7
-				tab_zeile('Lage zur Erdoberfl&auml;che', $rowk["lagezurerdoberflaeche"], htmlentities($rowk["beschreibung"], ENT_QUOTES, "UTF-8"), '', htmlentities($rowk["dokumentation"], ENT_QUOTES, "UTF-8"));
+				tab_zeile('Lage zur Erdoberfl&auml;che', $rowk["lagezurerdoberflaeche"], $bes, '', $dok);
 			break;
 			case $btyp_turm: // 8
-				tab_zeile('Zustand', $rowk["zustand"], htmlentities($rowk["beschreibung"], ENT_QUOTES, "UTF-8"), '', htmlentities($rowk["dokumentation"], ENT_QUOTES, "UTF-8"));
+				tab_zeile('Zustand', $rowk["zustand"], $bes, '', $dok);
 			break;
 			case $btyp_vorrat: // 9
-				tab_zeile('Lage zur Erdoberfl&auml;che', $rowk["lagezurerdoberflaeche"], htmlentities($rowk["beschreibung"], ENT_QUOTES, "UTF-8"), '', htmlentities($rowk["dokumentation"], ENT_QUOTES, "UTF-8"));
+				tab_zeile('Lage zur Erdoberfl&auml;che', $rowk["lagezurerdoberflaeche"], $bes, '', $dok);
 				tab_zeile('Speicherinhalt', $rowk["speicherinhalt"], htmlentities($rowk["spbes"], ENT_QUOTES, "UTF-8"), '', htmlentities($rowk["spdok"], ENT_QUOTES, "UTF-8"));
-			break;
+			case $btyp_hist: // 10
+				tab_zeile('Arch&auml;ologischer Typ', $rowk["archaeologischertyp"], $bes, '', $dok);
+			break;
+			case $btyp_heil: // 11
+				tab_zeile('Art', $rowk["art"], $bes, '', $dok);
+				tab_zeile('Hydrologisches Merkmal', $rowk["hydrologischesmerkmal"], htmlentities($rowk["hmbes"], ENT_QUOTES, "UTF-8"), '', htmlentities($rowk["hmdok"], ENT_QUOTES, "UTF-8"));
+			break;
+			case $btyp_oeff: // 12
+				tab_zeile('Art', $rowk["art"], $bes, '', $dok);
+			break;
+//			case $btyp_bpkt: // 13
+//			break;
 			}
 		}
