0 AND $len < 8) { if (trim($zblatt, "0..9 ") == "") { // Normalfall: nur Zahlen (und Blank)) $zblattn= rtrim(ltrim($zblatt, "0"), " "); $zblattz=""; } else { // Sonderfall: Zusatz-Buchstabe am Ende $zblattn=substr($zblatt,0,$len-1); $zblattz=strtoupper(substr($zblatt,$len-1,1)); if ((trim($zblattn, "0..9") == "") and (trim($zblattz, "A..Z") == "")) { $zblattn= ltrim($zblattn, "0"); // ohne fuehrende Nullen } else { echo "

"; return 9; } } if ($zbvnr == "") { return 3; // Such BLATT } elseif (is_ne_zahl($zbvnr)) { // $zbvnr=ltrim($zbvnr,"0"); // DB-Format ist integer // Vorsicht, Wert "0" ist moeglich und gueltig return 4; // Such Grundstueck } else { echo "

"; return 9; } } else { echo "

"; return 9; } } } function ListAG($liste_ag) { // Amtsgerichte (Grundbuch) auflisten, dazu als Filter eine AG-Liste aus conf global $con, $gkz, $gemeinde, $epsg, $debug, $gbkennz; $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 ;"; $res = pg_prepare("", $sql); $res = pg_execute("", array($linelimit)); if (!$res) { echo "\n

Fehler bei Amtsgerichte

"; if ($debug >= 3) {echo "\n

".$sql."

";} return 0; } $cnt = 0; while($row = pg_fetch_array($res)) { // Loop AG $anr=$row["stelle"]; $ag=htmlentities($row["ag"], ENT_QUOTES, "UTF-8"); echo "\n
"; echo "\n\t\tAmtsgericht "; echo "AG "; echo $ag." (".$anr.")"; echo "\n
"; $cnt++; } if($cnt == 0){ // falsch configuriert! echo "\n

Kein Amtsgericht aus Liste ".$$liste_ag.".

"; } elseif ($cnt >= $linelimit) { echo "\n

... und weitere

"; } return 0; } function ListGBBez($liste_ag, $mit_ag) { // Grundbuch-Bezirke auflisten. global $con, $gkz, $gemeinde, $epsg, $debug, $gbkennz; $linelimit=70; $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 a.stelle IN (".$liste_ag.") AND a.stellenart = 1000 "; // Amtsgericht aus Liste $sql.="ORDER BY g.bezeichnung LIMIT $1 ;"; $res = pg_prepare("", $sql); $res = pg_execute("", array($linelimit)); if (!$res) { echo "\n

Fehler bei Grundbuch-Bezirk

"; if ($debug >= 3) {echo "\n

".$sql."

";} return 0; } $cnt = 0; while($row = pg_fetch_array($res)) { // Loop B E Z I R K $gnam=htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8"); $gnr=$row["bezirk"]; $ag=htmlentities($row["ag"], ENT_QUOTES, "UTF-8"); $anr=$row["stelle"]; echo "\n
"; echo "\n\t\tGemkg "; echo "Bezirk "; echo $gnam." (".$gnr.")"; if ($mit_ag) { echo " AG ".$ag.""; } echo "\n
"; $cnt++; } if($cnt == 0){ // falsch configuriert echo "\n

Kein Grundbuchbezirk zu den Amtsgerichten ".$liste_ag.".

"; } elseif ($cnt >= $linelimit) { echo "\n

... und weitere

"; } return 0; } function SuchGBBezName() { // Grundbuch-Bezirk suchen nach Name(-nsanfang) global $con, $gkz, $gemeinde, $debug, $gbkennz; $linelimit=50; $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.="ORDER BY g.bezeichnung LIMIT $2 ;"; if ( $gbkennz == "") { $match = "%"; } else { if(preg_match("/\*/",$gbkennz)){ $match = trim(preg_replace("/\*/i","%", strtoupper($gbkennz))); } else { $match = trim($gbkennz)."%"; } } $v = array($match, $linelimit); $res = pg_prepare("", $sql); $res = pg_execute("", $v); if (!$res) { echo "\n

Fehler bei Grundbuch-Bezirk

"; if ($debug >= 3) {echo "\n

".$sql."

";} return 0; } $cnt = 0; // Loop B E Z I R K while($row = pg_fetch_array($res)) { $gnam=htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8"); $gnr=$row["bezirk"]; $ag=htmlentities($row["ag"], ENT_QUOTES, "UTF-8"); $anr=$row["stelle"]; echo "\n
"; echo "\n\t\tGemkg "; echo "Bezirk "; echo $gnam." (".$gnr.")"; echo " AG ".$ag.""; echo "\n
"; $cnt++; } if($cnt == 0){ echo "\n

Kein Grundbuchbezirk.

"; } elseif ($cnt >= $linelimit) { echo "\n

... und weitere

"; } elseif ($cnt == 1) { return $gnr; // Wenn eindeutig, gleich weiter } return 0; } function EinBezirk($showParent) { // Kennzeichen bestehend nur aus GB-Bezirk-Schlüssel wurde eingegeben global $con, $gkz, $gemeinde, $epsg, $debug, $zgbbez, $auskpath; $linelimit=250; // max. Blatt je Bezirk // Dies linelimit ist nicht ausreichend fuer alle Blaetter eines Bezirks, aber ... // Wenn man die Blatt-Nr nicht kennt, kommt man hier sowieso nicht weiter. // Es nutzt also nichts, hier Tausende Nummern aufzulisten. if ($showParent) { $sql ="SELECT a.stelle, a.bezeichnung AS ag, g.bezeichnung FROM ax_buchungsblattbezirk g "; $sql.="JOIN ax_dienststelle a ON g.stelle=a.stelle "; $sql.="WHERE g.bezirk= $1 ;"; $v=array($zgbbez); $res=pg_prepare("", $sql); $res=pg_execute("", $v); if (!$res) { echo "\n

Fehler bei Brundbuchbezirk.

"; if ($debug >= 3) {echo "\n

".$sql."

";} } $zgmk=0; while($row = pg_fetch_array($res)) { $gnam=htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8"); $gnr=$row["bezirk"]; $ag=htmlentities($row["ag"], ENT_QUOTES, "UTF-8"); $anr=$row["stelle"]; $zgmk++; } if ($zgmk == 0) { echo "\n
"; echo "\n\t\t

Bez."; echo " Bezirk ".$zgbbez." ist unbekannt.

"; echo "\n
"; return; } // AG-Knoten davor setzen echo "\n
"; echo "\n\t\tAmtsgericht "; echo "AG "; echo $ag." (".$anr.")"; echo "\n
"; echo "\n
"; echo "\n\t\tBez. "; echo ""; echo $gnam." (".$zgbbez.")"; // alternativ AG-Link hinter dem Bezirk // echo " des AG ".$ag.""; echo "\n
"; } $sql ="SELECT b.gml_id, b.buchungsblattnummermitbuchstabenerweiterung AS blatt FROM ax_buchungsblatt b "; $sql.="WHERE b.bezirk= $1 ORDER BY b.buchungsblattnummermitbuchstabenerweiterung LIMIT $2 ;"; $v=array($zgbbez, $linelimit); $res=pg_prepare("", $sql); $res=pg_execute("", $v); if (!$res) { echo "\n

Fehler bei Bezirk.

"; if ($debug >= 3) {echo "\n

".$sql."

";} } $cntbl=0; // Counter Blatt/Bezirk // Loop B L A T T while($row = pg_fetch_array($res)) { $blatt=$row["blatt"]; $blattd=ltrim($blatt, "0"); $gml=$row["gml_id"]; echo "\n
"; echo "\n\t"; echo "\n\t\tBlatt"; echo "\n\t "; echo "Blatt  ".$blattd." "; echo "\n
"; $cntbl++; } if($cntbl == 0) { echo "\n

Kein Blatt im Bezirk.

"; } else { if($cntbl >= $linelimit) { echo "\n

... und weitere

"; echo "\n

Geben sie ein: '".$zgbbez."-999A'
wobei '999A' = gesuchtes GB-Blatt

"; } } return; } function gml_blatt() { // Kennzeichen "Bezirk + Blatt" eingegeben. Dazu die gml_id des Blattes ermitteln. global $con, $gkz, $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 "; if ($zblattz == "") { // Ohne Buchstabenerweiterung: Formate '123','000123 ','0000123' $sql.="IN ('".$zblattn."','".str_pad($zblattn, 6, "0", STR_PAD_LEFT)." ','".str_pad($zblattn, 7, "0", STR_PAD_LEFT)."');"; } else { // Mit Buchstabenerweiterung: '000123A' $sql.="='".str_pad($zblattn, 6, "0", STR_PAD_LEFT).$zblattz."';"; } $v=array($zgbbez); $res=pg_prepare("", $sql); $res=pg_execute("", $v); if (!$res) { echo "\n

Fehler bei Blatt (Kennzeichen).

"; return; } $cntbl=0; // Counter Blatt while($row = pg_fetch_array($res)) { $bl_gml=$row["gml_id"]; $zblatt=$row["blatt"]; // das tatsaechliche Format (mit/ohne fuehrende 0) $cntbl++; } if($cntbl == 0) { echo "\n

Grundbuchblatt '".$zgbbez."-".$zblatt."' nicht gefunden.

"; } elseif($cntbl == 1) { return $bl_gml; } return; } function EinBlatt($showParent) { // Kennzeichen Bezirk + Blatt wurde eingegeben global $con, $gkz, $debug, $gemeinde, $epsg, $auskpath, $zgbbez, $zblatt, $zblattn, $zblattz, $gblatt, $zbvnr; if ($showParent) { echo "\n
"; echo "\n\t\tBez. "; echo "Bezirk "; echo $zgbbez.""; // Key ist bekannt. Sollte man sich die Muehe machen, Namen und Amtsgericht zu ermitteln? echo "\n
"; echo "\n
"; echo "\n\t"; echo "\n\t\tBlatt"; echo "\n\t "; echo "Blatt  ".$zblattn.$zblattz." "; echo "\n
"; } // Blatt -> B u c h u n g s s t e l l e $sql ="SELECT s.gml_id, s.laufendenummer AS lfd FROM ax_buchungsstelle s "; $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.="WHERE v.beziehungsart='istBestandteilVon' AND b.gml_id= $1 ORDER BY s.laufendenummer;"; // +++ Buchungen ohne FLST weglassen? // +++ Counter FLST ausgeben, Buchungen mit 0 weglassen $v=array($gblatt); $res=pg_prepare("", $sql); $res=pg_execute("", $v); if (!$res) { echo "\n

Fehler bei Blatt.

"; if ($debug >= 3) {echo "\n

".$sql."

";} } $cntbu=0; // Counter Buchung/Blatt while($row = pg_fetch_array($res)) { $bs_gml=$row["gml_id"]; $lfd=$row["lfd"]; echo "\n
"; echo "\n\t\tGS "; echo "Buchung  ".$lfd." "; echo "\n
"; $cntbu++; } if($cntbu == 0) { echo "\n

Keine Buchung gefunden.

"; } elseif($cntbu == 1) { $zbvnr=$lfd; // mit dieser BVNR gleich weiter machen // Blatt zerteilen (benoetigt in gml_buchungsstelle) if (trim($zblatt, "0..9") == "") { // Normalfall: nur Zahlen $zblattn= ltrim($zblatt, "0"); $zblattz=""; } else { // Sonderfall: Zusatz-Buchstabe am Ende $zblattn=ltrim(substr($zblatt,0,$len-1), "0"); // ohne fuehrende Nullen $zblattz=strtoupper(substr($zblatt,$len-1,1)); } } return $cntbu; } function gml_buchungsstelle() { // Kennzeichen "Bezirk + Blatt + BVNR" eingegeben. Dazu die gml_id der Buchungsstelle ermitteln. global $con, $gkz, $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 "; if ($zblattz == "") { // Ohne Buchstabenerweiterung //Formate '123','000123 ','0000123' $sql.="IN ('".$zblattn."','".str_pad($zblattn, 6, "0", STR_PAD_LEFT)." ','".str_pad($zblattn, 7, "0", STR_PAD_LEFT)."')"; } else { // Mit Buchstabenerweiterung: '000123A' $sql.="='".str_pad($zblattn, 6, "0", STR_PAD_LEFT).$zblattz."'"; } $sql.=" AND s.laufendenummer= $2 ;"; $v=array($zgbbez, $zbvnr); $res=pg_prepare("", $sql); $res=pg_execute("", $v); if (!$res) { echo "\n

Fehler bei Buchungsstelle (Kennzeichen).

"; return; } $zbs=0; while($row = pg_fetch_array($res)) { $bs_gml=$row["gml_id"]; $zbs++; } if($zbs == 0) { echo "\n

Buchung ".$zgbbez."-".$zblattn.$zblattz."-".$zbvnr." nicht gefunden.

"; return; } elseif($zbs > 1) { // nur TEST echo "\n

Buchungsstelle mehrfach gefunden.

"; return; } else { return $bs_gml; } } function EinGrundstueck($showParent) { // Die gml_id der Buchungsstelle ist bekannt. global $con, $gkz, $debug, $gemeinde, $epsg, $scalefs, $epsg, $auskpath, $gbuchung, $zgbbez, $zblatt, $zblattn, $zblattz, $zbvnr, $gfilter; if ($showParent) { // wenn Kennzeichen bekannt ist, dann auch Blatt ausgeben if (isset($zgbbez) and isset($zblatt)) { echo "\n
"; echo "\n\t\tBez. "; echo ""; echo "Bezirk ".$zgbbez.""; // Key ist bekannt. Sollte man sich die Muehe machen, Namen und Amtsgericht zu ermitteln? // ++++ Namen als &bez= übermitteln? echo "\n
"; echo "\n
"; echo "\n\t\tBlatt "; echo "Blatt  ".$zblattn.$zblattz." "; echo "\n
"; } else { echo "

Kennzeichen Bezirk und Blatt nicht gesetzt

"; } echo "\n
"; echo "\n\t\tGS "; echo "Buchung  ".$zbvnr." "; echo "\n
"; } // +++ Ermitteln anderer Buchungsstellen mit Rechten an dieser // +++ Ermitteln anderer Buchungsstellen wo diese Rechte hat // +++ Filter "Gemeinde" berücksichtigt!! Wenn gesetzt. // Buchungsstelle -> Flurstueck $sql ="SELECT t.gemeinde, g.bezeichnung, f.gml_id, f.flurnummer, f.zaehler, f.nenner, "; if($epsg == "25832") { // Transform nicht notwendig $sql.="x(st_Centroid(f.wkb_geometry)) AS x, "; $sql.="y(st_Centroid(f.wkb_geometry)) AS y "; } else { $sql.="x(st_transform(st_Centroid(f.wkb_geometry),".$epsg.")) AS x, "; $sql.="y(st_transform(st_Centroid(f.wkb_geometry),".$epsg.")) AS y "; } $sql.="FROM ax_gemarkung g "; $sql.="JOIN ax_flurstueck f ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer "; $sql.="JOIN alkis_beziehungen v ON f.gml_id=v.beziehung_von "; $sql.="LEFT JOIN gemeinde_gemarkung t ON g.gemarkungsnummer=t.gemarkung "; $sql.="WHERE v.beziehungsart='istGebucht' AND v.beziehung_zu= $1 "; // id buchungsstelle $sql.="ORDER BY f.gemarkungsnummer, f.flurnummer, f.zaehler, f.nenner;"; $v=array($gbuchung); $res=pg_prepare("", $sql); $res=pg_execute("", $v); if (!$res) { echo "\n

Fehler bei Buchungsstelle (gml).

"; if ($debug >= 3) {echo "\n

".$sql."

";} } $zfs=0; while($row = pg_fetch_array($res)) { $fs_gml=$row["gml_id"]; $gemei=$row["gemeinde"]; $gmkg=$row["bezeichnung"]; $flur=$row["flurnummer"]; $fskenn=$row["zaehler"]; if ($row["nenner"] != "") {$fskenn.="/".$row["nenner"];} // Bruchnummer $x=$row["x"]; $y=$row["y"]; if($gemeinde > 0 and $gemeinde != $gemei and $gfilter == 1) { // ex-territorial // +++ Wie Abgleich mit Filter=Gemeinde-Liste? Als Array aufbereiten? if ($debug >= 2) {echo "

Gemkg ".$gmkg." liegt in Gemeinde '".$gemei."' nicht '".$gemeinde."'

";} echo "\n
"; echo "\n\t\tFS (".$gmkg." ".$flur."-".$fskenn." )"; echo "\n
"; } else { echo "\n
"; echo "\n\t"; echo "\n\t\tFS"; echo "\n\t "; echo "\n\t".$gmkg."  "; echo $flur."-".$fskenn." "; echo "\n
"; } $zfs++; } if($zfs == 0) {echo "\n

Kein Flurstück.

";} return; } // =========== // Start hier! // =========== if(isset($epsg)) { if ($debug >= 2) {echo "

aktueller EPSG='".$epsg."'

";} // aus MB $epsg = str_replace("EPSG:", "" , $_REQUEST["epsg"]); } else { if ($debug >= 1) {echo "

kein EPSG gesetzt

";} $epsg=$gui_epsg; // aus Conf } if ($debug >= 2) { if(isset($gemeinde)) {echo "

Filter Gemeinde = ".$gemeinde."

"; } else {echo "

Kein Filter Gemeinde

";} } if ($gemeinde == "") { $gfilter = 0; // ungefiltert } elseif(strpos($gemeinde, ",") === false) { $gfilter = 1; // Einzelwert } else { $gfilter = 2; // Liste } // Auch wenn redundant: Das Kennzeichen für Anzeige und weitere Links zerlegen $kennztyp=ZerlegungGBKennz($gbkennz); if ($debug >= 2) {echo "

GB-Kennzeichen Typ=".$kennztyp."

";} // Wurde eine gml_id (internes Kennzeichen) aus einem Self-Link verwendet? // Dann hat das Prioritaet, nicht nach $gbkennz suchen. if (isset($gbuchung)) { // gml der Buchungsstelle if ($debug >= 2) {echo "

Link Buchung(gml)=".$gbuchung."

";} EinGrundstueck(true); } elseif(isset($gblatt)) { // gml des GB-Blattes if ($debug >= 2) {echo "

Link Blatt(gml)=".$gblatt."

";} if (EinBlatt(true) == 1) { // darauf genau eine Buchung $gbuchung=gml_buchungsstelle(); // gml_id zum Kennzeichen EinGrundstueck(false); } } elseif(isset($ag)) { // Key 'stelle' des Amtsgerichtes if ($debug >= 2) {echo "

Link Amtsgericht=".$ag."

";} ListAG( "'".$ag."'" ); // noch mal Kopfzeile ListGBBez("'".$ag."'", false); } else { // Kein Self-Link // (manuelle) Eingabe im Formular interpretieren. switch ($kennztyp) { // +++ Wie kann Filter "Gemeinde" berücksichtigt werden? case 0: // keine Eingabe, 2 Alternativen // +++ Alternativen-Auswahl konfigurieren? // ListGBBez($ag_liste, true); // gefilterte Liste der Bezirke ListAG($ag_liste); // gefilterte Liste der Amtsgerichte break; case 1: // Eingabe Bezirk-Name (-Teil) -> gefilterte Liste der Bezirke if ($debug >= 2) {echo "

Eingabe Bez. ".$zgbbez."

";} $beznr=SuchGBBezName(); if ($beznr > 0) { // eindeutig $zgbbez=$beznr; EinBezirk(false); // gleich weiter }; break; case 2: // Eingabe Bezirk-Nummer -> Liste der Blätter if ($debug >= 2) {echo "

Eingabe Bez. ".$zgbbez."

";} EinBezirk(true); break; case 3: // Eingabe Blatt -> Liste der Buchungen if ($debug >= 2) {echo "

Eingabe Bez. ".$zgbbez." Blatt ".$zblatt."

";} $gblatt=gml_blatt(); // gml_id zum Blatt suchen if ($gblatt != "") { // gefunden if (EinBlatt(true) == 1) { // darauf genau eine Buchung $gbuchung=gml_buchungsstelle(); // gml_id zum Kennzeichen EinGrundstueck(false); } } break; case 4: // Eingabe Buchung (Grundstueck) -> Liste der Flurstuecke if ($debug >= 2) {echo "

Eingabe Bez. ".$zgbbez." Blatt ".$zblatt." BVNR ".$zbvnr."

";} $gbuchung=gml_buchungsstelle(); // gml_id zum Kennzeichen if ($gbuchung != "") { // .. wurde geliefert EinGrundstueck(true); } break; case 9: // Fehler echo "

Bitte ein gültiges Grundbuchkennzeichen eingegeben, Format 'gggg-999999A-llll

"; break; } } ?>