Index: /trunk/import/sichten.sql
===================================================================
--- /trunk/import/sichten.sql	(revision 300)
+++ /trunk/import/sichten.sql	(revision 301)
@@ -8,5 +8,5 @@
 
 --  Dieses SQL braucht nur bei Bedarf in einer PostNAS-DB verarbeitet werden.
---  Es werden zusÃ€tzliche Views einegerichtet, die nur bei Fehlersuche und Analys (vom Entwickler) benÃ¶tigt werden.
+--  Es werden zusÃ€tzliche Views eingerichtet, die nur bei Fehlersuche und Analyse (vom Entwickler) benÃ¶tigt werden.
 
 --  PostNAS 0.7
@@ -23,4 +23,5 @@
 --  2013-10-23 Fehlersuche GebÃ€ude-Hausnummer-Relation
 --  2013-11-26 Neue Views (doppelverbindung)
+--  2014-01-17 View "exp_csv" fÃŒr den Export von CSV-Daten aus der Auskunft mit Modul alkisexport.php.
 
 
@@ -66,9 +67,115 @@
  IS 'ALKIS-Beziehung von FlurstÃŒck zu Buchung. UNION-Zusammenfassung des einfachen Falls mit direkter Buchung und des Falles mit Recht einer Buchungsstelle an einer anderen Buchungsstelle.';
 
--- Ende "Bausteine"
-
-
 -- Test-Ausgabe: Ein paar FÃ€lle mit "Recht an"
 --   SELECT * FROM doppelverbindung WHERE ba_dien > 0 LIMIT 20;
+
+-- Ende "Bausteine"
+
+
+
+-- Generelle Export-Struktur FlurstÃŒck - Buchung - Grundbuch - Person
+-- ------------------------------------------------------------------
+-- Verwendet den gespeicherten View "doppelverbindung".
+-- Wird benÃ¶tigt im Auskunft-Modul "alkisexport.php":
+-- Je nach aufrufendem Modul wird der Filter (WHERE) an anderer Stelle gesetzt (gml_id von FS, GB oder Pers.)
+
+-- Problem / Konflikt:
+-- Es kann nur eine lineare Struktur aus Spalten und Zeilen exportiert werden. 
+-- Wenn nicht nur die Daten des Ausgangs-Objektes exportiert werden, sondern auch verbundene Tabellen in 
+-- einer 1:N-Struktur, dann verdoppeln sich Zeileninhalte und es werden redundante Daten erzeugt. 
+-- Diese Redundanzen mÃŒssen vom dem Programm gefiltert werden, das die Daten ÃŒber eine Schnittstelle einliest.
+
+-- Anwendungs-Beispiel: Abrechnung von AnliegerbeitrÃ€gen.
+
+--           DROP VIEW exp_csv;
+CREATE OR REPLACE VIEW exp_csv
+AS
+ SELECT
+  -- ** FlurstÃŒck
+     f.gml_id AS fsgml,                                   -- mÃ¶glicher Filter FlurstÃŒcks-GML-ID
+     f.flurstueckskennzeichen             AS fs_kennz,
+     f.gemarkungsnummer,                                  -- Teile des FS-Kennz. noch mal einzeln
+     f.flurnummer, f.zaehler, f.nenner, 
+     f.amtlicheflaeche                    AS fs_flae,
+
+   -- * Adressen des FS -- Nein, diese werden im Export-Modul ermitteln und nachtragen
+ --  k.bezeichnung                          AS strasse,   -- StraÃennamen
+ --  split_part(l.hausnummer,' ',1)         AS hausnr,    -- Nummer
+ --  upper(split_part(l.hausnummer,' ',2))  AS hausnr_zs, -- Zusatz in GroÃschreibung
+
+  -- ** Grundbuch
+     gb.gml_id                            AS gbgml,       -- mÃ¶glicher Filter Grundbuch-GML-ID
+     gb.bezirk                            AS gb_bezirk,
+     gb.buchungsblattnummermitbuchstabenerweiterung AS gb_blatt,
+
+ -- ** Buchung
+     s.laufendenummer                     AS bu_lfd,
+   -- s.zaehler, s.nenner,                                -- Anteil des GB am FS
+     '=' || s.zaehler|| '/' || s.nenner   AS bu_ant,      -- als Excel-Formel  (nur bei Wohnungsgrundbuch JOIN ÃŒber 'Recht an')
+   --s.buchungsart,                                       -- verschlÃŒsselt
+     b.bezeichner                         AS bu_art,      -- entschlÃŒsselt
+
+   -- Felder aus der Subquery "Namens-Zweig"
+     nz.nam_lfd, nz.nam_ant, nz.nam_bes,                  -- nn.*
+     nz.psgml,                                            -- mÃ¶glicher Filter Personen-GML-ID
+     nz.nachnameoderfirma, nz.vorname, nz.geburtsdatum    -- p.*
+
+  FROM ax_flurstueck    f               -- FlurstÃŒck
+  JOIN doppelverbindung d               -- beide FÃ€lle ÃŒber Union-View: direkt und ÃŒber Recht von BS an BS
+    ON d.fsgml = f.gml_id 
+
+  JOIN ax_buchungsstelle s              -- Buchungs-Stelle
+    ON d.bsgml = s.gml_id 
+  JOIN ax_buchungsstelle_buchungsart b  -- EnstschlÃŒsselung der Buchungsart
+    ON s.buchungsart = b.wert 
+
+--  JOIN alkis_beziehungen v2             -- ax_flurstueck  >weistAuf>  AX_LagebezeichnungMitHausnummer
+--    ON v2.beziehung_von = f.gml_id AND v2.beziehungsart = 'weistAuf'
+--  JOIN ax_lagebezeichnungmithausnummer l
+--    ON v2.beziehung_zu = l.gml_id
+--  JOIN ax_lagebezeichnungkatalogeintrag k 
+--   ON l.kreis = k.kreis AND l.gemeinde = k.gemeinde AND l.lage = k.lage 
+
+  JOIN alkis_beziehungen v3              -- Grundbuch (zur Buchungs-Stelle)
+    ON s.gml_id = v3.beziehung_von  AND v3.beziehungsart = 'istBestandteilVon'  -- Buchung  --> Blatt
+  JOIN ax_buchungsblatt  gb 
+    ON v3.beziehung_zu = gb.gml_id 
+
+  LEFT JOIN -- LEFT: fiktives Blatt hat keine Namensnummern, dieser "Zweig" kann leer bleiben.
+  ( SELECT
+    -- Namensnummer
+     v4.beziehung_zu AS v4gml,
+     nn.laufendenummernachdin1421         AS nam_lfd, 
+     '=' || nn.zaehler|| '/' || nn.nenner AS nam_ant,         -- als Excel-Formel
+     nn.beschriebderrechtsgemeinschaft    AS nam_bes,
+
+     -- Person (zur Namensnummer)
+     p.gml_id                            AS psgml,            -- mÃ¶glicher Filter
+     p.nachnameoderfirma,                                     -- Familienname
+     p.vorname,                                               -- Vorname
+     p.geburtsdatum
+
+     -- Adresse des EigentÃŒmers  - Nein
+
+   FROM alkis_beziehungen v4         -- Namensnummer (zum GB-Blatt) 
+   JOIN ax_namensnummer nn 
+     ON v4.beziehung_von = nn.gml_id 
+   JOIN alkis_beziehungen v5         -- Person (zur Namensnummer)
+     ON v5.beziehung_von = nn.gml_id  AND v5.beziehungsart = 'benennt'  -- NamNum   --> Person
+   JOIN ax_person p
+     ON v5.beziehung_zu = p.gml_id
+   WHERE v4.beziehungsart = 'istBestandteilVon'  -- Blatt  --> NamNum
+  ) AS nz   -- Namens-Zweig
+   ON nz.v4gml = gb.gml_id      -- LEFT JOIN: Namenzweig an Grundbuch anbinden
+
+  ORDER BY f.flurstueckskennzeichen, gb.bezirk, gb.buchungsblattnummermitbuchstabenerweiterung, nz.nam_lfd ;
+
+COMMENT ON VIEW exp_csv 
+ IS 'View fÃŒr einen CSV-Export aus der Buchauskunft mit alkisexport.php. Generelle Struktur. FÃŒr eine bestimmte gml_id noch den Filter setzen.';
+
+-- GRANT SELECT ON TABLE exp_csv TO mb27;       -- User fÃŒr Auskunfts-Programme
+-- GRANT SELECT ON TABLE exp_csv TO alkisbuch;  -- User fÃŒr Auskunfts-Programme RLP-Demo
+
+
 
 -- Welche Karten-Typen ?
@@ -568,3 +675,23 @@
 
 
+-- Probleme mit der Trigger-Function "update_fields_beziehungen()"
+-- Manchmal kann zu einer gml_id in "alkis_beziehungen" die zustÃ€ndige Tabelle nicht gefunden werden.
+-- Nach Ãnderung der Trigger-Function am 10.12.2013 wird die Beziehung trotzdem eingetragen,
+-- nur die Felder "von_typename" und "beginnt" bleiben leer.
+
+-- Diese FÃ€lle anzeigen:
+CREATE OR REPLACE VIEW beziehungsproblem_faelle
+AS
+  SELECT *
+    FROM alkis_beziehungen
+   WHERE beginnt IS NULL;
+
+-- Wie viele sind das?
+CREATE OR REPLACE VIEW beziehungsproblem_zaehler
+AS
+  SELECT count(ogc_fid) AS anzahl
+    FROM alkis_beziehungen
+   WHERE beginnt IS NULL;
+
+
 -- END --
Index: /trunk/info/info/alkis/alkisfsnw.php
===================================================================
--- /trunk/info/info/alkis/alkisfsnw.php	(revision 300)
+++ /trunk/info/info/alkis/alkisfsnw.php	(revision 301)
@@ -33,5 +33,6 @@
 $keys = isset($_GET["showkey"]) ? $_GET["showkey"] : "n";
 if ($keys == "j") {$showkey=true;} else {$showkey=false;}
-echo <<<END
+?>
+
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
@@ -45,15 +46,16 @@
 	<link rel="stylesheet" type="text/css" href="alkisauszug.css">
 	<link rel="shortcut icon" type="image/x-icon" href="ico/Flurstueck.ico">
+	<script type="text/javascript">
+		function ALKISexport() {
+				window.open(<?php echo "'alkisexport.php?gkz=".$gkz."&tabtyp=flurstueck&gmlid=".$gmlid."'"; ?>);
+		}
+	</script>
 	<style type='text/css' media='print'>
 		.noprint {visibility: hidden;}
 	</style>
-	<script type="text/javascript">
-	function ALKISexportFS() {window.open('alkisfsexp.php?gkz=$gkz&gmlid=$gmlid');}
-	function ALKISexportGB() {window.open('alkisfsgbexp.php?gkz=$gkz&gmlid=$gmlid');}
-	</script>
 </head>
 <body>
-END;
-
+
+<?php
 $con = pg_connect("host=".$dbhost." port=" .$dbport." dbname=".$dbname." user=".$dbuser." password=".$dbpass);
 if (!$con) echo "<p class='err'>Fehler beim Verbinden der DB</p>\n";
@@ -861,7 +863,7 @@
 		<a title="zur&uuml;ck" href='javascript:history.back()'><img src="ico/zurueck.ico" width="16" height="16" alt="zur&uuml;ck" /></a>&nbsp;
 		<a title="Drucken" href='javascript:window.print()'><img src="ico/print.ico" width="16" height="16" alt="Drucken" /></a>&nbsp;
-		<a title="Export Flurst&uuml;cksdaten als CSV" href='javascript:ALKISexportFS()'><img src="ico/download_fs.ico" width="32" height="16" alt="Export" /></a>&nbsp;
-	 	<a title="Export Grundbuchdaten als CSV" href='javascript:ALKISexportGB()'><img src="ico/download_gb.ico" width="32" height="16" alt="Export" /></a>&nbsp;
-<!--	<a title="Seite schlie&szlig;en" href="javascript:window.close()"><img src="ico/close.ico" width="16" height="16" alt="Ende" /></a>	-->
+		<a title="Export als CSV" href='javascript:ALKISexport()'><img src="ico/download_fs.ico" width="32" height="16" alt="Export" /></a>&nbsp;
+<!-- <a title="Export Grundbuchdaten als CSV" href='javascript:ALKISexportGB()'><img src="ico/download_gb.ico" width="32" height="16" alt="Export" /></a>&nbsp; -->
+<!-- <a title="Seite schlie&szlig;en" href="javascript:window.close()"><img src="ico/close.ico" width="16" height="16" alt="Ende" /></a>	-->
 	</div>
 </form>
Index: /trunk/info/info/alkis/alkisexport.php
===================================================================
--- /trunk/info/info/alkis/alkisexport.php	(revision 301)
+++ /trunk/info/info/alkis/alkisexport.php	(revision 301)
@@ -0,0 +1,134 @@
+<?php
+/*	Modul alkisexport.php
+	CSV-Export von ALKIS-Daten zu einem Flurstueck, Grundbuch oder EigentÃŒmer.
+	Es wird eine GML-ID ÃŒbergeben.
+	Es wird ein gespeicherter View verwendet, der nach der gml_id gefiltert wird. 
+	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.
+*/
+
+function lage_zum_fs($gmlid) {
+	// Zu einem FlurstÃŒck die Lagebezeichnungen (mit Hausnummer) so aufbereiten, 
+	// dass ggf. mehrere Lagebezeichnungen in eine Zelle der Tabelle passen.
+	$sql ="SELECT DISTINCT s.bezeichnung, l.hausnummer FROM alkis_beziehungen v ";
+	$sql.="JOIN ax_lagebezeichnungmithausnummer l ON v.beziehung_zu=l.gml_id ";
+	$sql.="JOIN ax_lagebezeichnungkatalogeintrag s ON l.kreis=s.kreis AND l.gemeinde=s.gemeinde AND l.lage = s.lage ";
+	$sql.="WHERE v.beziehung_von= $1 AND v.beziehungsart='weistAuf' ";
+	$sql.="ORDER BY s.bezeichnung, l.hausnummer;";
+	$v=array($gmlid);
+	$res=pg_prepare("", $sql);
+	$res=pg_execute("", $v);
+	if (!$res) {
+		echo "Fehler bei Lagebezeichnung \n";
+		echo $sql."\n";
+	}
+	$j=0;
+	$lagehsnr="";
+	while($row = pg_fetch_array($res)) {
+		if ($j > 0) {$lagehsnr.=", ";}
+		$sneu=$row["bezeichnung"];
+		if ($sneu == $salt) { // gleiche Str.
+			$lagehsnr.=$row["hausnummer"]; // HsNr dran haengen
+		} else { // Name UND HsNr dranhaengen
+			$lagehsnr.=$sneu." ".$row["hausnummer"];
+		}
+		$salt=$sneu; // Name f. naechste Runde
+		$j++;
+	}
+	pg_free_result($res);
+	return($lagehsnr);
+}
+
+$cntget = extract($_GET); // Parameter aus URL lesen
+header('Content-type: application/octet-stream');
+header('Content-Disposition: attachment; filename="alkis_'.$tabtyp.'_'.$gmlid.'.csv"');
+require_once("alkis_conf_location.php");
+
+// CSV-Ausgabe: Kopfzeile mit Feldnamen
+echo "FS-Kennzeichen;Gemarkung;Flur;Flurstueck;Flaeche;Adressen;GB-Bezirk;GB-Blatt;LfdNrName;Anteil_am_FS;Buchungsart;Namensnummer;AnteilDerPerson;Beschreibung;Name;Vorname;GebDatum";
+
+// Datenbank-Verbindung
+$con = pg_connect("host=".$dbhost." port=" .$dbport." dbname=".$dbname." user=".$dbuser." password=".$dbpass);
+if (!$con) {
+	exit("Fehler beim Verbinden der DB");
+}
+pg_set_client_encoding($con, LATIN1); // FÃŒr Excel kein UTF8 ausgeben
+
+// Der Parameter "Tabellentyp" bestimmt den Namen des Filter-Feldes aus dem View
+switch ($tabtyp) { // zulaessige Erte fuer &tabtyp=
+	case 'flurstueck': $filter = "fsgml"; break;
+	case 'grundbuch':  $filter = "gbgml"; break;
+	case 'person':     $filter = "psgml"; break;
+	default: exit("Falscher Parameter '".$tabtyp."'"); break;
+}
+
+// Daten aus gespeichertem View
+$sql ="SELECT * FROM exp_csv WHERE ".$filter." = $1 ";
+$v = array($gmlid);
+$res = pg_prepare("", $sql);
+$res = pg_execute("", $v);
+if (!$res) {
+	exit("Fehler bei Datenbankabfrage");
+}
+$i=0;
+$fsalt='';
+
+// Datenfelder auslesen
+while($row = pg_fetch_array($res)) {
+
+	// Flurstueck
+	$fsgml=$row["fsgml"];
+	$fs_kennz=$row["fs_kennz"];
+	$gmkgnr=$row["gemarkungsnummer"];
+//	$gemkname=$row["bezeichnung"]; 
+	$flurnummer=$row["flurnummer"];
+	$flstnummer=$row["zaehler"];
+	$nenner=$row["nenner"];
+	if ($nenner > 0) {$flstnummer.="/".$nenner;} // BruchNr
+	$fs_flae=$row["fs_flae"]; // amtliche Fl. aus DB-Feld
+
+	// Grundbuch (Blatt)
+	$gb_bezirk=$row["gb_bezirk"];
+	$gb_blatt=$row["gb_blatt"];
+
+	// Buchungsstelle (Grundstueck)
+	$bu_lfd=$row["bu_lfd"];
+	$bu_ant=$row["bu_ant"];
+	$bu_art=$row["bu_art"];
+	
+	//	Namensnummer
+	$nam_lfd=$row["namnum_lfd"];
+	$nam_ant=$row["name_anteil"];
+	$nam_bes=$row["namnum_beschr"];
+	
+	// Person
+	$naname=$row["nachnameoderfirma"];
+	$vorname=$row["vorname"];
+	$gebdat=$row["geburtsdatum"];
+
+	// Adresse der Person
+	//	-- fehlt noch
+
+	// Adressen zum FS
+	if($fsgml != $fsalt) { // bei geÃ€ndertem Kennz.
+		$lage=lage_zum_fs($fsgml); // die Lage neu ermitteln
+		$fsalt=$fsgml;
+	}
+
+	// Den Ausgabe-Satz montieren aus FlurstÃŒcks-, Grundbuch- und Namens-Teil
+	$fsteil=$fs_kennz.";".$gmkgnr.";".$flurnummer.";".$flstnummer.";".$fs_flae.";".$lage.";";
+	$gbteil=$gb_bezirk.";".$gb_blatt.";".$bu_lfd.";".$bu_ant.";".$bu_art.";";
+	$namteil=$nam_lfd.";".$nam_ant.";".$nam_bes.";".$naname.";".$vorname.";".$gebdat;
+
+	// Ausgabe in CSV-Datei
+	echo "\n".$fsteil.$gbteil.$namteil;
+	$i++;
+}
+pg_free_result($res);
+if ($i == 0) {exit ("Kein Treffer fuer gml_id=".$gmlid);}
+pg_close($con);
+exit(0);
+?>
Index: /trunk/info/info/alkis/alkisbestnw.php
===================================================================
--- /trunk/info/info/alkis/alkisbestnw.php	(revision 300)
+++ /trunk/info/info/alkis/alkisbestnw.php	(revision 301)
@@ -6,8 +6,8 @@
 
 	Version:
-	17.11.2011  Parameter der Functions geÃ€ndert
-	22.11.2011  Feldname land in ax_buchungsblattbezirk geÃ€ndert
-	30.11.2011  import_request_variables
-	24.07.2012  Export CSV
+	2011-11-17  Parameter der Functions geÃ€ndert
+	2011-11-22  Feldname land in ax_buchungsblattbezirk geÃ€ndert
+	2011-11-30  import_request_variables
+	2012-07-24  Export CSV
 	2013-04-08  deprecated "import_request_variables" ersetzt
 
@@ -38,6 +38,7 @@
 	<link rel="shortcut icon" type="image/x-icon" href="ico/Grundbuch.ico">
 	<script type="text/javascript">
-	function ALKISexportGB() {window.open(<?php echo "'alkisgbexp.php?gkz=".$gkz."&gmlid=".$gmlid."'"; ?>);}
-	function ALKISexportFS() {window.open(<?php echo "'alkisgbfsexp.php?gkz=".$gkz."&gmlid=".$gmlid."'"; ?>);}
+		function ALKISexport() {
+				window.open(<?php echo "'alkisexport.php?gkz=".$gkz."&tabtyp=grundbuch&gmlid=".$gmlid."'"; ?>);
+		}
 	</script>
 	<style type='text/css' media='print'>
@@ -479,6 +480,5 @@
 		<a title="zur&uuml;ck" href='javascript:history.back()'><img src="ico/zurueck.ico" width="16" height="16" alt="zur&uuml;ck" /></a>&nbsp;
 		<a title="Drucken" href='javascript:window.print()'><img src="ico/print.ico" width="16" height="16" alt="Drucken" /></a>&nbsp;
-	 	<a title="Export Flurst&uuml;cksdaten als CSV" href='javascript:ALKISexportFS()'><img src="ico/download_fs.ico" width="32" height="16" alt="Export" /></a>&nbsp;
-		<a title="Export Grundbuchdaten als CSV" href='javascript:ALKISexportGB()'><img src="ico/download_gb.ico" width="32" height="16" alt="Export" /></a>&nbsp;
+	 	<a title="Export als CSV" href='javascript:ALKISexport()'><img src="ico/download_gb.ico" width="32" height="16" alt="Export" /></a>&nbsp;
 <!--	<a title="Seite schlie&szlig;en" href="javascript:window.close()"><img src="ico/close.ico" width="16" height="16" alt="Ende" /></a>	-->
 	</div>
Index: /trunk/info/info/alkis/alkisnamstruk.php
===================================================================
--- /trunk/info/info/alkis/alkisnamstruk.php	(revision 300)
+++ /trunk/info/info/alkis/alkisnamstruk.php	(revision 301)
@@ -33,4 +33,9 @@
 	<link rel="stylesheet" type="text/css" href="alkisauszug.css">
 	<link rel="shortcut icon" type="image/x-icon" href="ico/Eigentuemer_2.ico">
+	<script type="text/javascript">
+		function ALKISexport() {
+				window.open(<?php echo "'alkisexport.php?gkz=".$gkz."&tabtyp=person&gmlid=".$gmlid."'"; ?>);
+		}
+	</script>
 	<style type='text/css' media='print'>
 		.noprint {visibility: hidden;}
@@ -38,4 +43,5 @@
 </head>
 <body>
+
 <?php
 $con = pg_connect("host=".$dbhost." port=".$dbport." dbname=".$dbname." user=".$dbuser." password=".$dbpass);
@@ -237,6 +243,6 @@
 		<a title="zur&uuml;ck" href='javascript:history.back()'><img src="ico/zurueck.ico" width="16" height="16" alt="zur&uuml;ck" /></a>&nbsp;
 		<a title="Drucken" href='javascript:window.print()'><img src="ico/print.ico" width="16" height="16" alt="Drucken" /></a>&nbsp;
-<!--	<a title="Export als CSV" href='javascript:ALKISexport()'><img src="ico/download.ico" width="16" height="16" alt="Export" /></a>&nbsp;
-		<a title="Seite schlie&szlig;en" href="javascript:window.close()"><img src="ico/close.ico" width="16" height="16" alt="Ende" /></a>	-->
+		<a title="Export als CSV" href='javascript:ALKISexport()'><img src="ico/download.ico" width="32" height="16" alt="Export" /></a>&nbsp;
+<!-- <a title="Seite schlie&szlig;en" href="javascript:window.close()"><img src="ico/close.ico" width="16" height="16" alt="Ende" /></a>	-->
 	</div>
 </form>
Index: unk/info/info/alkis/alkisfsexp.php
===================================================================
--- /trunk/info/info/alkis/alkisfsexp.php	(revision 300)
+++ 	(revision )
@@ -1,146 +1,0 @@
-<?php
-/*	Modul alkisfsexp.php
-	CSV-Export von Flurstuecks-Daten
-	2012-07-23 krz f.j.
-	2013-04-08  deprecated "import_request_variables" ersetzt
-*/
-//import_request_variables("G"); // php 5.3 deprecated, php 5.4 entfernt
-$cntget = extract($_GET); // gmlid
-header('Content-type: application/octet-stream');
-header('Content-Disposition: attachment; filename="alkis_flurstueck_'.$gmlid.'.csv"');
-require_once("alkis_conf_location.php");
-
-// CSV-Ausgabe
-echo "Gemarkung;FS-Kennzeichen;Flaeche;Adressen;Buchungsart;GB-Bezirk;GB-Blatt;LfdNr;Anteil";
-
-// Datenbank-Verbindung
-$con = pg_connect("host=".$dbhost." port=" .$dbport." dbname=".$dbname." user=".$dbuser." password=".$dbpass);
-if (!$con) {exit("Fehler beim Verbinden der DB");}
-pg_set_client_encoding($con, LATIN1); 
-
-// FlurstÃŒcksdaten
-$sql ="SELECT f.flurnummer, f.zaehler, f.nenner, f.gemeinde, f.amtlicheflaeche, g.gemarkungsnummer, g.bezeichnung ";
-$sql.="FROM ax_flurstueck f LEFT JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer ";
-$sql.="WHERE f.gml_id= $1";
-$v = array($gmlid);
-$res = pg_prepare("", $sql);
-$res = pg_execute("", $v);
-if (!$res) {exit("Fehler bei Flurstuecksdaten");}
-if ($row = pg_fetch_array($res)) {
-	$gemkname=$row["bezeichnung"];
-	$gmkgnr=$row["gemarkungsnummer"];
-	$flurnummer=$row["flurnummer"];
-	$flstnummer=$row["zaehler"];
-	$nenner=$row["nenner"];
-	if ($nenner > 0) {$flstnummer.="/".$nenner;} // BruchNr
-	$fsbuchflae=$row["amtlicheflaeche"]; // amtliche Fl. aus DB-Feld
-} else {exit ("Kein Treffer fuer gml_id=".$gmlid);}
-pg_free_result($res);
-
-// Lagebezeichnung Mit Hausnummer
-// Mehrere Lagebezeichnungen kommen in eine Zelle der Tabelle
-$sql ="SELECT DISTINCT s.bezeichnung, l.hausnummer FROM alkis_beziehungen v ";
-$sql.="JOIN ax_lagebezeichnungmithausnummer l ON v.beziehung_zu=l.gml_id ";
-$sql.="JOIN ax_lagebezeichnungkatalogeintrag s ON l.kreis=s.kreis AND l.gemeinde=s.gemeinde AND l.lage = s.lage ";
-$sql.="WHERE v.beziehung_von= $1 AND v.beziehungsart='weistAuf' ";
-$sql.="ORDER BY s.bezeichnung, l.hausnummer;";
-$v=array($gmlid);
-$res=pg_prepare("", $sql);
-$res=pg_execute("", $v);
-if (!$res) {
-	echo "Fehler bei Lagebezeichnung mit Hausnummer\n";
-	echo $sql."\n";
-}
-$j=0;
-$lagehsnr=""; // mehrere ggf. in ein Feld
-while($row = pg_fetch_array($res)) {
-	if ($j > 0) {$lagehsnr.=", ";}
-	$sneu=$row["bezeichnung"];
-	if ($sneu == $salt) {
-		$lagehsnr.=$row["hausnummer"];
-	} else {
-		$lagehsnr.=$sneu." ".$row["hausnummer"];
-	}
-	$salt=$sneu;
-	$j++;
-}
-pg_free_result($res);
-
-$fskennz='"'.$gmkgnr.'-'.$flurnummer.'-'.$flstnummer.'"'; // in "" einschlieÃen, Excel macht sonst Datum daraus
-$csvfs="\n".$gemkname.";".$fskennz.";".$fsbuchflae.";".$lagehsnr.";"; // Buchung anhÃ€ngen
-// Ende linearer Teil (eine Zeile je FlurstÃŒck))
-
-// BUCHUNGSSTELLEN zum FS
-//  jede Buchung zu einem FS erzeugt eine neue FS-Zeile !!
-$sql ="SELECT s.gml_id, s.buchungsart, s.laufendenummer as lfd, s.zaehler, s.nenner, b.bezeichner AS bart ";
-$sql.="FROM alkis_beziehungen v "; // Bez Flurst.- Stelle.
-$sql.="JOIN ax_buchungsstelle s ON v.beziehung_zu=s.gml_id ";
-$sql.="LEFT JOIN ax_buchungsstelle_buchungsart b ON s.buchungsart = b.wert ";
-$sql.="WHERE v.beziehung_von= $1 AND v.beziehungsart= $2 ORDER BY s.laufendenummer;";
-$v = array($gmlid,'istGebucht');
-$ress = pg_prepare("", $sql);
-$ress = pg_execute("", $v);
-if (!$ress) {echo "\nKeine Buchungsstelle";}
-$bs=0; // Z.Buchungsstelle
-while($rows = pg_fetch_array($ress)) {
-	$gmls=$rows["gml_id"]; // gml b-Stelle	
-	$lfd=$rows["lfd"]; // BVNR
-
-	// BUCHUNGSBLATT zur Buchungsstelle
-	$sql ="SELECT b.bezirk, b.buchungsblattnummermitbuchstabenerweiterung as blatt, b.blattart, z.bezeichnung ";
-	$sql.="FROM alkis_beziehungen v "; // Bez. Stelle - Blatt
-	$sql.="JOIN ax_buchungsblatt b ON v.beziehung_zu=b.gml_id ";
-	$sql.="LEFT JOIN ax_buchungsblattbezirk z ON z.land=b.land AND z.bezirk=b.bezirk ";
-	$sql.="WHERE v.beziehung_von= $1 AND v.beziehungsart= $2 ";
-	$sql.="ORDER BY b.bezirk, b.buchungsblattnummermitbuchstabenerweiterung ;";
-	$v=array($gmls,'istBestandteilVon');
-	$resg=pg_prepare("", $sql);
-	$resg=pg_execute("", $v);
-	if (!$resg) {echo "\nKein Buchungsblatt";}
-	$bl=0;
-	while($rowg = pg_fetch_array($resg)) {
-		echo $csvfs.$rows["bart"].";".$rowg["bezeichnung"].";".$rowg["blatt"].";".$rows["lfd"].";";
-		if ($rowg["zaehler"] == "") {echo "1";}
-		else {
-			$zah=str_replace(".",",",$rowg["zaehler"]);
-			$nen=str_replace(".",",",$rowg["nenner"]);		
-			echo "=".$zah."/".$nen;
-		}	
-		$bl++;
-	}
-	pg_free_result($resg);
-	if ($bl == 0) {echo "\nKein Buchungsblatt gefunden.";}
-
-	// RECHT Stelle an Stelle - Kommentare siehe alkisfsnw.php
-	$sql ="SELECT s.laufendenummer as lfd, s.zaehler, s.nenner, ";
-	$sql.=" b.bezirk, b.buchungsblattnummermitbuchstabenerweiterung as blatt, z.bezeichnung, a.bezeichner AS bart ";
-	$sql.="FROM alkis_beziehungen an ";
-	$sql.="JOIN ax_buchungsstelle s ON an.beziehung_von = s.gml_id ";
-	$sql.="JOIN alkis_beziehungen v ON s.gml_id = v.beziehung_von ";
-	$sql.="JOIN ax_buchungsblatt  b ON v.beziehung_zu = b.gml_id ";
-	$sql.="LEFT JOIN ax_buchungsblattbezirk z ON z.land = b.land AND z.bezirk = b.bezirk ";
-	$sql.="LEFT JOIN ax_buchungsstelle_buchungsart a ON s.buchungsart = a.wert ";
-	$sql.="WHERE an.beziehung_zu = $1 ";
-	$sql.="AND an.beziehungsart = 'an' ";
-	$sql.="AND v.beziehungsart = 'istBestandteilVon' ";
-	$sql.="ORDER BY b.bezirk, b.buchungsblattnummermitbuchstabenerweiterung;";
-	$v = array($gmls);
-	$resan = pg_prepare("", $sql);
-	$resan = pg_execute("", $v);
-	if (!$resan) {echo "\nFehler bei weiteren Buchungsstellen";}
-	while($rowan = pg_fetch_array($resan)) {
-		echo $csvfs.$rowan["bart"].";".$rowan["bezeichnung"].";".$rowan["blatt"].";".$rowan["lfd"].";";
-		if ($rowan["zaehler"] == "") {echo "1";}
-		else {
-			$zah=str_replace(".",",",$rowan["zaehler"]);
-			$nen=str_replace(".",",",$rowan["nenner"]);		
-			echo "=".$zah."/".$nen;
-		}
-	}
-	pg_free_result($resan);
-	$bs++;
-}
-if ($bs == 0) {echo "\nKeine Buchungstelle gefunden.";}
-pg_close($con);
-exit(0);
-?>
Index: unk/info/info/alkis/alkisfsgbexp.php
===================================================================
--- /trunk/info/info/alkis/alkisfsgbexp.php	(revision 300)
+++ 	(revision )
@@ -1,152 +1,0 @@
-<?php
-/*	Modul alkisfsgbexp.php
-	CSV-Export von Grundbuch-Daten zum Flurstueck
-	Es wird die GML-ID eines FlurstÃŒcks ÃŒbergeben (analog alkisfsexp.php)
-	Dazu sollen alle verbundenen GrundbÃŒcher gesucht werden.
-	Zu diesen sollen die EigentÃŒmerdaten exportiert werden (analog alkisbestexp.php)
-
-+++ IN ARBEIT ++++  ZunÃ€chst Kopie von alkisfsexp.php
-	
-	2012-07-24 krz f.j.
-	2013-04-08  deprecated "import_request_variables" ersetzt
-*/
-//import_request_variables("G"); // php 5.3 deprecated, php 5.4 entfernt
-$cntget = extract($_GET); // gmlid
-header('Content-type: application/octet-stream');
-header('Content-Disposition: attachment; filename="alkis_flurstueck_'.$gmlid.'.csv"');
-require_once("alkis_conf_location.php");
-
-// CSV-Ausgabe
-echo "Gemarkung;FS-Kennzeichen;Flaeche;Adressen;Buchungsart;GB-Bezirk;GB-Blatt;LfdNr;Anteil";
-
-// Datenbank-Verbindung
-$con = pg_connect("host=".$dbhost." port=" .$dbport." dbname=".$dbname." user=".$dbuser." password=".$dbpass);
-if (!$con) {exit("Fehler beim Verbinden der DB");}
-pg_set_client_encoding($con, LATIN1); 
-
-// FlurstÃŒcksdaten
-$sql ="SELECT f.flurnummer, f.zaehler, f.nenner, f.gemeinde, f.amtlicheflaeche, g.gemarkungsnummer, g.bezeichnung ";
-$sql.="FROM ax_flurstueck f LEFT JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer ";
-$sql.="WHERE f.gml_id= $1";
-$v = array($gmlid);
-$res = pg_prepare("", $sql);
-$res = pg_execute("", $v);
-if (!$res) {exit("Fehler bei Flurstuecksdaten");}
-if ($row = pg_fetch_array($res)) {
-	$gemkname=$row["bezeichnung"];
-	$gmkgnr=$row["gemarkungsnummer"];
-	$flurnummer=$row["flurnummer"];
-	$flstnummer=$row["zaehler"];
-	$nenner=$row["nenner"];
-	if ($nenner > 0) {$flstnummer.="/".$nenner;} // BruchNr
-	$fsbuchflae=$row["amtlicheflaeche"]; // amtliche Fl. aus DB-Feld
-} else {exit ("Kein Treffer fuer gml_id=".$gmlid);}
-pg_free_result($res);
-
-// Lagebezeichnung Mit Hausnummer
-// Mehrere Lagebezeichnungen kommen in eine Zelle der Tabelle
-$sql ="SELECT DISTINCT s.bezeichnung, l.hausnummer FROM alkis_beziehungen v ";
-$sql.="JOIN ax_lagebezeichnungmithausnummer l ON v.beziehung_zu=l.gml_id ";
-$sql.="JOIN ax_lagebezeichnungkatalogeintrag s ON l.kreis=s.kreis AND l.gemeinde=s.gemeinde AND l.lage = s.lage ";
-$sql.="WHERE v.beziehung_von= $1 AND v.beziehungsart='weistAuf' ";
-$sql.="ORDER BY s.bezeichnung, l.hausnummer;";
-$v=array($gmlid);
-$res=pg_prepare("", $sql);
-$res=pg_execute("", $v);
-if (!$res) {
-	echo "Fehler bei Lagebezeichnung mit Hausnummer\n";
-	echo $sql."\n";
-}
-$j=0;
-$lagehsnr=""; // mehrere ggf. in ein Feld
-while($row = pg_fetch_array($res)) {
-	if ($j > 0) {$lagehsnr.=", ";}
-	$sneu=$row["bezeichnung"];
-	if ($sneu == $salt) {
-		$lagehsnr.=$row["hausnummer"];
-	} else {
-		$lagehsnr.=$sneu." ".$row["hausnummer"];
-	}
-	$salt=$sneu;
-	$j++;
-}
-pg_free_result($res);
-
-$fskennz='"'.$gmkgnr.'-'.$flurnummer.'-'.$flstnummer.'"'; // in "" einschlieÃen, Excel macht sonst Datum daraus
-$csvfs="\n".$gemkname.";".$fskennz.";".$fsbuchflae.";".$lagehsnr.";"; // Buchung anhÃ€ngen
-// Ende linearer Teil (eine Zeile je FlurstÃŒck))
-
-// BUCHUNGSSTELLEN zum FS
-//  jede Buchung zu einem FS erzeugt eine neue FS-Zeile !!
-$sql ="SELECT s.gml_id, s.buchungsart, s.laufendenummer as lfd, s.zaehler, s.nenner, b.bezeichner AS bart ";
-$sql.="FROM alkis_beziehungen v "; // Bez Flurst.- Stelle.
-$sql.="JOIN ax_buchungsstelle s ON v.beziehung_zu=s.gml_id ";
-$sql.="LEFT JOIN ax_buchungsstelle_buchungsart b ON s.buchungsart = b.wert ";
-$sql.="WHERE v.beziehung_von= $1 AND v.beziehungsart= $2 ORDER BY s.laufendenummer;";
-$v = array($gmlid,'istGebucht');
-$ress = pg_prepare("", $sql);
-$ress = pg_execute("", $v);
-if (!$ress) {echo "\nKeine Buchungsstelle";}
-$bs=0; // Z.Buchungsstelle
-while($rows = pg_fetch_array($ress)) {
-	$gmls=$rows["gml_id"]; // gml b-Stelle	
-	$lfd=$rows["lfd"]; // BVNR
-
-	// BUCHUNGSBLATT zur Buchungsstelle
-	$sql ="SELECT b.bezirk, b.buchungsblattnummermitbuchstabenerweiterung as blatt, b.blattart, z.bezeichnung ";
-	$sql.="FROM alkis_beziehungen v "; // Bez. Stelle - Blatt
-	$sql.="JOIN ax_buchungsblatt b ON v.beziehung_zu=b.gml_id ";
-	$sql.="LEFT JOIN ax_buchungsblattbezirk z ON z.land=b.land AND z.bezirk=b.bezirk ";
-	$sql.="WHERE v.beziehung_von= $1 AND v.beziehungsart= $2 ";
-	$sql.="ORDER BY b.bezirk, b.buchungsblattnummermitbuchstabenerweiterung ;";
-	$v=array($gmls,'istBestandteilVon');
-	$resg=pg_prepare("", $sql);
-	$resg=pg_execute("", $v);
-	if (!$resg) {echo "\nKein Buchungsblatt";}
-	$bl=0;
-	while($rowg = pg_fetch_array($resg)) {
-		echo $csvfs.$rows["bart"].";".$rowg["bezeichnung"].";".$rowg["blatt"].";".$rows["lfd"].";";
-		if ($rowg["zaehler"] == "") {echo "1";}
-		else {
-			$zah=str_replace(".",",",$rowg["zaehler"]);
-			$nen=str_replace(".",",",$rowg["nenner"]);		
-			echo "=".$zah."/".$nen;
-		}	
-		$bl++;
-	}
-	pg_free_result($resg);
-	if ($bl == 0) {echo "\nKein Buchungsblatt gefunden.";}
-
-	// RECHT Stelle an Stelle - Kommentare siehe alkisfsnw.php
-	$sql ="SELECT s.laufendenummer as lfd, s.zaehler, s.nenner, ";
-	$sql.=" b.bezirk, b.buchungsblattnummermitbuchstabenerweiterung as blatt, z.bezeichnung, a.bezeichner AS bart ";
-	$sql.="FROM alkis_beziehungen an ";
-	$sql.="JOIN ax_buchungsstelle s ON an.beziehung_von = s.gml_id ";
-	$sql.="JOIN alkis_beziehungen v ON s.gml_id = v.beziehung_von ";
-	$sql.="JOIN ax_buchungsblatt  b ON v.beziehung_zu = b.gml_id ";
-	$sql.="LEFT JOIN ax_buchungsblattbezirk z ON z.land = b.land AND z.bezirk = b.bezirk ";
-	$sql.="LEFT JOIN ax_buchungsstelle_buchungsart a ON s.buchungsart = a.wert ";
-	$sql.="WHERE an.beziehung_zu = $1 ";
-	$sql.="AND an.beziehungsart = 'an' ";
-	$sql.="AND v.beziehungsart = 'istBestandteilVon' ";
-	$sql.="ORDER BY b.bezirk, b.buchungsblattnummermitbuchstabenerweiterung;";
-	$v = array($gmls);
-	$resan = pg_prepare("", $sql);
-	$resan = pg_execute("", $v);
-	if (!$resan) {echo "\nFehler bei weiteren Buchungsstellen";}
-	while($rowan = pg_fetch_array($resan)) {
-		echo $csvfs.$rowan["bart"].";".$rowan["bezeichnung"].";".$rowan["blatt"].";".$rowan["lfd"].";";
-		if ($rowan["zaehler"] == "") {echo "1";}
-		else {
-			$zah=str_replace(".",",",$rowan["zaehler"]);
-			$nen=str_replace(".",",",$rowan["nenner"]);		
-			echo "=".$zah."/".$nen;
-		}
-	}
-	pg_free_result($resan);
-	$bs++;
-}
-if ($bs == 0) {echo "\nKeine Buchungstelle gefunden.";}
-pg_close($con);
-exit(0);
-?>
Index: unk/info/info/alkis/alkisgbfsexp.php
===================================================================
--- /trunk/info/info/alkis/alkisgbfsexp.php	(revision 300)
+++ 	(revision )
@@ -1,56 +1,0 @@
-<?php
-/*	Modul alkisfsexp.php
-	CSV-Export von FlurstÃŒcksdaten zu einem Grundbuch-Blatt
-	2012-07-24 krz f.j.
-	2013-04-08  deprecated "import_request_variables" ersetzt
-	
-++++ IN ARBEIT ++++   ZunÃ€chst Kopie von alkisgbexp.php
-
-	Es wird die gml_id eines Bestandes ÃŒbergeben (analog alkisgbexp.php).
-	Dazu alle darauf gebuchten FS ermitteln.
-	Dazu dann alle FS-DFaten ausgeben (analog alkisfsexp.php).	
-
-*/
-
-//import_request_variables("G"); // php 5.3 deprecated, php 5.4 entfernt
-$cntget = extract($_GET); // gmlid
-
-header('Content-type: application/octet-stream');
-header('Content-Disposition: attachment; filename="alkis_grundbuch_'.$gmlid.'.csv"');
-
-require_once("alkis_conf_location.php");
-
-// Datenbank-Verbindung
-$con = pg_connect("host=".$dbhost." port=" .$dbport." dbname=".$dbname." user=".$dbuser." password=".$dbpass);
-if (!$con) {exit("Fehler beim Verbinden der DB");}
-pg_set_client_encoding($con, LATIN1); 
-
-// Brundbuch-Blatt
-$sql ="SELECT g.buchungsblattnummermitbuchstabenerweiterung AS nr, g.blattart, "; // GB-Blatt
-$sql.=" b.bezirk, b.bezeichnung AS beznam, "; // Bezirk
-$sql.=" a.land, a.bezeichnung "; // Amtsgericht
-$sql.="FROM ax_buchungsblatt g ";
-$sql.="LEFT JOIN ax_buchungsblattbezirk b ON g.land=b.land AND g.bezirk=b.bezirk ";  // BBZ
-$sql.="LEFT JOIN ax_dienststelle a ON b.land = a.land AND b.stelle = a.stelle ";
-$sql.="WHERE g.gml_id= $1 AND a.stellenart=1000;"; // Amtsgericht
-$v = array($gmlid);
-$res = pg_prepare("", $sql);
-$res = pg_execute("", $v);
-if (!$res) {exit("Fehler bei Grundbuchdaten");}
-if ($row = pg_fetch_array($res)) {
-	$agland=$row["land"]; // Amtsgericht	
-	$agbez=$row["bezeichnung"];
-	$bezirk=$row["bezirk"]; // Bezirk
-	$beznam=$row["beznam"];
-	$blattnr=$row["nr"]; // Blatt
-	$blattart=$row["blattart"];
-} else {
-	exit("Kein Treffer fuer gml_id=".$gmlid);
-}
-//if ($blattkey == 5000) { // fikt. Blatt Keine Angaben zum Eigentum
-
-// CSV-Ausgabe
-echo "Land;Amtsgericht;Bezirk;Bezirksname;Blatt;Blattart";
-echo "\n".$agland.";".$agbez.";".$bezirk.";".$beznam.";".$blattnr.";".$blattart;
-exit();
-?>
Index: unk/info/info/alkis/alkisgbexp.php
===================================================================
--- /trunk/info/info/alkis/alkisgbexp.php	(revision 300)
+++ 	(revision )
@@ -1,43 +1,0 @@
-<?php
-/*	Modul alkisgbexp.php
-	CSV-Export von Grundbuch-Daten (Blatt)
-	2012-07-24 krz f.j.
-	2013-04-08  deprecated "import_request_variables" ersetzt
-*/
-//import_request_variables("G"); // php 5.3 deprecated, php 5.4 entfernt
-$cntget = extract($_GET); // gmlid
-header('Content-type: application/octet-stream');
-header('Content-Disposition: attachment; filename="alkis_grundbuch_'.$gmlid.'.csv"');
-require_once("alkis_conf_location.php");
-
-// DB-Verbindung
-$con = pg_connect("host=".$dbhost." port=" .$dbport." dbname=".$dbname." user=".$dbuser." password=".$dbpass);
-if (!$con) {exit("Fehler beim Verbinden der DB");}
-pg_set_client_encoding($con, LATIN1); 
-
-// GB-Blatt, Bestand
-$sql ="SELECT g.buchungsblattnummermitbuchstabenerweiterung AS nr, g.blattart, "; // GB-Blatt
-$sql.=" b.bezirk, b.bezeichnung AS beznam, a.land, a.bezeichnung "; 
-$sql.="FROM ax_buchungsblatt g ";
-$sql.="LEFT JOIN ax_buchungsblattbezirk b ON g.land=b.land AND g.bezirk=b.bezirk ";  // BBZ
-$sql.="LEFT JOIN ax_dienststelle a ON b.land = a.land AND b.stelle = a.stelle ";
-$sql.="WHERE g.gml_id= $1 AND a.stellenart=1000;"; // Amtsgericht
-$v = array($gmlid);
-$res = pg_prepare("", $sql);
-$res = pg_execute("", $v);
-if (!$res) {exit("Fehler bei Grundbuchdaten");}
-if ($row = pg_fetch_array($res)) {
-	$agland=$row["land"]; // Amtsgericht	
-	$agbez=$row["bezeichnung"];
-	$bezirk=$row["bezirk"]; // Bezirk
-	$beznam=$row["beznam"];
-	$blattnr=$row["nr"]; // Blatt
-	$blattart=$row["blattart"];
-} else {exit("Kein Treffer fuer gml_id=".$gmlid);}
-//if ($blattkey == 5000) { // fikt. Blatt Keine Angaben zum Eigentum
-
-// CSV-Ausgabe
-echo "Land;Amtsgericht;Bezirk;Bezirksname;Blatt;Blattart";
-echo "\n".$agland.";".$agbez.";".$bezirk.";".$beznam.";".$blattnr.";".$blattart;
-exit();
-?>
