Index: trunk/info/info/alkisn/alkisgebaeudenw.php
===================================================================
--- trunk/info/info/alkisn/alkisgebaeudenw.php	(revision 427)
+++ trunk/info/info/alkisn/alkisgebaeudenw.php	(revision 430)
@@ -18,4 +18,5 @@
 	2022-01-13 Neue Functions LnkStf(), DsKy()
 	2022-02-17 Neue Bauwerks-Typen
+	2022-07-05 PHP 8.1: Connection verwenden bei "pg_prepare" und "pg_execute", keine NULL-Werte in String-Functions verwenden
 */
 
@@ -108,6 +109,6 @@
 ."WHERE f.gml_id= $1 AND f.endet IS NULL AND g.endet IS NULL;";
 $v=array($gmlid);
-$resf=pg_prepare("", $sqlf);
-$resf=pg_execute("", $v);
+$resf=pg_prepare($con, "", $sqlf);
+$resf=pg_execute($con, "", $v);
 if (!$resf) {
 	echo "\n<p class='err'>Fehler bei Flurst&uuml;cksdaten.</p>";
@@ -169,5 +170,5 @@
 
 // GebÃ€ude
-$sqlg ="SELECT g.gml_id, g.name, g.bauweise, g.gebaeudefunktion, h.beschreibung AS bauweise_beschreibung, u.beschreibung AS bezeichner, u.dokumentation AS gfktd, g.zustand, z.beschreibung AS bzustand, 
+$sqlg ="SELECT g.gml_id, g.name, g.bauweise, g.gebaeudefunktion, coalesce(h.beschreibung, '') AS bauweise_beschreibung, u.beschreibung AS bezeichner, u.dokumentation AS gfktd, g.zustand, coalesce(z.beschreibung, '') AS bzustand, 
 round(st_area(g.wkb_geometry)::numeric,2) AS gebflae, "; // GEB-FlÃ€che, auch ausserhalb des FS
 $sqlg.="round(st_area(ST_Intersection(g.wkb_geometry,f.wkb_geometry))::numeric,2) AS schnittflae, "; // wie viel vom GEB liegt im FS?
@@ -186,6 +187,6 @@
 
 $v=array($gmlid);
-$resg=pg_prepare("", $sqlg);
-$resg=pg_execute("", $v);
+$resg=pg_prepare($con, "", $sqlg);
+$resg=pg_execute($con, "", $v);
 if (!$resg) {
 	echo "\n<p class='err'>Fehler bei Geb&auml;ude-Verschneidung.</p>";
@@ -200,5 +201,9 @@
 	$ggml=$rowg["gml_id"];
 	$gebflsum=$gebflsum + $rowg["schnittflae"];
-	$gnam=trim(trim($rowg["name"], "{}"), '"'); // GebÃ€ude-Name ist ein Array in der DB: '{"A","B"}'
+	if (is_null($rowg["name"])) {
+		$gnam="";
+	} else {
+		$gnam=trim(trim($rowg["name"], "{}"), '"'); // GebÃ€ude-Name ist ein Array in der DB: '{"A","B"}'
+	}
 	// Mehrfachbelegung nur theoretisch. Entklammern reicht. Mal mit und mal ohne "" drum!?
 	$gfktk=htmlentities($rowg["gebaeudefunktion"], ENT_QUOTES, "UTF-8");  // Geb.-Funktion Key
@@ -263,6 +268,6 @@
 		$sqll.="ORDER BY bezeichnung, hausnummer, laufendenummer;";
 		$v = array($ggml);
-		$resl = pg_prepare("", $sqll);
-		$resl = pg_execute("", $v);
+		$resl = pg_prepare($con, "", $sqll);
+		$resl = pg_execute($con, "", $v);
 		if (!$resl) {
 			echo "\n<p class='err'>Fehler bei Lage mit HsNr.</p>";
@@ -439,142 +444,150 @@
 
 $v=array($gmlid);
-$resb=pg_prepare("", $sqlb);
-$resb=pg_execute("", $v);
+$resb=pg_prepare($con, "", $sqlb);
+$resb=pg_execute($con, "", $v);
+
+$baunr=0; // ZÃ€hler
+$bauflsum=0; // FlÃ€chensumme
+$gwbwtyp=0; // Gruppen-Wechsel Bauwerks-Typ
+
 if (!$resb) {
 	echo "\n<p class='err'>Fehler bei Bauwerke-Verschneidung.</p>";
 	if ($dbg > 2) {echo "\n<p class='err'>SQL=<br>".str_replace("$1","'".$gmlid."'",$sqlb)."</p>";}
 	if ($dbg > 1) {echo "<p class='dbg'>Fehler:".pg_result_error($resb)."</p>";}
-}
-$baunr=0; // ZÃ€hler
-$bauflsum=0; // FlÃ€chensumme
-$gwbwtyp=0; // Gruppen-Wechsel Bauwerks-Typ
-
-while($rowb = pg_fetch_assoc($resb)) {
-	$baunr++;
-	$btyp=$rowb["bwtyp"]; // Tabelle
-	$bgml=$rowb["gml_id"];
-	$bauflsum=$bauflsum + $rowb["schnittflae"];
-	$bbez=htmlentities($rowb["bezeichnung"], ENT_QUOTES, "UTF-8");
-
-	$bfktk=htmlentities($rowb["bauwerksfunktion"], ENT_QUOTES, "UTF-8");
-	$bfktv=htmlentities($rowb["beschreibung"], ENT_QUOTES, "UTF-8");
-	$bfktd=htmlentities($rowb["dokumentation"], ENT_QUOTES, "UTF-8"); 
-
-	$bnam=htmlentities($rowb["name"], ENT_QUOTES, "UTF-8");
-	$bgeb=$rowb["gehoertzu"];
-	$drin=$rowb["drin"];
-	$bgeotyp=$rowb["bgeotyp"];
-
-	// Lage des Bauwerks zum FlurstÃŒck
-	if ($bgeotyp === "LINESTRING") {
-		if ($drin === "t") {
-			$bstyle="gin";
+} else {
+	while($rowb = pg_fetch_assoc($resb)) {
+		$baunr++;
+		$btyp=$rowb["bwtyp"]; // Tabelle
+		$bgml=$rowb["gml_id"];
+		$bauflsum=$bauflsum + $rowb["schnittflae"];
+		if (is_null($rowb["bezeichnung"])) {
+			$bbez="";
 		} else {
-			$bstyle="gtl";
-		}
-		$f1="&nbsp;";
-		$f2="Linie";
-	} elseif ($bgeotyp === "POINT") {
-		if ($drin === "t") {
-			$bstyle="gin";
+			$bbez=htmlentities($rowb["bezeichnung"], ENT_QUOTES, "UTF-8");
+		}
+		$bfktk=htmlentities($rowb["bauwerksfunktion"], ENT_QUOTES, "UTF-8");
+		$bfktv=htmlentities($rowb["beschreibung"], ENT_QUOTES, "UTF-8");
+		$bfktd=htmlentities($rowb["dokumentation"], ENT_QUOTES, "UTF-8"); 
+		if (is_null($rowb["name"])) {
+			$bnam="";
 		} else {
-			$bstyle="gtl";
-		}
-		$f1="&nbsp;";
-		$f2="Punkt";		
-	} else { // FlÃ€che / Multi-
-		if ($drin === "t") { // komplett IM FlurstÃŒck
-			$f1=$rowb["schnittflae"]." m&#178;";
-			$f2="&nbsp;";
-			$bstyle="gin"; // siehe .css
-		} else {
-			if ($rowb["schnittflae"] === "0.00") { // nur angrenzend
-				$bstyle="gan";
-				$f1="&nbsp;";
-				$f2="angrenzend";
-			} else { // Teile auf FlurstÃŒck
+			$bnam=htmlentities($rowb["name"], ENT_QUOTES, "UTF-8");
+		}
+		$bgeb=$rowb["gehoertzu"];
+		$drin=$rowb["drin"];
+		$bgeotyp=$rowb["bgeotyp"];
+
+		// Lage des Bauwerks zum FlurstÃŒck
+		if ($bgeotyp === "LINESTRING") {
+			if ($drin === "t") {
+				$bstyle="gin";
+			} else {
 				$bstyle="gtl";
+			}
+			$f1="&nbsp;";
+			$f2="Linie";
+		} elseif ($bgeotyp === "POINT") {
+			if ($drin === "t") {
+				$bstyle="gin";
+			} else {
+				$bstyle="gtl";
+			}
+			$f1="&nbsp;";
+			$f2="Punkt";		
+		} else { // FlÃ€che / Multi-
+			if ($drin === "t") { // komplett IM FlurstÃŒck
 				$f1=$rowb["schnittflae"]." m&#178;";
-				$f2="(von ".$rowb["gebflae"]." m&#178;)";
+				$f2="&nbsp;";
+				$bstyle="gin"; // siehe .css
+			} else {
+				if ($rowb["schnittflae"] === "0.00") { // nur angrenzend
+					$bstyle="gan";
+					$f1="&nbsp;";
+					$f2="angrenzend";
+				} else { // Teile auf FlurstÃŒck
+					$bstyle="gtl";
+					$f1=$rowb["schnittflae"]." m&#178;";
+					$f2="(von ".$rowb["gebflae"]." m&#178;)";
+				}
+			}	
+		}
+
+		// Gruppenwechsel Bauwerks-Typ (Quell-Tabelle) - Zwischen-Ãberschrift
+		If ($btyp != $gwbwtyp) {
+			$gwbwtyp = $btyp;
+			if ($baunr === 1) {bauw_tab_head();} // Tab.-Kopf
+			switch ($btyp) {
+				case $btyp_verkehr:
+					$btyptitle='Bauwerk im Verkehrsbereich'; break;
+				case $btyp_gewaesser:
+					$btyptitle='Bauwerk im Gew&auml;sserbereich'; break;
+				case $btyp_sonst: 
+					$btyptitle='Sonstiges Bauwerk oder sonstige Einrichtung'; break;
+				case $btyp_indu:
+					$btyptitle="Bauwerk oder Anlage f&uuml;r Industrie und Gewerbe"; break;
+				case $btyp_sport:
+					$btyptitle="Bauwerk oder Anlage f&uuml;r Sport, Freizeit und Erholung"; break;
+				case $btyp_leitg:
+					$btyptitle="Leitung"; break;
+				case $btyp_trans:
+					$btyptitle="Transportanlage"; break;
+				case $btyp_turm:
+					$btyptitle="Turm"; break;
+				case $btyp_vorrat:
+					$btyptitle="Vorratsbeh&auml;lter, Speicherbauwerk"; break;
+				case $btyp_hist:
+					$btyptitle="Historisches Bauwerk oder historische Einrichtung"; break;
+				case $btyp_heil:
+					$btyptitle="Heilquelle, Gasquelle"; break;
+				case $btyp_oeff:
+					$btyptitle="Einrichtung in &ouml;ffentlichen Bereichen"; break;
+				case $btyp_bpkt:
+					$btyptitle="Besonderer Bauwerkspunkt"; break;
+				default:
+					$btyptitle='Fehler!'; break;
 			}
-		}	
+			echo "<tr><td colspan=3></td><td colspan=2 class='gw'>".$btyptitle."</td></tr>"; // ++ Symbol?
+		}
+
+		echo "\n<tr>";
+			echo "\n\t<td>";
+			if ($bbez != "") {echo "<span title='Bezeichnung'>".$bbez."</span> ";}
+			if ($bnam != "") {echo "<span title='Name'>".$bnam."</span> ";}
+			echo "</td>";
+			echo "\n\t<td class='fla'>".$f1."</td>"
+			."\n\t<td class='".$bstyle."'>".$f2."</td>"; // FlÃ€chenangaben
+			echo "\n\t<td>".DsKy($bfktk, 'Bauwerksfunktion-*')."<span title='".$bfktd ."'>".$bfktv."</span></td>";
+
+			// Lage / Haus (nur bei Typ 3 sonstige)
+			echo "\n\t<td class='nwlink noprint'>"; // Link
+			if ($bgeb != "") { // gehÃ¶rt zu GebÃ€ude
+			//	bw_gz_lage($bgeb); // Function: Lage (Adresse) ausgeben
+				echo "\n\t\t<a title='gehÃ¶rt zu' href='alkishaus.php?gkz=".$gkz."&amp;gmlid=".$bgeb.LnkStf()
+				."'>Haus&nbsp;<img src='ico/Haus.png' width='16' height='16' alt=''></a>";
+			}
+			echo "\n\t</td>";
+
+			// Bauwerk Details
+			echo "\n\t<td class='nwlink noprint'>" // Link
+			."\n\t\t<a title='Bauwerksdaten' href='alkisbauwerk.php?gkz=".$gkz."&amp;btyp=".$btyp."&amp;gmlid=".$bgml.LnkStf()
+			."'>Bauwerk&nbsp;<img src='ico/Haus.png' width='16' height='16' alt=''></a>" // Icon fÃŒr Bauwerk schaffen
+			."\n\t</td>"
+		."\n</tr>";
 	}
 
-	// Gruppenwechsel Bauwerks-Typ (Quell-Tabelle) - Zwischen-Ãberschrift
-	If ($btyp != $gwbwtyp) {
-		$gwbwtyp = $btyp;
-		if ($baunr === 1) {bauw_tab_head();} // Tab.-Kopf
-		switch ($btyp) {
-			case $btyp_verkehr:
-				$btyptitle='Bauwerk im Verkehrsbereich'; break;
-			case $btyp_gewaesser:
-				$btyptitle='Bauwerk im Gew&auml;sserbereich'; break;
-			case $btyp_sonst: 
-				$btyptitle='Sonstiges Bauwerk oder sonstige Einrichtung'; break;
-			case $btyp_indu:
-				$btyptitle="Bauwerk oder Anlage f&uuml;r Industrie und Gewerbe"; break;
-			case $btyp_sport:
-				$btyptitle="Bauwerk oder Anlage f&uuml;r Sport, Freizeit und Erholung"; break;
-			case $btyp_leitg:
-				$btyptitle="Leitung"; break;
-			case $btyp_trans:
-				$btyptitle="Transportanlage"; break;
-			case $btyp_turm:
-				$btyptitle="Turm"; break;
-			case $btyp_vorrat:
-				$btyptitle="Vorratsbeh&auml;lter, Speicherbauwerk"; break;
-			case $btyp_hist:
-				$btyptitle="Historisches Bauwerk oder historische Einrichtung"; break;
-			case $btyp_heil:
-				$btyptitle="Heilquelle, Gasquelle"; break;
-			case $btyp_oeff:
-				$btyptitle="Einrichtung in &ouml;ffentlichen Bereichen"; break;
-			case $btyp_bpkt:
-				$btyptitle="Besonderer Bauwerkspunkt"; break;
-			default:
-				$btyptitle='Fehler!'; break;
-		}
-		echo "<tr><td colspan=3></td><td colspan=2 class='gw'>".$btyptitle."</td></tr>"; // ++ Symbol?
+	// Footer Bauwerke
+	if ($baunr === 0) {
+		echo "\n<p>Kein Bauwerk auf diesem Flurst&uuml;ck.</p><br>";
+		// if ($dbg > 2) {echo "\n<p class='err'>SQL=<br>".$sqlb."<br>$1 = gml_id = '".$gmlid."'</p>";}
+	} else {
+		echo "\n<tr>"
+			."\n\t<td>Summe:</td>"
+			."\n\t<td class='fla sum' title='von Bauwerken &uuml;berbaute Fl&auml;che des Flurst&uuml;cks'>".number_format($bauflsum,0,",",".")."&nbsp;&nbsp;&nbsp;&nbsp;m&#178;</td>"
+			."\n\t<td colspan='6'>&nbsp;</td>"
+		."\n</tr>"
+		."\n</table>\n";
 	}
-
-	echo "\n<tr>";
-		echo "\n\t<td>";
-		if ($bbez != "") {echo "<span title='Bezeichnung'>".$bbez."</span> ";}
-		if ($bnam != "") {echo "<span title='Name'>".$bnam."</span> ";}
-		echo "</td>";
-		echo "\n\t<td class='fla'>".$f1."</td>"
-		."\n\t<td class='".$bstyle."'>".$f2."</td>"; // FlÃ€chenangaben
-		echo "\n\t<td>".DsKy($bfktk, 'Bauwerksfunktion-*')."<span title='".$bfktd ."'>".$bfktv."</span></td>";
-
-		// Lage / Haus (nur bei Typ 3 sonstige)
-		echo "\n\t<td class='nwlink noprint'>"; // Link
-		if ($bgeb != "") { // gehÃ¶rt zu GebÃ€ude
-		//	bw_gz_lage($bgeb); // Function: Lage (Adresse) ausgeben
-			echo "\n\t\t<a title='gehÃ¶rt zu' href='alkishaus.php?gkz=".$gkz."&amp;gmlid=".$bgeb.LnkStf()
-			."'>Haus&nbsp;<img src='ico/Haus.png' width='16' height='16' alt=''></a>";
-		}
-		echo "\n\t</td>";
-
-		// Bauwerk Details
-		echo "\n\t<td class='nwlink noprint'>" // Link
-		."\n\t\t<a title='Bauwerksdaten' href='alkisbauwerk.php?gkz=".$gkz."&amp;btyp=".$btyp."&amp;gmlid=".$bgml.LnkStf()
-		."'>Bauwerk&nbsp;<img src='ico/Haus.png' width='16' height='16' alt=''></a>" // Icon fÃŒr Bauwerk schaffen
-		."\n\t</td>"
-	."\n</tr>";
-}
-
-// Footer Bauwerk
-if ($baunr === 0) {
-	echo "\n<p>Kein Bauwerk auf diesem Flurst&uuml;ck.</p><br>";
-	// if ($dbg > 2) {echo "\n<p class='err'>SQL=<br>".$sqlb."<br>$1 = gml_id = '".$gmlid."'</p>";}
-} else {
-	echo "\n<tr>"
-		."\n\t<td>Summe:</td>"
-		."\n\t<td class='fla sum' title='von Bauwerken &uuml;berbaute Fl&auml;che des Flurst&uuml;cks'>".number_format($bauflsum,0,",",".")."&nbsp;&nbsp;&nbsp;&nbsp;m&#178;</td>"
-		."\n\t<td colspan='6'>&nbsp;</td>"
-	."\n</tr>"
-	."\n</table>\n";
-}
-pg_free_result($resb);
+	pg_free_result($resb);
+}
 
 echo "<div class='buttonbereich noprint'>\n<hr>"
