Index: trunk/mapbender/http/nav/alkisnav_grd.php
===================================================================
--- trunk/mapbender/http/nav/alkisnav_grd.php	(revision 306)
+++ trunk/mapbender/http/nav/alkisnav_grd.php	(revision 330)
@@ -10,4 +10,5 @@
 	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
 */
 $cntget = extract($_GET);
@@ -52,12 +53,13 @@
 	global $debug;
 	$linelimit=40;
-	$sql ="SELECT a.stelle, a.bezeichnung AS ag FROM ax_dienststelle a ";
-	$sql.="WHERE a.stelle IN (".$liste_ag.") AND a.stellenart = 1000 "; // Amtsgerichte aus Liste
-	$sql.="ORDER BY a.bezeichnung LIMIT $1 ;";
+
+	$sql ="SELECT stelle, bezeichnung AS ag FROM ax_dienststelle ";
+	$sql.="WHERE stelle IN (".$liste_ag.") AND stellenart = 1000 AND endet IS NULL "; // AG aus Liste
+	$sql.="ORDER BY bezeichnung LIMIT $1 ;";
 	$res = pg_prepare("", $sql);
 	$res = pg_execute("", array($linelimit));
 	if (!$res) {
 		echo "\n<p class='err'>Fehler bei Amtsgerichte</p>";
-		#if ($debug >= 3) {echo "\n<p class='err'>".$sql."</p>";}
+		if ($debug >= 3) {echo "\n<p class='err'>".$sql."</p>";}
 		return 0;
 	}
@@ -93,7 +95,7 @@
 	$sql ="SELECT g.bezirk, g.bezeichnung FROM ax_buchungsblattbezirk g ";
 	$sql.="JOIN ax_dienststelle a ON g.stelle=a.stelle ";
-	$sql.="WHERE a.stelle = $1 AND a.stellenart = 1000 ";
+	$sql.="WHERE a.stelle = $1 AND a.stellenart = 1000 AND a.endet IS NULL AND g.endet IS NULL ";
 	// Diese Subquery stellt sicher, dass nur Bezirke aufgelistet werden, die auch BlÃ€tter enthalten:
-	$sql.="AND NOT (SELECT gml_id FROM ax_buchungsblatt b WHERE b.land=g.land and b.bezirk=g.bezirk LIMIT 1) IS NULL ";
+	$sql.="AND NOT (SELECT gml_id FROM ax_buchungsblatt b WHERE b.land=g.land AND b.bezirk=g.bezirk AND b.endet IS NULL LIMIT 1) IS NULL ";
 	$sql.="ORDER BY g.bezeichnung LIMIT $2 ;";
 	$v = array($agkey, $linelimit);
@@ -128,5 +130,5 @@
 	#global $debug;
 	$sql ="SELECT a.stelle, a.bezeichnung AS ag, g.bezeichnung FROM ax_buchungsblattbezirk g ";
-	$sql.="JOIN ax_dienststelle a ON g.stelle=a.stelle WHERE g.bezirk= $1 LIMIT 1;";
+	$sql.="JOIN ax_dienststelle a ON g.stelle=a.stelle WHERE g.bezirk= $1 AND g.endet IS NULL AND a.endet IS NULL LIMIT 1;";
 	$v=array($gbbez);
 	$res=pg_prepare("", $sql);
@@ -159,5 +161,5 @@
 	$sql ="SELECT a.stelle, a.bezeichnung AS ag, g.bezirk, g.bezeichnung FROM ax_buchungsblattbezirk g ";
 	$sql.="JOIN ax_dienststelle a ON g.stelle=a.stelle ";
-	$sql.="WHERE g.bezeichnung ILIKE $1 "; //	"AND a.stellenart=1000 " // Amtsgericht
+	$sql.="WHERE g.bezeichnung ILIKE $1 AND g.endet IS NULL AND a.endet IS NULL "; // "AND a.stellenart=1000 " Amtsgericht
 	$sql.="ORDER BY a.bezeichnung, g.bezeichnung LIMIT $2 ;";
 	if ( $gbkennz == "") {
@@ -219,5 +221,5 @@
 	// Body
 	$sql ="SELECT b.gml_id, b.buchungsblattnummermitbuchstabenerweiterung AS blatt FROM ax_buchungsblatt b ";
-	$sql.="WHERE b.bezirk= $1 ORDER BY b.buchungsblattnummermitbuchstabenerweiterung LIMIT $2 ;";
+	$sql.="WHERE b.bezirk= $1 AND b.endet IS NULL ORDER BY b.buchungsblattnummermitbuchstabenerweiterung LIMIT $2 ;";
 	$v=array($zgbbez, $linelimit);
 	$res=pg_prepare("", $sql);
@@ -253,5 +255,5 @@
 	global $debug, $zgbbez, $zblatt, $zblattn, $zblattz;
 	$sql ="SELECT b.gml_id, b.buchungsblattnummermitbuchstabenerweiterung AS blatt FROM ax_buchungsblatt b "; 
-	$sql.="WHERE b.bezirk= $1 AND b.buchungsblattnummermitbuchstabenerweiterung ";
+	$sql.="WHERE b.bezirk= $1 AND b.endet IS NULL AND b.buchungsblattnummermitbuchstabenerweiterung ";
 
 	if ($zblattz == "") { // Ohne Buchstabenerweiterung: Formate '123','000123 ','0000123'
@@ -290,7 +292,6 @@
 	}
 	// Body
-	// 2013-12-12 Limit von ursprÃŒnglich 200 weit hoch gesetzt
 	GB_Buchung_FS(1000, $zgbbez."-".$zblatt); // Blatt -> Buchung -> Flurstueck (Limitiert)
-	// ++ besser Limit wieder runter und "BlÃ€ttern"-Funktion einfÃŒhren
+	// ++ besser Limit runter und "BlÃ€ttern"-Funktion einfÃŒhren
 	return; 
 }
@@ -300,10 +301,10 @@
 	// Dazu die gml_id der Buchungsstelle ermitteln, um "function EinGrundstueck" benutzen zu kÃ¶nnen.
 	global $debug, $zgbbez, $zblatt, $zblattn, $zblattz, $zbvnr;
+
 	// Blatt ->  B u c h u n g s s t e l l e
 	$sql ="SELECT s.gml_id FROM ax_buchungsstelle s ";
-	$sql.="JOIN alkis_beziehungen v ON s.gml_id=v.beziehung_von "; 
-	$sql.="JOIN ax_buchungsblatt b ON b.gml_id=v.beziehung_zu "; 
-	$sql.="WHERE v.beziehungsart='istBestandteilVon' ";
-	$sql.="AND b.bezirk= $1 AND b.buchungsblattnummermitbuchstabenerweiterung ";
+	$sql.="JOIN ax_buchungsblatt b ON s.istbestandteilvon = b.gml_id "; 
+	$sql.="WHERE b.bezirk= $1 AND s.endet IS NULL AND b.endet IS NULL AND b.buchungsblattnummermitbuchstabenerweiterung ";
+
 	if ($zblattz == "") { // Ohne Buchstabenerweiterung
 		//Formate '123','000123 ','0000123'
@@ -351,13 +352,15 @@
 		zeile_buchung($buchunggml, $zbvnr, $zgbbez."-".$zblattn.$zblattz, false, true);
 	}
-// SQL-Bausteine
+
 // dienend $1 gml_id von
-//         Buchungsstelle  <vs/an<  Buchungsstelle sh
+//         Buchungsstelle  <an<  Buchungsstelle sh
 //         (dienend)                (herrschend)
+
 // direkt  $1 gml_id von 
-//         Buchungsstelle                              <vs/istGebucht< FlurstÃŒck > Gemarkung
+//         Buchungsstelle                           <istGebucht< FlurstÃŒck >> Gemarkung
+
 // Recht   $1 gml_id von 
-//         Buchungsstelle  >vs/an>  Buchungsstelle sd  <vf/istGebucht< FlurstÃŒck > Gemarkung
-//         (herrschend)             (dienend)      sd  >vd/istBestandteilVon> bd > gd
+//         Buchungsstelle  >an>  Buchungsstelle sd  <istGebucht< FlurstÃŒck >> Gemarkung
+//         (herrschend)             (dienend)   sd  >istBestandteilVon> bd >> gd
 
 	// Body
@@ -373,15 +376,13 @@
 	// Filter gleich
 	switch ($gfilter) { // Filter Gemeinde
-		case 1: // Einzelwert
-			$sqlfitler="AND g.gemeinde=".$gemeinde." "; break;
+		case 1: // Einzel
+			$sqlfitler="AND g.gemeinde='".$gemeinde."' "; break;
 		case 2: // Liste
-			$sqlfilter="AND g.gemeinde in (".$gemeinde.") "; break;
-	}
-
-	// Abfrage: Direkte Buchungen (FlurstÃŒcke)
-	$sql =$sqlanf."FROM alkis_beziehungen vs JOIN ax_flurstueck f ON vs.beziehung_von = f.gml_id ";
-	$sql.="JOIN pp_gemarkung  g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkung ";
-	$sql.="WHERE vs.beziehung_zu= $1 AND vs.beziehungsart='istGebucht' ";
-	$sql.=$sqlfilter."ORDER BY f.gemarkungsnummer, f.flurnummer, f.zaehler, f.nenner;";
+			$sqlfilter="AND g.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.="WHERE f.istgebucht = $1 AND f.endet IS NULL ".$sqlfilter."ORDER BY f.gemarkungsnummer, f.flurnummer, f.zaehler, f.nenner;";
 
 	$v=array($buchunggml);
@@ -415,19 +416,15 @@
 	}
 
-	// Abfrage: Rechte an (dienende Buchungen und ihre FlurstÃŒcke)
-	$sql =$sqlanf.", sd.gml_id AS diengml, sd.laufendenummer AS dienlfd, ";		// Stelle dienend
+	// Recht "an" (dienende Buchungen und ihre Flurst.)
+	$sql =$sqlanf.", sd.gml_id AS diengml, sd.laufendenummer AS dienlfd, "; // Stelle dienend
 	$sql.="bd.gml_id AS dienbltgml, bd.buchungsblattnummermitbuchstabenerweiterung AS dienblatt, "; // Blatt dienend
-	$sql.="gd.stelle, gd.gml_id AS dienbezgml, gd.bezirk, gd.bezeichnung AS diengbbez ";	// AG und Bezirk dazu
-	$sql.="FROM alkis_beziehungen vs ";
-	$sql.="JOIN ax_buchungsstelle sd ON vs.beziehung_zu=sd.gml_id ";
-	$sql.="JOIN alkis_beziehungen vf ON vf.beziehung_zu=sd.gml_id "; // sd=Stelle dienend
-	$sql.="JOIN ax_flurstueck f ON vf.beziehung_von = f.gml_id ";
+	$sql.="gd.stelle, gd.gml_id AS dienbezgml, gd.bezirk, gd.bezeichnung AS diengbbez "; // AG und Bezirk dazu
+	$sql.="FROM ax_buchungsstelle sh "; // herrschend
+	$sql.="JOIN ax_buchungsstelle sd ON sd.gml_id = ANY(sh.an) "; // dienend
+	$sql.="JOIN ax_flurstueck f ON f.istgebucht = sd.gml_ID ";
 	$sql.="JOIN pp_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkung ";
-
-	// Blatt und Bezirk (dienend)
-	$sql.="JOIN alkis_beziehungen vd ON vd.beziehung_von=sd.gml_id ";
-	$sql.="JOIN ax_buchungsblatt bd ON vd.beziehung_zu=bd.gml_id ";	// Blatt dienend
+	$sql.="JOIN ax_buchungsblatt bd ON sd.istbestandteilvon = bd.gml_id ";	// Blatt dienend
 	$sql.="JOIN ax_buchungsblattbezirk gd ON bd.land=gd.land AND bd.bezirk=gd.bezirk "; // GB-Bez. dienend
-	$sql.="WHERE vs.beziehung_von = $1 AND vs.beziehungsart='an' AND vf.beziehungsart='istGebucht' AND vd.beziehungsart='istBestandteilVon' ";
+	$sql.="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 ";
 	$sql.=$sqlfilter."ORDER BY gd.bezeichnung, bd.buchungsblattnummermitbuchstabenerweiterung, cast(sd.laufendenummer AS integer), f.gemarkungsnummer, f.flurnummer, f.zaehler, f.nenner;";
 
@@ -444,5 +441,5 @@
 	$gwblatt="";
 	while($row = pg_fetch_array($res)) {
-		$dienstelle=$row["stelle"];		// Stelle (AG) des dienenden GrundstÃŒcks
+		$dienstelle=$row["stelle"];	// Stelle (AG) des dienenden GrundstÃŒcks
 		$dienbezgml=$row["dienbezgml"];	// Bezirks des dien. GS: gml, Nr. und Bezeichnung
 		$diengbbez=$row["diengbbez"];	// Bezeichnung
@@ -450,6 +447,6 @@
 		$dienbltgml=$row["dienbltgml"];	// dienendes Blatt, gml und Nr
 		$dienblatt=$row["dienblatt"];
-		$diengml=$row["diengml"];		// gml_id des dienenden GrundstÃŒcks
-		$dienlfd=$row["dienlfd"];		// BVNR (laufendNr) des dien. GS
+		$diengml=$row["diengml"];	// gml_id des dienenden GrundstÃŒcks
+		$dienlfd=$row["dienlfd"];	// BVNR (laufendNr) des dien. GS
 		if ($gwblatt != $dienblatt) { // Gruppierung Blatt - dienend
 			$gwblatt = $dienblatt; // Steuerg GW Blatt
@@ -471,7 +468,6 @@
 	}
 
-// Teil 3
-// ++  Wenn nur 1 GrundstÃŒck untersucht wird, dann dazu auch die 
-//     berechtigten (herrschenden) GrundbÃŒcher anzeigen und verlinken (ohne FS))
+// Teil 3 - noch nicht umgesetzt
+// ToDo: Wenn nur 1 GrundstÃŒck untersucht wird, dann dazu auch die berechtigten (herrschenden) GrundbÃŒcher anzeigen und verlinken (ohne FS)
 
 	// Foot
@@ -499,4 +495,5 @@
 } else {
 	$gfilter = 2; // Liste
+//	$gemeinde = "'".str_replace(",", "','", $gemeinde)."'"; // Jedes Element in ''
 }
 
