Index: trunk/mapbender/http/nav/alkisnav_eig.php
===================================================================
--- trunk/mapbender/http/nav/alkisnav_eig.php	(revision 420)
+++ trunk/mapbender/http/nav/alkisnav_eig.php	(revision 425)
@@ -11,4 +11,7 @@
 	2018-11-12 Full-Schema
 	2019-02-12 Sortierung FlurstÃŒcksnummer repariert
+	2021-12-01 Fehlerkorrektur "benennt". Neue Var. $katamtmix  (Kataster-Amt-Mix).
+	           SchlÃŒsseltabellen sind mehrfach belegt. Dadurch doppelte Treffer bei der Suche.
+			   Weitere Buchstaben fÃŒr Namen-Suche zugelassen.
 */
 
@@ -110,5 +113,5 @@
 function personendaten() { 
 	// Adresse und Geburtsdatum der aktuellen Person ausgeben
-	global $gkz, $gemeinde, $epsg, $name, $person, $blattgml, $auskpath; // $debug
+	global $gkz, $gemeinde, $epsg, $name, $person, $blattgml, $auskpath;
 	$sql ="SELECT p.nachnameoderfirma, p.vorname, to_char(cast(p.geburtsdatum AS date),'DD.MM.YYYY') AS geburtsdatum, p.namensbestandteil, "
 	."a.ort_post, a.postleitzahlpostzustellung AS plz, a.strasse, a.hausnummer "
@@ -162,5 +165,5 @@
 	$linelimit=150;
 	$arr = explode(",", $name);
-	$name0 = trim($arr[0]);	// Nachname
+	$name0 = trim($arr[0]);		// Nachname
 	if (count($arr) > 1) {
 		$name1=trim($arr[1]);	// Vorname
@@ -245,5 +248,5 @@
 // Alternativ wÃŒrde eine Hilfstabelle benÃ¶tigt, in der im PostProcessing 
 // das GB-zu-Gemeinde-VerhÃ€ltnis vorbereitet wird.
-	global $gkz, $gemeinde, $epsg, $name, $person, $blattgml, $debug, $bltbez, $bltblatt, $bltseite, $kennztyp, $zgbbez;
+	global $gkz, $gemeinde, $epsg, $name, $person, $blattgml, $debug, $bltbez, $bltblatt, $bltseite, $kennztyp, $zgbbez, $katamtmix;
 	$linelimit=150;
 
@@ -256,10 +259,11 @@
 	$sql ="SELECT gb.gml_id AS gml_g, gb.buchungsblattnummermitbuchstabenerweiterung as blatt, b.bezirk, b.bezeichnung AS beznam "
 	."FROM ax_namensnummer n JOIN ax_buchungsblatt gb ON n.istbestandteilvon=gb.gml_id "
-	."JOIN ax_buchungsblattbezirk b ON gb.land=b.land AND gb.bezirk=b.bezirk "
-	."WHERE n.bennennt = $1 AND n.endet IS NULL AND gb.endet IS NULL AND b.endet IS NULL;";
+	."JOIN ax_buchungsblattbezirk b ON gb.land=b.land AND gb.bezirk=b.bezirk ";
+	if ($katamtmix){$sql.="AND substr(gb.gml_id,1,6) = substr(b.gml_id,1,6) ";}
+	$sql.="WHERE n.benennt = $1 AND n.endet IS NULL AND gb.endet IS NULL AND b.endet IS NULL ";
 
 	// Parameter $gbkennz, z.B. nach Klick auf Zeile "Bezirk"
 	if ($kennztyp > 1) { // 2=Such Bezirk-Nummer, 3=Such Blatt, 4=Such Buchung BVNR
-		#if ($debug > 0) {echo "<p class='dbg'>Filter Bezirk '".$zgbbez."'<p>";}
+		#if ($debug > 1) {echo "<p class='dbg'>Filter Bezirk '".$zgbbez."'<p>";}
 		$sql.="AND b.bezirk='".$zgbbez."' ";
 		$bezirkaktuell = true;
@@ -333,5 +337,5 @@
 // Im zweiten Schritt wird gesucht nach Rechten einer Buchungstelle des durchsuchten Blattes an anderen
 // Buchungstellen.
-	global $gkz, $gemeinde, $name, $person, $blattgml, $epsg, $gfilter, $debug;
+	global $gkz, $gemeinde, $name, $person, $blattgml, $epsg, $gfilter, $debug, $katamtmix;
 	if($backlink) { // Erneuter Ansatz bei Person oder GB mÃ¶glich.
 
@@ -347,6 +351,7 @@
 		// Grundbuch-Daten ermitteln
 		$sql ="SELECT gb.gml_id AS gml_g, gb.buchungsblattnummermitbuchstabenerweiterung as blatt, b.bezirk, b.bezeichnung AS beznam "
-		."FROM ax_buchungsblatt gb JOIN ax_buchungsblattbezirk b ON gb.land=b.land AND gb.bezirk=b.bezirk "
-		."WHERE gb.gml_id= $1 AND gb.endet IS NULL and b.endet IS NULL LIMIT 1 ;";
+		."FROM ax_buchungsblatt gb JOIN ax_buchungsblattbezirk b ON gb.land=b.land AND gb.bezirk=b.bezirk ";
+		if ($katamtmix){$sql.="AND substr(gb.gml_id,1,6) = substr(b.gml_id,1,6) ";}
+		$sql.="WHERE gb.gml_id= $1 AND gb.endet IS NULL and b.endet IS NULL LIMIT 1 ;";
 		$v=array($blattgml);
 		$res=pg_prepare("", $sql);
@@ -376,5 +381,5 @@
 // weil "ungefiltert" in "2+3" zu lange Listen entstehen wÃŒrden, die durchblÃ€ttert werden mÃŒssen. 
 
-	global $gkz, $gemeinde, $epsg, $name, $person, $blattgml, $gfilter, $debug, $bltbez, $bltblatt, $bltbvnr, $bltseite, $bltrecht, $kennztyp, $zgbbez;
+	global $gkz, $gemeinde, $epsg, $name, $person, $blattgml, $gfilter, $debug, $bltbez, $bltblatt, $bltbvnr, $bltseite, $bltrecht, $kennztyp, $zgbbez, $katamtmix;
 	$linelimit=80; // als Limit "Anzahl FlurstÃŒcke" in den beiden folgenden Abfragen
 	// darf nun etwas knapper sein, weil man jetzt blÃ€ttern kann
@@ -406,6 +411,7 @@
 	$sql1.="FROM ax_namensnummer nn "
 	."JOIN ax_buchungsblatt gb ON gb.gml_id=nn.istbestandteilvon "
-	."JOIN ax_buchungsblattbezirk b ON gb.land=b.land AND gb.bezirk=b.bezirk "
-	."JOIN ax_buchungsstelle s1 ON gb.gml_id=s1.istbestandteilvon ";
+	."JOIN ax_buchungsblattbezirk b ON gb.land=b.land AND gb.bezirk=b.bezirk ";
+	if ($katamtmix){$sql.="AND substr(gb.gml_id,1,6) = substr(b.gml_id,1,6) ";}
+	$sql1.="JOIN ax_buchungsstelle s1 ON gb.gml_id=s1.istbestandteilvon ";
 
 	// Baustein A: Auswahl 1 oder 2
@@ -621,7 +627,6 @@
 }
 
-// ===========
 // Start hier!
-// ===========
+
 // Parameter:  
 // 1. name   = Suche nach Namensanfang oder -bestandteil.
@@ -633,5 +638,5 @@
 // Hier formatierte Meldung und html-Foot.
 if (isset($name) and $name != "" ) { 
-	if (!preg_match('#^[a-zA-Z0-9Ã€Ã¶ÃŒÃÃÃÃ*,. \-&/]{1,50}$#', $name)) {
+	if (!preg_match('#^[a-zA-Z0-9Ã€Ã¶ÃŒÃÃÃÃÅŸÅœÅ¡Å *,. \-&/]{1,50}$#', $name)) {
 		echo "<p class='err'>Eingabe unzul&auml;ssig!</p>";
 	//	if ($debug > 1) {echo "<p class='err'>Name='".$name."' LÃ€nge='".strlen($name)."</p>";}
