Index: trunk/info/info/alkis/alkisexport.php
===================================================================
--- trunk/info/info/alkis/alkisexport.php	(revision 355)
+++ trunk/info/info/alkis/alkisexport.php	(revision 376)
@@ -6,15 +6,20 @@
 	Der View verkettet Flurstueck - Buchungsstelle - Grundbuch - Eigentuemer
 	Die Lagebezeichnung des FlurstÃŒcks wird in ein Feld komprimiert.
-	Parameter: gkz=mandant&gmlid=DE...&tabtyp=flurstueck/grundbuch/person
-
-	2014-01-17 krz f.j.
-	2014-01-20 weitere Spalten und verbesserte Formatierung
-	2014-01-21 Der View liefert "Rechtsgemeinschaft" nun als Feld in allen Personen-SÃ€tzen 
-			eines GB-Blattes statt als eigenen "Satz ohne Person".
-	2014-01-27 Erweiterung auf Filter "strasse" ("gml_id" aus "ax_lagebezeichnungkatalogeintrag")
-	2014-09-04 PostNAS 0.8: ohne Tab. "alkis_beziehungen", mehr "endet IS NULL", Spalten varchar statt integer
-	2014-09-10 Bei Relationen den Timestamp abschneiden
-	2014-09-30 RÃŒckbau substring(gml_id)
-	2015-12-09 LATIN1 in ''
+	Parameter Beispiele: 
+		?gkz=mandant&tabtyp=flurstueck/grundbuch/person&gmlid=DE...
+		?gkz=270&tabtyp=gemarkung&gemarkung=2662   
+		?gkz=270&gemarkung=2662
+	Parameter Beispiele fÃŒr Fehler:
+		?gkz=270&tabtyp=gemarkung&gmlid=2662
+		?gkz=270&tabtyp=flurstueck&gemarkung=2662
+		?gkz=270&tabtyp=flurstueck
+		?gkz=270&gmlid=2662
+
+	Version
+	2016-02-23 Version fuer norGIS-ALKIS-Import
+	2016-10-18 Export einer ganzen Gemarkung zulassen (Sonderfall bei den Parametern)
+	2016-11-29 Gemeinsam genutzte Datenbanken ermÃ¶glichen
+
+++ ToDo: SQL "exp_csv_str" und "exp_csv_str" optimieren
 */
 
@@ -31,7 +36,5 @@
 	$res=pg_prepare("", $sql);
 	$res=pg_execute("", $v);
-	if (!$res) {
-		return "** Fehler bei Lagebezeichnung **"; //.$sql;
-	}
+	if (!$res) {return "** Fehler bei Lagebezeichnung **";}
 	$j=0;
 	$lagehsnr="";
@@ -54,9 +57,36 @@
 // HIER START //
 
-$cntget = extract($_GET); // Parameter aus URL lesen
+$gkz=''; $tabtyp = ''; $gemarkung=''; $gmlid=''; // erwartete Parameter initialisieren
+$cntget = extract($_GET); // aktuelle Parameter aus URL auslesen
+require_once("alkis_conf_location.php"); // Konfiguration laden
+include("alkisfkt.php"); // Funktionen der ALKIS-Auskunft laden
+
+if ($tabtyp == '') { // Parameter (-kombinationen) pruefen
+	if ($gemarkung == '') { // Beim Wert "gmlid" MUSS man die Tabelle dazu nennen
+		exit ("Fehler: Art des Suchfilters nicht angeben.");
+	} else {  // Art des Wertes bestimmt eindeutig den Filter
+		$tabtyp = 'gemarkung';
+	}
+} elseif ($tabtyp == 'gemarkung') {
+	if ($gemarkung == '') {
+		exit ("Fehler: Gemarkungsnummer nicht angeben.");
+	}
+}
+if ($gmlid == '') {
+	if ($gemarkung == '') {
+		exit ("Fehler: Kein Wert fuer die Suche angegeben.");
+	} else { // Wert fÃŒr Gemarkungsnummer angegeben
+		if ($tabtyp != 'gemarkung') {
+			exit ("Fehler: Falsche Kombination Parameter tabtyp='".$tabtyp."' mit Wert fuer Gemarkungsnummer.");
+		}
+		$filename='alkis_'.$tabtyp.'_'.$gemarkung.'.csv';
+	}
+} else { // alles gut
+	$filename='alkis_'.$tabtyp.'_'.$gmlid.'.csv';
+}
+
+// DOWNLOAD der CSV-Datei vorbereiten (statt HTML-Ausgabe)
 header('Content-type: application/octet-stream');
-header('Content-Disposition: attachment; filename="alkis_'.$tabtyp.'_'.$gmlid.'.csv"');
-require_once("alkis_conf_location.php");
-include("alkisfkt.php");
+header('Content-Disposition: attachment; filename="'.$filename.'"');
 
 // CSV-Ausgabe: Kopfzeile mit Feldnamen
@@ -64,27 +94,38 @@
 
 // Datenbank-Verbindung
-$con = pg_connect("host=".$dbhost." port=" .$dbport." dbname=".$dbname." user=".$dbuser." password=".$dbpass);
-if (!$con) {
-	exit("Fehler beim Verbinden der DB");
-}
+$con = pg_connect($dbconn." options='--application_name=ALKIS-Auskunft_alkisexport.php'");
+if (!$con) {exit("Fehler beim Verbinden der DB");}
 pg_set_client_encoding($con, 'LATIN1'); // FÃŒr Excel kein UTF8 ausgeben
+
+$viewname="exp_csv"; // Standard-View, ist in der Datenbank gespeichert
+$v=array($gmlid); // Standard-Filter-Feld
 
 // Der Parameter "Tabellentyp" bestimmt den Namen des Filter-Feldes aus dem View "exp_csv".
 switch ($tabtyp) { // zulaessige Werte fuer &tabtyp=
-	case 'flurstueck': $filter = "fsgml"; break; // ax_flurstueck.gml_id
-	case 'grundbuch':  $filter = "gbgml"; break; // ax_buchungsblatt.gml_id
-	case 'person':     $filter = "psgml"; break; // ax_person.gml_id
-	case 'strasse':    $filter = "stgml"; break; // ax_lagebezeichnungkatalogeintrag.gml_id = StraÃe-GML-ID
-	default: exit("Falscher Parameter '".$tabtyp."'"); break;
+	case 'flurstueck': // ax_flurstueck.gml_id
+		$filter = "fsgml";
+		break;
+	case 'grundbuch': // ax_buchungsblatt.gml_id
+		$filter = "gbgml";
+		break;
+	case 'person': // ax_person.gml_id
+		$filter = "psgml";
+		break;
+	case 'strasse': // ax_lagebezeichnungkatalogeintrag.gml_id = StraÃe-GML-ID
+		$filter = "stgml";
+		$viewname="exp_csv_str"; // alternativer View mit "_str", ist in der Datenbank gespeichert  
+		break;
+	case 'gemarkung': // SONDERfall als Parameter wird "Gemarkungsnummer" und nicht "gml_id" geliefert
+		$filter = "gemarkungsnummer";
+		$v=array($gemarkung); // anderes Filter-Feld, anderer Parameter
+		break;
+	default:
+		exit("Falscher Parameter '".$tabtyp."'");
+		break;
 }
 
 // Daten aus gespeichertem View, zusaetzlich Filter: "feld"='wert' mitgeben
-if ($tabtyp == 'strasse') { // Sonderversion
-	$sql="SELECT * FROM exp_csv_str WHERE ".$filter." = $1 ";
-} else {
-	$sql="SELECT * FROM exp_csv WHERE ".$filter." = $1 ";
-}
-
-$v=array($gmlid);
+$sql="SELECT * FROM ".$viewname." WHERE ".$filter." = $1 ";
+
 $res=pg_prepare("", $sql);
 $res=pg_execute("", $v);
@@ -106,5 +147,6 @@
 	$flstnummer=$row["zaehler"];
 	$nenner=$row["nenner"];
-	if ($nenner > 0) {$flstnummer.="/".$nenner;} // BruchNr
+	// Bruchnummer kann in Excel als Datum interpretiert werden. In '' setzen.
+	if ($nenner > 0) {$flstnummer="'".$flstnummer."/".$nenner."'";} // BruchNr
 	$fs_flae=$row["fs_flae"]; // amtliche Fl. aus DB-Feld
 
@@ -140,5 +182,6 @@
 			$rechtsg=$row["nam_bes"]; // Beschrieb der Rechtsgemeinschaft
 		} else {
-			$rechtsg=rechtsgemeinschaft($nam_adr); // EntschlÃŒsseln
+		//	$rechtsg=rechtsgemeinschaft($nam_adr); // EntschlÃŒsseln
+			$rechtsg=$row["nam_adrv"]; // Art der Rechtsgemeischaft (Value zum Key)
 		}
 	}
@@ -148,5 +191,6 @@
 	$nana=$row["nachnameoderfirma"];
 	$namteil=$row["namensbestandteil"];
-	$name=anrede($row["anrede"]);
+	//$name=anrede($row["anrede"]);  
+	$name=$row["anrv"]; // Anrede (Value zum Key)
 	if ($name != "") {$name.=" ";} // Trenner
 	if ($namteil != "") {$name.=$namteil." ";} // von und zu
