1) {echo "\n

Session nicht gesetzt

";} } elseif ( !isset($_SESSION["mb_user_name"]) ) { if ($dbg > 1) {echo "\n

username nicht gesetzt

";} } else { $customer = $_SESSION["mb_user_name"]; // angemeldeter Benutzer } if ($customer == "") { // Wer bin ich? echo "

Aufruf nur aus Mapbender erlaubt.

"; return 0; } elseif ($customer == $mb_guest_user) { // in conf festgelegt echo "

Eine Anmeldung im Mapbender ist notwendig.

"; return 0; // gast-User darf nix } else { return 1; // echter User, ist erlaubt } } else { echo "\n

Die Berechtigungs-Prüfung ist falsch konfiguriert

"; return 0; // verboten } } function footer($gmlid, $link, $append) { // Einen Seitenfuß ausgeben. // Die Parameter &gkz= und &gmlid= kommen in allen Modulen einheitlich vor // Den URL-Parameter "&showkey=j/n" umschalten lassen. // $append wird angehängt wenn gefüllt. Anwendung: &eig=j bei FSNW, <yp=m/p/o bei Lage global $gkz, $showkey, $hilfeurl, $debug, $dbg, $customer; echo "\n\n"; return 0; } function UnqKatAmt($t1, $t2){ // Wenn der Datenbestand aus NBA-Verfahren mehrerer Katasterämter gemixt wurde, dann muss beim SQL-JOIN auf einige Schlüsseltabellen // zusätzlich dafür gesort werden, dass nur die Schlüssel des gleichen Katasteramtes verwendet werden. Sont bekommt man redundante Treffer. // Benötigt den Alias der zu verbindenden Tabellen. // Liefert einen String zum Einfügen hinter "JOIN .. ON". global $katAmtMix; // aus Conf if ($katAmtMix){ return "AND substr(".$t1.".gml_id,1,6) = substr(".$t2.".gml_id,1,6) "; } else { return ""; } } function ber_bs_zaehl($gmls) { // Berechtigte Buchungs-Stellen zaehlen. // Buchungstelle dienend <(Recht)an< Buchungstelle herrschend $sql ="SELECT count(sh.gml_id) AS anz FROM ax_buchungsstelle sd JOIN ax_buchungsstelle sh ON sd.gml_id=ANY(sh.an) " ."WHERE sd.gml_id= $1 AND sh.endet IS NULL AND sd.endet IS NULL;"; $v = array($gmls); // GML dienende Buchungs-Stelle $resan = pg_prepare("", $sql); $resan = pg_execute("", $v); if (!$resan) {echo "\n

Fehler bei 'berechtigte Buchungsstellen zaehlen'.

";} $rowan = pg_fetch_assoc($resan); $anz=$rowan["anz"]; pg_free_result($resan); return $anz; // Funktionswert = Anzahl der berechtigten Buchungen } function buchung_anzg($gmlbs, $eig, $jsfenster, $gml_fs, $trtyp) { // In einem FS-Nachw. EINE Buchungsstelle anzeigen. // Parameter: // $gmlbs: GML-ID der anzuzeigenden Buchungs-Stelle // $eig: Eigentümer ausgeben j/n // $jsfenster: Javascript-Funktion zum Verlassen des Feature-Info-Fensters verwenden (bool) // $gml_fs: GML-ID des Flurstücke (nur bei erstem Aufruf in einem FS-Nachweis notwendig) // $trtyp: Tabellen-Zeilen-Typ. Werte: 1="mit GS-Link", 2="ohne GS-Link", 3="ohne GS-Link +Zeile einfärben" global $gkz, $dbg, $showkey, $bartgrp, $barttypgrp, $stufe, $katAmtMix; $sqlbs="SELECT sh.gml_id AS hgml, sh.buchungsart, sh.laufendenummer as lfd, sh.zaehler, sh.nenner, sh.nummerimaufteilungsplan as nrpl, sh.beschreibungdessondereigentums as sond, " // Buchungs-Stelle herrschend ."b.gml_id AS g_gml, b.bezirk, b.buchungsblattnummermitbuchstabenerweiterung as blatt, b.blattart, z.bezeichnung, a.beschreibung AS bart, a.dokumentation AS barttitle, w.beschreibung AS blattartv " ."FROM ax_buchungsstelle sh " ."JOIN ax_buchungsblatt b ON b.gml_id=sh.istbestandteilvon " ."LEFT JOIN ax_buchungsblattbezirk z ON z.land=b.land AND z.bezirk=b.bezirk ".UnqKatAmt("z","b") ."LEFT JOIN ax_buchungsart_buchungsstelle a ON sh.buchungsart = a.wert " // entschl. Buchungsart ."LEFT JOIN ax_blattart_buchungsblatt w ON b.blattart = w.wert " // entschl. Blatt-Art ."WHERE sh.gml_id= $1 AND sh.endet IS NULL AND b.endet IS NULL AND z.endet IS NULL;"; $v = array($gmlbs); // ID dienende Buchungs-Stelle $resbs = pg_prepare("", $sqlbs); $resbs = pg_execute("", $v); if (!$resbs) { echo "\n

Fehler bei 'Buchungsstelle ausgeben'.

"; if ($dbg > 2) {echo "\n

SQL=
".htmlentities(str_replace("$1", "'".$gmlbs."'", $sqlbs), ENT_QUOTES, "UTF-8")."

";} } $gezeigt = 0; // Funktionswert default if ($dbg > 0) { $zeianz=pg_num_rows($resbs); if ($zeianz > 1){ echo "\n

Die Abfrage liefert mehr als eine (".$zeianz.") Buchung!

"; if ($dbg > 2) {echo "\n

SQL=
".htmlentities(str_replace("$1","'".$gmlid."'",$sqlbs), ENT_QUOTES, "UTF-8")."

";} } } if ($rowbs = pg_fetch_assoc($resbs)) { // EIN Treffer $blattkeyber=$rowbs["blattart"]; // Schluessel von Blatt-Art des GB if ($blattkeyber != '5000' or $dbg > 1) { // "Fiktives Blatt" nur bei Entwicklung anzeigen $gezeigt = 1; // Funktionswert nach Treffer $hgml=$rowbs["hgml"]; // GML-ID der (herrschenden) BuchungsStelle $bartkey=$rowbs["buchungsart"]; // Buchungsart Schlüssel $bart=$rowbs["bart"]; // Buchungsart Text $beznam=$rowbs["bezeichnung"]; // Bezirk $blattartber=$rowbs["blattartv"]; // Wert von Blatt-Art des GB $nrpl=$rowbs["nrpl"]; // Nr im Auft.plan $sond=$rowbs["sond"]; // Beschr. d.Sondereigentums $gbgml=$rowbs["g_gml"]; // GML-ID des Grundbuch-Blattes $blatt=ltrim($rowbs["blatt"], "0"); $lfd=ltrim($rowbs["lfd"], "0"); if ($bartkey != $bartgrp) { // Wechsel der Buchungsart $barttitle=$rowbs["barttitle"]; // Buchungsart Erklärung switch (true) { // Die Buchungsart einem Typ (Gruppierung) zuweisen case ($bartkey <= 1999): $barttyp = "E"; break; // Eigentum/Grundstück case ($bartkey >= 2000): $barttyp = "R"; break; // Grundstücksgleiches Recht, z.B. 2101 "Erbbaurecht" default: $barttyp = "E"; break; } if ($barttypgrp != $barttyp) { // Wenn der Typ wechselt, neue Überschrift in Tabelle switch ($barttyp) { // Text der Überschrift case "E": if ($eig === 'j') {$h3txt = "Buchung und Eigentum";} else {$h3txt = "Buchung";} break; case "R": $h3txt = "Grundstücksgleiche Rechte"; break; } if ($barttypgrp === "" and $gml_fs != "") { // die erste Überschrift mit ID und Umschalter echo "\n\t\n\t\t\n\t\t\t

".$h3txt."

\n\t\t"; // 1-3 echo "\n\t\t\n\t\t\t\n\t\t"; } else { echo "\n\t\n\t\t\n\t\t\t

".$h3txt."

\n\t\t\n\t\t "; // 1-4 } echo "\n\t"; $barttypgrp = $barttyp; } // ++ mehr Abstand oben zur Zeile in .css? echo "\n\t" // Buchungsart als Zwischenzeile ."\n\t\t Buchungsart:" // 1 ."\n\t\t"; // 2-3 if ($showkey) {echo "(".$bartkey.") ";} echo "".$bart."" ."" ."\n\t\t" // 4 ."\n\t"; $bartgrp=$bartkey; // Gruppe merken } // Ende Wechsel der Buchungsart echo "\n\t" // Zeile mit 4 Spalten für Buchung und Eigentümer ."\n\t\t Buchung:"; // 1 if ($showkey and $dbg > 2) {echo "
Stufe ".$stufe."
".$hgml."
";} echo "\n\t\t"; // 2-3 // innere Tabelle: Rahmen mit GB-Kennz. if ($blattkeyber == 1000) { echo "\n\t\t\t"; } else { echo "\n\t\t\t
"; // dotted } echo "\n\t\t\t" ."\n\t\t\t\t" ."\n\t\t\t\t" ."\n\t\t\t\t" ."\n\t\t\t"; if ($trtyp === 3) { // Treffer-Grundst. einfärben echo "\n\t\t\t"; } else { echo "\n\t\t\t"; } echo "\n\t\t\t\t" ."\n\t\t\t\t" ."\n\t\t\t\t" ."\n\t\t\t" ."\n\t\t\t
Bezirk"; if ($showkey) {echo "(".$blattkeyber.") ";} echo $blattartber."Lfd-Nr
"; if ($showkey) {echo "".$rowbs["bezirk"]."
";} echo $beznam."
".$blatt."".$lfd."
"; if ($rowbs["zaehler"] != "") { echo "\n\t\t\t

".$rowbs["zaehler"]."/".$rowbs["nenner"]." Anteil am Flurstück

"; } if ($nrpl != "") { echo "\n\t\t\t

Nummer ".$nrpl." im Aufteilungsplan.

"; } if ($sond != "") { echo "\n\t\t\t

Verbunden mit dem Sondereigentum: ".$sond."

"; } echo "\n\t\t"; // 2-3 echo "\n\t\t"; // 4 echo "\n\t\t\t" ."\n\t\t" // 4 ."\n\t"; if ($eig === "j") { if ($jsfenster) {$lnkclass = "imFenster";} else {$lnkclass = "";} $n = eigentuemer($gbgml, true, $lnkclass); // mit Adresse } } } pg_free_result($resbs); //if ($dbg > 1) {echo "\n

Ende function buchung_anzg(), Return = ". $gezeigt ."

";} return $gezeigt; // 1 wenn eine Buchung ausgegeben wurde } function ber_bs_anzg($gmls, $eig, $jsfenster, $gml_fs, $gsanfrd) { // In einem FS-Nachw. die berechtigten (herrschenden) Buchungsstellen anzeigen z.B. "Wohnungs-/Teileigentum". // Parameter: // $gmls: GML-ID der dienenden Buchungs-Stelle. Im ersten Durchlauf also, die BS auf der das FS gebucht ist. // $eig: Eigentümer ausgeben j/n // $jsfenster: Javascript-Funktion zum Verlassen des Feature-Info-Fensters verwenden (bool) // $gml_fs: GML-ID des Flurstücke (nur bei erstem Aufruf in einem FS-Nachweis notwendig) // $gsanfrd: In einem GS-Nachw. die GML-ID der in de URL angeforderten Buchungsstelle (-> Hervorhebung) global $dbg, $gezeigt; // sh=Buchungstelle herrschend >(Recht)an> sd=Buchungstelle dienend >istBestandteilVon> BLATT -> Bezirk $sql="SELECT sh.gml_id AS hgml, sh.buchungsart, sh.laufendenummer as lfd, sh.zaehler, sh.nenner, sh.nummerimaufteilungsplan as nrpl, sh.beschreibungdessondereigentums as sond, " ."b.gml_id AS g_gml, b.bezirk, b.buchungsblattnummermitbuchstabenerweiterung as blatt, b.blattart " ."FROM ax_buchungsstelle sh JOIN ax_buchungsblatt b ON b.gml_id=sh.istbestandteilvon " ."WHERE $1 = ANY(sh.an) AND sh.endet IS NULL AND b.endet IS NULL " ."ORDER BY b.bezirk, b.buchungsblattnummermitbuchstabenerweiterung, sh.laufendenummer;"; $v = array($gmls); // ID dienende BuchungsStelle $resber = pg_prepare("", $sql); $resber = pg_execute("", $v); if (!$resber) { echo "\n

Fehler bei 'berechtigte Buchungsstellen'.

"; if ($dbg > 2) {echo "\n

SQL=
".htmlentities(str_replace("$1", "'".$gmls."'", $sql), ENT_QUOTES, "UTF-8")."

";} } $an=0; $verfolg=array(); // Ein (zunächst leeres) Array für weitere GML-IDs anlegen while($rowan = pg_fetch_assoc($resber)) { // Loop durch Result von berechtigte BS $hgml=$rowan["hgml"]; // GML-ID der berechtigten Buchungs-Stelle if ($hgml === $gsanfrd) { $trtyp=3; // einfärben, o. Lnk. } else { if ($gezeigt) { $trtyp=2; // ohne Link auf GS } else { // Wenn Stufe 1 "Fiktives Blatt" war, welches ausgeblendet wurde, dann auf Stufe 2 einen GS-Link ausgeben $trtyp=1; // mit Link auf GS } } $gezeigt2=buchung_anzg($hgml, $eig, $jsfenster, $gml_fs, $trtyp); // Die herrschende Buchung anzeigen wenn nicht fiktiv $an++; $weitere=ber_bs_zaehl($hgml); if ($weitere > 0) { // gibt es WEITERE berechtigte Buchungen dazu? $verfolg[] = $hgml; // neuen Wert für weitere Verfolgung in Array anfügen } } pg_free_result($resber); return $verfolg; // weitere zu verfolgende GML-ID zurück geben } function kurz_namnr($lang) { // Namensnummer kürzen. Nicht benötigte Stufen der Dezimalklassifikation abschneiden $kurz=str_replace(".00","",$lang); // leere Stufen (nur am Ende) $kurz=str_replace("0000","",$kurz); // ganz leer (am Anfang) $kurz=ltrim($kurz, "0"); // fuehr. Nullen $kurz=str_replace(".0",".",$kurz); // fuehr. Null jeder Stufe $kurz=rtrim($kurz); // Leerzeichen hinten // echo "/n

lang='".$lang."'

/n

kurz='".$kurz."'

"; return $kurz; } function bnw_bszeile_h() { /* Bestandsnachweis - Buchungs-Stellen-Zeile ausgeben - herrschend. Die GB-Daten hierzu stehen bereits im Kopf und bleiben in der Tab. leer */ global $dbg, $gkz, $showkey, $trclass, $lfdnr, $bartkey, $bart, $bartstory, $anteil; $bvnr=str_pad($lfdnr, 4, "0", STR_PAD_LEFT); echo "\n" ."\n\t".$bvnr."" // Sprungmarke=BVNR auf dem GB-Blatt ."\n\t"; if ($showkey) {echo "".$bartkey." ";} echo $bart."" ."\n\t".$anteil."" ."\n\t " ."\n\t " ."\n\t " ."\n\t " ."\n\t \n"; } function bnw_bszeile_d($bezkey, $beznam, $blatt, $blattartkey, $blattart, $lfdnran, $gbgml, $gml_bsan, $ebene, $und) { /* Bestandsnachweis - Buchungsstellen-Zeile ausgeben - dienend Eine Folge-Zeile für eine dienende Buchung ausgeben. */ global $gkz, $showkey, $trclass, $bartkey, $bart, $bartstory, $anteil; $bvnr=str_pad($lfdnran, 4, "0", STR_PAD_LEFT); $filler=str_repeat(" ", $ebene - 2); // 3 und 4 Einrücken if ($und){$filler.="und ";}; // Unterscheidung Hierarchie (Ebene wechselt) von Liste (gleiche Ebene) echo "\n" ."\n\t".$filler."an" ."\n\t"; // Sp.2 Buchungsart if ($showkey) {echo "".$bartkey." ";} echo $bart."" ."\n\t".$anteil.""; // Sp.3 Anteil // Sp.4 GB-Bezirk echo "\n\t"; if ($showkey) {echo "".$bezkey." ";} echo htmlentities($beznam, ENT_QUOTES, "UTF-8") ."" ."\n\t".$blatt."" // Sp.5 ."\n\t".$bvnr."" // Sp.6 ."\n\t"; echo "\n\t\n\t\t" ."\n\t\n"; } function bnw_bsdaten($gml_h, $ebene) { /* Bestandsnachweis - Buchungsstellen-Daten "dienende" Buchungsstellen suchen. Miteigentumsanteil, Erbbaurecht usw. Return: gml_id der dienenden Buchungsstelle wenn gefunden? Sonst Leerstring */ global $dbg, $bartkey, $bart, $bartstory, $anteil; // dann "dienende" Buchungsstellen // sh=herrschend sd=dienend // ax_buchungsstelle >zu> ax_buchungsstelle (des gleichen Blattes) // ax_buchungsstelle >an> ax_buchungsstelle (anderes Blatt, z.B Erbbaurecht an) // - "zu" kommt in der Praxis (NRW) nicht vor, wird hier nicht berücksichtigt if ($ebene > 5) {echo "\n

Ungewöhnlich tiefe Schachtelung ".$ebene." der Buchungs-Stellen.

";} $sql ="SELECT sd.gml_id, sd.buchungsart, sd.zaehler, sd.nenner, sd.laufendenummer AS lfd, sd.beschreibungdesumfangsderbuchung AS udb, " ."sd.nummerimaufteilungsplan AS nrap, sd.beschreibungdessondereigentums AS sond, " ."wb.beschreibung AS bart, wb.dokumentation, " ."b.gml_id as gbgml, b.bezirk, b.buchungsblattnummermitbuchstabenerweiterung AS blatt, b.blattart, " ."bb.beschreibung AS blattartv, z.bezeichnung AS beznam " ."FROM ax_buchungsstelle sh " ."JOIN ax_buchungsstelle sd ON sd.gml_id=ANY(sh.an) " ."JOIN ax_buchungsblatt b ON b.gml_id=sd.istbestandteilvon " ."LEFT JOIN ax_buchungsart_buchungsstelle wb ON sd.buchungsart = wb.wert " ."LEFT JOIN ax_buchungsblattbezirk z ON b.land=z.land AND b.bezirk=z.bezirk ".UnqKatAmt("b","z") ."LEFT JOIN ax_blattart_buchungsblatt bb ON b.blattart = bb.wert " ."WHERE sh.gml_id= $1 AND sh.endet IS NULL AND sd.endet IS NULL AND b.endet IS NULL AND z.endet IS NULL " ."ORDER BY sd.laufendenummer;"; $v=array($gml_h); // gml_id "herrschende" B-Stelle $resan=pg_prepare("", $sql); $resan=pg_execute("", $v); if (!$resan) { echo "\n

Fehler bei 'dienende Buchungsstelle'.

"; if ($dbg > 2) {echo "\n

SQL=
".htmlentities(str_replace("$1", "'".$gml_bs."'", $sql), ENT_QUOTES, "UTF-8")."

";} } $zeianz=pg_num_rows($resan); // Zeilen-Anzahl = Returnwert //if ($dbg > 0) {echo "\n

Auf Ebene ".$ebene.": Anzahl diennende Buchungs-Stellen = ".$zeianz.".

";} $und = false; // mehrfaches "Recht an" auf gleicher Ebene while($row= pg_fetch_assoc($resan)) { $gml_bsan=$row["gml_id"]; // id der dien. BS $blatt=ltrim($row["blatt"], "0"); // als Global-Var zur Sub-Function: $bartkey=$row["buchungsart"]; $bart=$row["bart"]; // Buchungsart, entschlüsselt $bartstory=htmlentities($row["dokumentation"], ENT_QUOTES, "UTF-8"); if ($row["zaehler"] == "") {$anteil = "";} else {$anteil = $row["zaehler"]."/".$row["nenner"];} // Zeile ausgeben Buchungsstelle dienend bnw_bszeile_d($row["bezirk"], $row["beznam"], $blatt, $row["blattart"], $row["blattartv"], $row["lfd"], $row["gbgml"], $gml_bsan, $ebene, $und); $und = true; if ($row["nrap"] != "") { // Nr im Auft.Plan echo "\n\n\tNummer ".$row["nrap"]." im Aufteilungsplan.\n"; } if ($row["sond"] != "") { // Sondereigentumsbeschreibung echo "\n\n\tVerbunden mit dem Sondereigentum an: ".$row["sond"]."\n"; } // Rekursiver Aufruf der gleichen Function, weitere Ebene dienend? $tiefer = bnw_bsdaten($gml_bsan, ($ebene + 1)); If ($tiefer == 0) { // Wenn nicht, dann kann es Flurstücke dazu geben $fscnt= bnw_fsdaten($gml_bsan, false); // Flurstücksdaten } } pg_free_result($resan); return $zeianz; } function bnw_fsdaten($gml_bs, $mit_buchung_link) { /* Bestandsnachweis - Flurstücksdaten Die Tabellenzeilen mit den Flurstücksdaten zu EINER Buchungsstelle im Bestandsnachweis ausgeben. Die Funktion wird entweder aufgerufen für die Buchungen direkt auf dem GB (Normalfall) oder bei Erbbaurecht für die mit "an" verknüpften Buchungsstellen der untersten Ebene (dienende Buchung). Der Tabellenkopf wird im aufrufenden Programm ausgegeben. Return: Anzahl der ausgegebenen Flurstücke */ global $dbg, $gkz, $showkey, $filtkreis, $filtgem, $trclass, $katAmtMix, $lfdnr, $altlfdnr, $bartkey, $bart, $bartstory, $anteil; $sql="SELECT g.gemarkungsnummer, g.bezeichnung, f.gml_id, f.flurnummer, f.zaehler, f.nenner, f.amtlicheflaeche " ."FROM ax_flurstueck f LEFT JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer ".UnqKatAmt("f","g") ."WHERE f.endet IS NULL AND g.endet IS NULL AND f.istgebucht = $1 "; if ($filtgem === '') { // ungefiltert $v=array($gml_bs); } else { $sql.="AND f.gemeindezugehoerigkeit_kreis = $2 AND f.gemeindezugehoerigkeit_gemeinde = $3 "; // Zuständiges Gebiet $v=array($gml_bs, $filtkreis, $filtgem); } $sql.="ORDER BY f.gemarkungsnummer, f.flurnummer, f.zaehler, f.nenner;"; $resf = pg_prepare("", $sql); $resf = pg_execute("", $v); if (!$resf) {echo "\n

Fehler bei Flurstück

";} $zeianz=pg_num_rows($resf); while($rowf = pg_fetch_assoc($resf)) { $fskenn=$rowf["zaehler"]; if ($rowf["nenner"] != "") { // Bruch $fskenn.="/".$rowf["nenner"]; } $flae=number_format($rowf["amtlicheflaeche"],0,",",".") . " m²"; echo "\n"; // eine Zeile je Flurstueck // Sp. 1-3 der Tab. Daten aus Buchungsstelle, nicht aus FS if($lfdnr === $altlfdnr) { // gleiches Grundstück, leer lassen echo "\n\t " ."\n\t " ."\n\t "; } else { // Sprungmarke, BVNR $bvnr=str_pad($lfdnr, 4, "0", STR_PAD_LEFT); echo "\n\t"; // Sprungmarke echo "".$bvnr."" ."\n\t"; echo "\n\t"; // Buchungsart if ($showkey) {echo "".$bartkey." ";} echo $bart; echo "" ."\n\t "; // Anteil $altlfdnr=$lfdnr; } // Sp. 4-7 aus Flurstück echo "\n\t"; if ($showkey) {echo "".$rowf["gemarkungsnummer"]." ";} echo $rowf["bezeichnung"]."" ."\n\t".$rowf["flurnummer"]."\n\t".$fskenn."" ."\n\t".$flae.""; echo "\n\t\n\t\t\n\t\n"; } pg_free_result($resf); return $zeianz; } function eigentuemer($gmlid, $mitadresse, $lnkclass) { // Tabelle mit Eigentuemerdaten zu einem Grundbuchblatt ausgeben // Sp.1="Eigentümer" Sp.2=NamNr, Sp.3=Name/Adresse, Sp.4=Link // Parameter: // $gmlid = ID GB-Blattes // $mitadresse = Option (true/false) ob die Adresszeile ausgegeben werden soll // Return = Anzahl Namensnummern // Schleife 1: N a m e n s n u m m e r // Beziehung: ax_namensnummer >istBestandteilVon> ax_buchungsblatt global $dbg, $gkz, $showkey; if ($lnkclass == "") { $lnkvor = ""; $lnknach = ""; } else { // Link über Java-Class "imFenster" aus alkisinlayausk.php $lnkvor = "javascript:".$lnkclass."(\""; $lnknach = "\")"; } $sqln="SELECT n.gml_id, n.laufendenummernachdin1421 AS lfd, n.zaehler, n.nenner, n.artderrechtsgemeinschaft AS adr, n.beschriebderrechtsgemeinschaft as beschr, n.eigentuemerart, n.anlass, n.benennt, wn.beschreibung AS adrv, we.beschreibung AS eiartv " ."FROM ax_namensnummer n " ."LEFT JOIN ax_artderrechtsgemeinschaft_namensnummer wn ON n.artderrechtsgemeinschaft = wn.wert " ."LEFT JOIN ax_eigentuemerart_namensnummer we ON n.eigentuemerart = we.wert " ."WHERE n.istbestandteilvon= $1 AND n.endet IS NULL ORDER BY n.laufendenummernachdin1421;"; // Verknüpfungsfeld "benennt" ist leer bei "Beschrieb der Rechtsgemeinschaft". $v = array($gmlid); // GB-Blatt $resn = pg_prepare("", $sqln); $resn = pg_execute("", $v); if (!$resn) { echo "\n

Fehler bei Eigentümer

"; // kein Fehler bei Blattarten > 1000 //if ($dbg > 2) {echo "\n

SQL=
".str_replace("$1", "'".$gmlid."'", $sqln )."

";} } $n=0; // Z.NamNum. while($rown = pg_fetch_assoc($resn)) { $gmlnn=$rown["gml_id"]; $namnum=kurz_namnr($rown["lfd"]); $rechtsg=$rown["adr"]; $eiartkey=$rown["eigentuemerart"]; // Key $eiart=$rown["eiartv"]; // Value // if ($dbg > 1) {echo "\n

Eigentü:merart = '".$eiartkey."' = '".$eiart."'

";} echo "\n\t"; if($n === 0) { // erste Eigentümer-Zeile zu einer Buchung echo "\n\t\t Eigentümer:"; // 1 } else { // Folgezeile echo "\n\t\t "; // 1 } if ($rechtsg != "" ) { // Erbengemeinschaft usw. echo "\n\t\t"; // 2-3 if ($rechtsg == 9999) { // sonstiges echo "\n\t\t\t

".htmlentities($rown["beschr"], ENT_QUOTES, "UTF-8")."

"; } else { echo "\n\t\t\t

".htmlentities($rown["adrv"], ENT_QUOTES, "UTF-8")."

"; } } else { // Namensnummer echo "\n\t\t\n\t\t\t

".$namnum." 

\n\t\t" // 2 . "\n\t\t"; // 3 } //if ($rown["anlass"] > 0 ) {echo "

Anlass=".$rown["anlass"]."

";} // Andere Namensnummern? Relation: ax_namensnummer >bestehtAusRechtsverhaeltnissenZu> ax_namensnummer // Die Relation 'Namensnummer' besteht aus Rechtsverhältnissen zu 'Namensnummer' sagt aus, dass mehrere Namensnummern zu einer Rechtsgemeinschaft gehören können. // Die Rechtsgemeinschaft selbst steht unter einer eigenen AX_Namensnummer, die zu allen Namensnummern der Rechtsgemeinschaft eine Relation besitzt. // Schleife 2: P e r s o n // Beziehung: ax_person Fehler bei Person

"; if ($dbg > 2) {echo "\n

SQL=
".str_replace("$1", "'".$gmlpers."'", $sqlp)."

";} } $i=0; // cnt Person while($rowp = pg_fetch_assoc($resp)) { // Schleife weglassen: "benennt" ist KEIN Array! $diePerson=""; //++ Anrede? if ($rowp["akademischergrad"] != "") {$diePerson=$rowp["akademischergrad"]." ";} $diePerson.=$rowp["nachnameoderfirma"]; if ($rowp["vorname"] != "") {$diePerson.=", ".$rowp["vorname"];} if ($rowp["namensbestandteil"] != "") {$diePerson.=". ".$rowp["namensbestandteil"];} if ($rowp["geburtsdatum"] != "") {$diePerson.=", geb. ".$rowp["geburtsdatum"];} if ($rowp["geburtsname"] != "") {$diePerson.=", geb. ".$rowp["geburtsname"];} $diePerson=htmlentities($diePerson, ENT_QUOTES, "UTF-8"); // Umlaute echo "\n\t\t\t

".$diePerson."

\n\t\t"; // 3 - Person in Sp.3 hinter NamNum (Sp.2) echo "\n\t\t\n\t\t\t" ."\n\t\t" // 4 ."\n\t"; if ($mitadresse) { // Schleife 3: optional A d r e s s e zur Person $sqla ="SELECT a.gml_id, a.ort_post, a.postleitzahlpostzustellung AS plz, a.strasse, a.hausnummer, a.bestimmungsland " ."FROM ax_anschrift a JOIN ax_person p ON a.gml_id=ANY(p.hat) WHERE p.gml_id= $1 AND a.endet IS NULL AND p.endet IS NULL ORDER BY a.beginnt DESC LIMIT 2;"; $v = array($gmlpers); $resa = pg_prepare("", $sqla); $resa = pg_execute("", $v); if (!$resa) { echo "\n\t

Fehler bei Adressen

"; if ($dbg > 2) {echo "\n

SQL=
".str_replace("$1", "'".$gmlpers."'", $sqla)."

";} } $j=0; while($rowa = pg_fetch_assoc($resa)) { $j++; if ($j === 1) { // erste ("jüngste") Adresse anzeigen $gmla=$rowa["gml_id"]; $plz=$rowa["plz"]; // integer if($plz === 0) { $plz=""; } else { $plz=str_pad($plz, 5, "0", STR_PAD_LEFT); } $ort=htmlentities($rowa["ort_post"], ENT_QUOTES, "UTF-8"); $str=htmlentities($rowa["strasse"], ENT_QUOTES, "UTF-8"); $hsnr=$rowa["hausnummer"]; $land=htmlentities($rowa["bestimmungsland"], ENT_QUOTES, "UTF-8"); echo "\n\t" ."\n\t\t " // 1 ."\n\t\t " // 2 ."\n\t\t

"; // 3 if ($str.$hsnr != "") {echo $str." ".$hsnr."
";} if ($plz.$ort != "") {echo $plz." ".$ort;} if ($land != "" and $land != "DEUTSCHLAND") {echo ", ".$land;} echo "

" // 3 ."\n\t\t \n\t"; // 4 } else { // manchmal doppelte Angaben echo "\n\t" ."\n\t\t " // 1 ."\n\t\t " // 2 ."\n\t\t

weitere Adresse

" // 3 ."\n\t\t \n\t"; // 4 } } // Ende Loop Adresse zur Person pg_free_result($resa); } // 'keine Adresse' kann vorkommen, z.B. "Deutsche Telekom AG" $i++; // cnt Person $zaehler=$rown["zaehler"]; if ($zaehler != "") { // Anteil als eigene Tab-Zeile $zaehler=str_replace(".", ",", $zaehler); // Dezimal-KOMMA wenn dem Notar der Bruch nicht reicht $nenner=str_replace(".", ",", $rown["nenner"]); $comnt="Anteil der Berechtigten in Bruchteilen (Par. 47 GBO) an einem gemeinschaftlichen Eigentum (Grundstück oder Recht)."; echo "\n\t" ."\n\t\t " // 1 ."\n\t\t " // 2 ."\n\t\t

".$zaehler."/".$nenner." Anteil

" // 3 ."\n\t\t \n\t"; // 4 } } // End Loop Person pg_free_result($resp); if ($i === 0) { // KEINE Person. benennt ist leer. Das kommt vor hinter der Zeile "Erbengemeinschaft" und ist dann KEIN Fehler if ($dbg > 1) {echo "\n\t\t\t

Rechtsgemeinschaft = '".$rechtsg."'

";} if ($rechtsg !== '9999') { echo "\n

(Die Person mit der ID '".$gmlpers."' fehlt im Datenbestand)

"; } echo "\n\t\t \n\t"; } $n++; // cnt NamNum } // End Loop NamNum pg_free_result($resn); return $n; } function werteliste ($bez ,$sqlin) { // Eine oder mehrere Entschlüsselungen in eine Zeile ausgeben. // Dient dazu, Schlüssel-ARRAYs auflösen ohne die Zeile im JOIN mehrfach aufzulisten // Anwendung: FS-Nachweis Bodenschätzung global $dbg; if ($bez === 'e') {$tabelle = 'ax_entstehungsartoderklimastufewasserverhaeltnisse_bodensc';} elseif ($bez === 's') {$tabelle = 'ax_sonstigeangaben_bodenschaetzung';} $sql="SELECT wert, beschreibung FROM ".$tabelle." WHERE wert IN (".$sqlin.") ORDER BY wert LIMIT $1 ;"; $v = array('9'); $res = pg_prepare("", $sql); $res = pg_execute("", $v); if (!$res) { echo "\n

Fehler bei Werteliste.

"; if ($dbg > 2) {echo "\n

SQL=
".htmlentities($sql, ENT_QUOTES, "UTF-8")."

";} return; } $i=0; while($row = pg_fetch_assoc($res)) { echo " ".$row["beschreibung"]; $i++; } pg_free_result($res); if ($i === 0) { echo "(kein Treffer)"; if ($dbg > 2) {echo "\n

SQL=
".htmlentities($sql, ENT_QUOTES, "UTF-8")."

";} } return; } function fortfuehrungen($entsteh, $dbzeart, $dbzename) { // Tabelle im Kopf von Flurstück und FS-Historie. 2 Z./Sp. Entstehung/Fortführung // Parameter: Die DB-Spalten "zeitpunktderentstehung", "zeigtaufexternes_art" und "zeigtaufexternes_name" global $dbg, $showkey; // if ($dbg > 2) {echo "

function fortfuehrungen
1: ".$dbzeart."
2: ".$dbzename."

";} echo "\n\t" // FS-Daten 2 Spalten ."\n\t\t\n\t\t\t" ."\n\t\t\t\n\t\t"; echo "\n\t" ."\n\t\t\t" ."\n\t\t\t" ."\n\t\t" ."\n\t
Entstehung".$entsteh."
"; $arrart=explode(",", trim($dbzeart, "{}")); foreach($arrart AS $artval) { // Zeile für jedes Element $artval=trim($artval, '"'); // ibR: {"Entstehung des Flurstücks/5200","Letzte Fortführung des Flurstücks/5300",urn:adv:fachdatenverbindung:AA_Antrag} // AED: {http://geoportal.kreis-herford.de/alkis/alkis.html#5200,http://geoportal.kreis-herford.de/alkis/alkis.html#5300,urn:adv:fachdatenverbindung:AA_Antrag} $artpos=strpos($artval, '#'); if ($artpos > 0) { // AED $artkey=substr($artval, $artpos + 1); switch ($artkey) { // keine Schlüsseltabelle? case '5100': $arttxt="Grundstückshinweis (aus ALB-Historie)"; break; case '5200': $arttxt="Entstehung des Flurstücks"; break; case '5300': $arttxt="Letzte Fortführung des Flurstücks"; break; default: $arttxt=$artval; } if ($showkey) {echo "".$artkey." ";} echo $arttxt."
"; } else { $artpos=strpos($artval, '/'); if ($artpos > 0) { // ibR $artkey=substr($artval, $artpos + 1); $arttxt=substr($artval, 0, $artpos); if ($showkey) {echo "".$artkey." ";} echo $arttxt."
"; } } } echo "
"; $arrname=explode(",", trim($dbzename, "{}")); foreach($arrname AS $val) { echo trim($val, '"')."
"; } echo "
"; } function fskenn_dbformat ($fskennz) { // Erzeugt, wenn notwendig, aus dem Bindetrich-getrennten Flurstückskennzeichen "llgggg-fff-nnnn/zz.nn" oder "gggg-ff-nnn/zz" // das ALKIS-DB-interne Format des Flurstückskennzeichens. global $defland; $arr=explode("-", $fskennz, 4); // zerlegen $zgemkg=trim($arr[0]); if (strlen($zgemkg) === 20 and !isset($arr[1])) { $fskzdb=$zgemkg; // ist schon Datenbank-Feldformat } else { // Das Kennzeichen auseinander nehmen. if (strlen($zgemkg) === 6) { $land=substr($zgemkg, 0, 2); $zgemkg=substr($zgemkg, 2, 4); } else { // kein schöner Land .. $land=$defland; // Default-Land aus config } $zflur=str_pad($arr[1], 3 , "0", STR_PAD_LEFT); // Flur-Nr $zfsnr=trim($arr[2]); // Flurstücke-Nr $zn=explode("/", $zfsnr, 2); // Bruch? $zzaehler=str_pad(trim($zn[0]), 5 , "0", STR_PAD_LEFT); if (isset($zn[1])) { $znenner=trim($zn[1]); } else { $znenner=""; } if (trim($znenner, " 0.") === "") { // kein Bruch oder nur Nullen $znenner="____"; // in DB-Spalte mit Tiefstrich aufgefüllt } else { $zn=explode(".", $znenner, 2); // .00 wegwerfen $znenner=str_pad($zn[0], 4 , "0", STR_PAD_LEFT); } // die Teile stellengerecht wieder zusammen setzen $fskzdb=$land.$zgemkg.$zflur.$zzaehler.$znenner.'__'; // FS-Kennz. Format Datenbank } return $fskzdb; } ?>