Index: trunk/mapbender/http/nav/alkisnav_grd.php
===================================================================
--- trunk/mapbender/http/nav/alkisnav_grd.php	(revision 356)
+++ trunk/mapbender/http/nav/alkisnav_grd.php	(revision 376)
@@ -1,17 +1,10 @@
 <?php
-/* Version vom
-	2013-04-16	"import_request_variables" entfÃ€llt in PHP 5.4
-	2013-04-26	Ersetzen View "gemeinde_gemarkung" durch Tabelle "pp_gemarkung"
-				Code aus _eig nach_fkt ausgelegert, hier mit nutzen. 
-				Dazu Var-Namen harmonisieren: $gblatt wird $blattgml
-				ZurÃŒck-Link, Titel der Transaktion anzeigen.
-	2013-04-29	Test mit IE
-	2013-05-07	Strukturierung des Programms, redundanten Code in Functions zusammen fassen
-	2013-05-14	Hervorhebung aktuelles Objekt. Title "Nachweis" auch auf Icon.
-	2013-12-12	Limit in EinBlatt von 200 weit hoch gesetzt (bis BlÃ€ttern mÃ¶glich wird)
-	2014-09-03	PostNAS 0.8: ohne Tab. "alkis_beziehungen", mehr "endet IS NULL", Spalten varchar statt integer
-	2014-09-15	Bei Relationen den Timestamp abschneiden
-	2014-09-30	RÃŒckbau substring(gml_id)
-	2015-12-10	Umstellen .ico auf .png, Vermeidung nicht initialisierter Variable
+/*	Navigation mit ALKIS-Daten im Mapbender 2.7 - Teil Grundbuch-Suche 
+	Diese Version des Programms verwendet die Datenbank-Struktur aus dem norGIS-ALKIS-Importer.
+
+Version vom
+	2016-02-11 Version fÃŒr norGIS-ALKIS-Import aus Version Classic abgeleitet.
+	2016-03-02 $gemeinde auf feste LÃ€nge korrigieren
+	2016-11-28 Gemeinsam genutzte Datenbanken ermÃ¶glichen
 */
 
@@ -23,18 +16,17 @@
 
 $cntget = extract($_GET);
+$gemeinde=str_pad($gemeinde, 3, "0", STR_PAD_LEFT); // temporÃ€r ..
 include("../../conf/alkisnav_conf.php"); // Konfigurations-Einstellungen
 include("alkisnav_fkt.php"); // Funktionen
-
-$con_string = "host=".$host." port=".$port." dbname=".$dbname.$dbvers.$gkz." user=".$user." password=".$password;
-$con = pg_connect ($con_string) or die ("Fehler bei der Verbindung zur Datenbank ".$dbname.$dbvers.$gkz);
+$con = pg_connect ($dbconn) or die ("Fehler bei der Verbindung zur Datenbank ".$dbpre.$dbgkz);
 
 echo <<<END
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
+<!doctype html>
+<html lang="de">
 <head>
 	<meta http-equiv="cache-control" content="no-cache">
 	<meta http-equiv="pragma" content="no-cache">
 	<meta http-equiv="expires" content="0">
-	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+	<meta charset="utf-8">
 	<title>ALKIS-Suche Grundbuch</title>
 	<link rel="stylesheet" type="text/css" href="alkisnav.css">
@@ -63,5 +55,5 @@
 
 function ListAG($liste_ag, $aktuell) {
-	// Amtsgerichte (Grundbuch) auflisten, dazu als Filter eine AG-Liste
+	// Amtsgerichte (Grundbuchamt) auflisten, dazu als Filter die AG-Liste aus Conf-Datei verwenden.
 	global $debug;
 	$linelimit=40;
@@ -97,6 +89,6 @@
 function ListGBBez($agkey) {
 	// Grundbuch-Bezirke zu einem Amtsgericht auflisten.
-	// Auch wenn BlÃ€tter da sind, kann es eine Sackgasse sein. 
-	// Manchmal haben die BlÃ€tter keine FlurstÃŒcke im Filter-Bereich
+	// Auch wenn BlÃ€tter vorhanden sind, kann es eine "Sackgasse" sein.
+	// Manchmal haben die BlÃ€tter keine FlurstÃŒcke im Filter-Bereich (Gemeinde).
 	global $debug;
 	$linelimit=100; // Bezirke/AG
@@ -140,5 +132,5 @@
 
 function ag_bez_head($gbbez, $bezaktuell) {
-	// Zu einem Grundbuchbezirks-SchlÃŒssel die Zeilen AG und Bezirk ausgeben
+	// Zu einem Grundbuchbezirks-SchlÃŒssel die Zeilen "AG" und "Bezirk" ausgeben
 	// Parameter = SchlÃŒssel des Bezirks
 	#global $debug;
@@ -304,5 +296,5 @@
 	if ($showParent) {
 		ag_bez_head($zgbbez, false); // AG + BEZ
-		zeile_blatt ($zgbbez, $gbbeznam, $blattgml, $zblatt, false, "", true);
+		zeile_blatt ($zgbbez, "", $blattgml, $zblatt, false, "", true);
 	}
 	// Body
@@ -381,5 +373,5 @@
 	// Body
 	// Anfang (Select-Liste) gleich 
-	$sqlanf ="SELECT g.gemeinde, g.gemarkungsname, f.gml_id, f.flurnummer, f.zaehler, f.nenner, ";
+	$sqlanf ="SELECT g.bezeichnung, f.gml_id, f.flurnummer, f.zaehler, f.nenner, ";
 	if($epsg == "25832") { // Transform nicht notwendig
 		$sqlanf.="st_x(st_Centroid(f.wkb_geometry)) AS x, ";
@@ -393,11 +385,11 @@
 	switch ($gfilter) { // Filter Gemeinde
 		case 1: // Einzel
-			$sqlfitler="AND g.gemeinde='".$gemeinde."' "; break;
+			$sqlfitler="AND f.gemeinde='".$gemeinde."' "; break;
 		case 2: // Liste
-			$sqlfilter="AND g.gemeinde in ('".str_replace(",", "','", $gemeinde)."') "; break;
+			$sqlfilter="AND f.gemeinde in ('".str_replace(",", "','", $gemeinde)."') "; break;
 	}
 
 	// Direkte Buchungen (Flurst.)
-	$sql =$sqlanf."FROM ax_flurstueck f JOIN pp_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkung ";
+	$sql =$sqlanf."FROM ax_flurstueck f JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer ";
 	$sql.="WHERE f.istgebucht = $1 AND f.endet IS NULL ".$sqlfilter."ORDER BY f.gemarkungsnummer, f.flurnummer, f.zaehler, f.nenner;";
 
@@ -414,6 +406,5 @@
 	while($row = pg_fetch_array($res)) {	
 		$fs_gml=$row["gml_id"];
-		$gemei=$row["gemeinde"];
-		$gmkg=$row["gemarkungsname"];
+		$gmkg=$row["bezeichnung"];
 		$flur=$row["flurnummer"];
 		$fskenn=$row["zaehler"];
@@ -424,5 +415,5 @@
 	// Zwischen-Foot
 	if($zfs1 == 0) {
-		echo "\n<p class='anz'>Kein Flurst&uuml;ck direkt</p>";
+		echo "\n<p class='anz'>Kein Flurst&uuml;ck zu dieser Buchung</p>";
 	} elseif($zfs1 > 1) {
 		echo "\n<p class='anz'>".$zfs1." Flurst&uuml;cke</p>";
@@ -433,4 +424,5 @@
 
 	// Recht "an" (dienende Buchungen und ihre Flurst.)
+
 $sql =$sqlanf.", sd.gml_id AS diengml, sd.laufendenummer AS dienlfd, 
 bd.gml_id AS dienbltgml, bd.buchungsblattnummermitbuchstabenerweiterung AS dienblatt, 
@@ -439,8 +431,9 @@
 JOIN ax_buchungsstelle sd ON sd.gml_id=ANY(sh.an) 
 JOIN ax_flurstueck f ON f.istgebucht=sd.gml_id 
-JOIN pp_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkung 
+JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer 
 JOIN ax_buchungsblatt bd ON sd.istbestandteilvon=bd.gml_id 
 JOIN ax_buchungsblattbezirk gd ON bd.land=gd.land AND bd.bezirk=gd.bezirk 
 WHERE sh.gml_id = $1 AND sh.endet IS NULL AND sd.endet IS NULL AND f.endet IS NULL AND bd.endet IS NULL AND gd.endet IS NULL "
+
 .$sqlfilter."ORDER BY gd.bezeichnung, bd.buchungsblattnummermitbuchstabenerweiterung, cast(sd.laufendenummer AS integer), f.gemarkungsnummer, f.flurnummer, f.zaehler, f.nenner;";
 
@@ -457,13 +450,18 @@
 	$gwblatt="";
 	while($row = pg_fetch_array($res)) {
-		$dienstelle=$row["stelle"];	// Stelle (AG) des dienenden GrundstÃŒcks
-		$dienbezgml=$row["dienbezgml"];	// Bezirks des dien. GS: gml, Nr. und Bezeichnung
+		$dienstelle=$row["stelle"];	// Stelle (AG) des dien. Grdst.
+		$dienbezgml=$row["dienbezgml"];	// Bezirk des dien. GS: gml, Nr. und Bezeichnung
 		$diengbbez=$row["diengbbez"];	// Bezeichnung
 		$dienbezirk=$row["bezirk"];	// Key
-		$dienbltgml=$row["dienbltgml"];	// dienendes Blatt, gml und Nr
+		$dienbltgml=$row["dienbltgml"];	// dien. Blatt, gml und Nr
 		$dienblatt=$row["dienblatt"];
-		$diengml=$row["diengml"];	// gml_id des dienenden GrundstÃŒcks
+		$diengml=$row["diengml"];	// gml_id des dien. Grdst.
 		$dienlfd=$row["dienlfd"];	// BVNR (laufendNr) des dien. GS
-		if ($gwblatt != $dienblatt) { // Gruppierung Blatt - dienend
+		if ($gwblatt != $dienblatt) { // Grupp. Blatt - dien.
+			if ($gwblatt == "") { // der erste "dienende": Einleitungs-Zeile
+				$aber="";
+				if($zfs1 == 0) {$aber="Aber ein ";} 
+				echo "\n<p class='anz' title='Die oben genannte Buchung hat ein Recht an den folgenden Buchungen'>".$aber."Recht an ..</p>";
+			}
 			$gwblatt = $dienblatt; // Steuerg GW Blatt
 			zeile_blatt($dienbezirk, $diengbbez, $dienbltgml, $dienblatt, true, "", false);
@@ -475,6 +473,5 @@
 		} // ++ Buchungsart? Welches Recht?
 		$fs_gml=$row["gml_id"];
-		$gemei=$row["gemeinde"];
-		$gmkg=$row["gemarkungsname"];
+		$gmkg=$row["bezeichnung"];
 		$flur=$row["flurnummer"];
 		$fskenn=$row["zaehler"];
@@ -505,4 +502,5 @@
 }
 
+// Filter aus Conf-Datei
 if ($gemeinde == "") {
 	$gfilter = 0; // ungefiltert
@@ -514,9 +512,10 @@
 }
 
-// Auch wenn redundant: Das Kennzeichen fÃŒr Anzeige und weitere Links zerlegen
+// Das eingegebene Kennzeichen fÃŒr "Anzeige" und "weitere Links" zerlegen,
+// auch wenn ÃŒber einen ein Self-Link mit gml_id aufgerufen.
 $kennztyp=ZerlegungGBKennz($gbkennz);
 
 // Wurde eine gml_id (internes Kennzeichen) aus einem Self-Link verwendet?
-// Dann hat das Prioritaet, also *nicht* nach $gbkennz suchen.
+// Dann hat DAS PrioritÃ€t, dann also *nicht* nach $gbkennz suchen.
 if ($buchunggml != "") { // gml der Buchungsstelle
 	$trans="Flurst&uuml;cke zur Buchungsstelle"; // Link
@@ -531,7 +530,6 @@
 	ListGBBez($ag);
 
-} else { // Eingabe im Formular
-
-	switch ($kennztyp) {
+} else { // kein Self-Link sondern manuelle Eingabe im Formular
+	switch ($kennztyp) { // wurde oben bereits analysiert und zerlegt
 		case 0: // keine Eingabe
 			$trans="Liste der Amtsgerichte";
@@ -541,21 +539,21 @@
 			$trans="Bezirke suchen \"".$gbkennz."\"";
 			$beznr=SuchGBBezName();
-			if ($beznr > 0) {  // eindeutig
+			if ($beznr > 0) {  // wenn der Suchbegriff eindeutig war, ..
 				$zgbbez=$beznr;
 				$trans="Bezirk gefunden, Bl&auml;tter dazu";
-				EinBezirk(false); // gleich weiter
+				EinBezirk(false); // .. dann gleich weiter
 			};
 			break;
-		case 2: // Eingabe Bezirk-Nummer -> Liste der BlÃ€tter
+		case 2: // Eingabe Bezirk-Nummer -> Liste der BlÃ€tter im Bezirk
 			$trans="Bl&auml;tter im GB-Bezirk";
 			EinBezirk(true);
 			break;
-		case 3: // Eingabe Blatt -> Liste der Buchungen
+		case 3: // Eingabe GB-Blatt -> Liste der Buchungen auf dem Blatt
 			$trans="Buchungen auf GB-Blatt";
 			$blattgml=gml_blatt(); // gml_id zum Blatt suchen
 			if ($blattgml != "") { // gefunden		
-				if (EinBlatt(true) == 1) { // darauf genau eine Buchung
-					$trans="GB-Blatt und 1 Buchung";
-					$buchunggml=gml_buchungsstelle(); // gml_id zum Kennzeichen
+				if (EinBlatt(true) == 1) { // wenn darauf genau eine Buchung ist
+					$trans="GB-Blatt und 1 Buchung"; // dann gleich tiefer rein
+					$buchunggml=gml_buchungsstelle(); // gml_id der Buchung
 					EinGrundstueck(false);
 				}
@@ -579,5 +577,5 @@
 
 // Nach Durchlaufen des PHP-Scriptes die zuletzt ausgefÃŒhrte Transaktion 
-// im Kopf des Ergebnisrahmens anzeigen.
+//  im Kopf des Ergebnisrahmens anzeigen.
 // Dazu die im HTML-Header definierte Javascript-Function benutzen.
 // Alternativ wird auch aus dem Javascript "positionieren Karte" dieser Titel gesetzt.
