1) {
$zblatt=trim($arr[1]);
if (count($arr) > 2) {
$zbvnr=trim($arr[2]);
} else {
$zbvnr="";
}
} else {
$zblatt="";
$zbvnr="";
}
if ($zgbbez == "") { // keine Eingabe
return 0; // Amtsgerichte oder Bezirke listen
} elseif ( ! is_ne_zahl($zgbbez)) { // Alphabetische Eingabe
return 1; // Such Bezirk-NAME
} elseif ($zblatt == "") {
return 2; // Such Bezirk-NUMMER
} else { // Format von BlattNr pruefen
//'19' linksbündig
//'000019 ' gefüllt 6 + blank
//'000019A' .. mit Zusatzbuchstabe
//'0300001' gefüllt 7, bei Blattart 5000 "fiktives Blatt"
$len=strlen($zblatt);
if ($len > 0 AND $len < 8) { // Eingabe Länge 1 bis 7
// if (trim($zblatt, "0..9 ") == "") {
if (preg_match('#^[0-9]{1,6}[ ]{0,1}$#', $zblatt)) { // Normalfall: nur Zahlen (und Blank am Ende))
$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") == "")) {
if (preg_match('#^[0-9]{1,6}$#', $zblattn) and preg_match('#^[A-Z]{1}$#', $zblattz)) {
$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 suchfeld($suchstring) { // Suchstring Ausgeben UND das Eingabeformular damit belegen
$out="".$suchstring."";
return $out;
}
// function Typ "zeile_**" = Ausgabe eines Knotens
// - Icon, ggf. mit Link zur Buchauskunft
// - Zeile, ggf. mit Link zur weiteren Auflösung untergeordneter Knoten
// Hierin die Encodierung für url und HTML.
function zeile_ag ($ag, $anr, $aktuell) {
// Zeile A m t s g e r i c h t
global $gkz, $gemeinde, $epsg, $auskpath;
if ($ag == "") {
$agd=$anr; // Ersatz: Nummer statt Name. Besser: Name immer füllen
} else {
$agd=htmlentities($ag, ENT_QUOTES, "UTF-8");
}
if ($aktuell) {$cls=" aktuell";} else {$cls="";}
echo "\n
";
return;
}
function zeile_gbbez ($gnam, $zgbbez, $aktuell) {
// Zeile Grundbuch - B e z i r k
// Parameter: aktuell = Bool für farbliche Markierung der Zeile als aktuell angeklicktes Obj.
global $gkz, $gemeinde, $epsg, $person;
$gnamd=htmlentities($gnam, ENT_QUOTES, "UTF-8");
if ($aktuell) {$cls=" aktuell";} else {$cls="";}
echo "\n"
."\n\t\t
"
."
"
."Bezirk ".$gnamd." (".$zgbbez.")";
} else { // Grundbuch-Suche
echo "'>"
."Bezirk ".$gnamd." (".suchfeld($zgbbez).")";
}
echo "\n
";
return;
}
function zeile_blatt ($bezirk, $beznam, $blattgml, $blatt, $dienend, $person, $aktuell) {
// Zeile Grundbuch - B l a t t
// Aufruf aus Teil "Grundbuch" und Teil "Eigentümer"
// Parameter $beznam = Name des GB-Bezirks. Sollte nur gefüllt sein, bei dienendem Blatt ("Recht an"). Wird vor die Zeile gesetzt.
// Normalerweise steht der Bezirk als Header-Zeile darüber.
global $gkz, $gemeinde, $epsg, $auskpath;
$blattd=ltrim($blatt, "0"); // Display-Version ohne führende Nullen
if ($dienend) {$dientxt="dienendes ";} else {$dientxt="";}
$blattlnk=urlencode($blatt); // trailing Blank
if ($beznam != "") {$nam = $beznam." ";} else {$nam="";}
if ($aktuell) {$cls=" aktuell";} else {$cls="";}
echo "\n";
// Icon / Nachweis
if ($blattgml == "") { // Link zum Nachweis nur wenn GML bekannt
echo "\n\t
";
} else {
echo "\n\t
"
."\n\t\t"
."\n\t ";
}
// Text, Self-Link
echo $nam."
Blatt ".$blattd."\n
";
return;
}
function zeile_buchung($buchunggml, $bvnr, $blattkennz, $dienend, $aktuell) {
// Zeile B u c h u n g s s t e l l e - Grundstück ausgeben
global $gkz, $gemeinde, $epsg, $auskpath, $debug;
//if ($debug > 1) {echo "function zeile_buchung()
";} // Ablauf-Verfolgung
if ($bvnr == 0) { // Keine echten BVNR vergeben (z.B. Lippe)
$bvnra = "-"; // Fehlanzeige
} else {
$bvnra = str_pad($bvnr, 4, "0", STR_PAD_LEFT); // auf 4 Stellen
}
if ($dienend) {
$ti="dienendes ";
$re="Recht an ";
} else {
$ti="";
$re="";
}
if ($aktuell) {$cls=" aktuell";} else {$cls="";}
echo "\n
";
// Icon / Nachweis
if ($buchunggml == "") { // Link zum Nachweis nur wenn GML bekannt
echo "\n\t
".$re;
} else {
echo "\n\t
"
."\n\t\t ".$re
."\n\t ";
}
if ($blattkennz == "") { // ohne Link
echo "Buchung ".$bvnra;
} else {
$gbkennlnk=urlencode($blattkennz."-".$bvnr); // Trailing Blanks!
echo "
Buchung ".$bvnra."";
}
echo "\n
";
return;
}
function zeile_gemeinde ($gmdnr, $gmdname, $aktuell) {
// Eine Kopf-Zeile zu Gemeinde ausgeben
global $gkz, $gemeinde, $epsg;
$stadt=htmlentities($gmdname, ENT_QUOTES, "UTF-8");
$bez=urlencode($gmdname);
if ($aktuell) {$cls=" aktuell";} else {$cls="";}
echo "\n";
return;
}
function zeile_gemarkung($gkgnr, $gkgname, $aktuell) {
// Eine Kopf-Zeile zur Gemarkung ausgeben
global $con, $gkz, $gemeinde, $epsg, $gfilter;
if ($gkgname == "") { // Falls Gem.-Name fehlt, in DB nachschlagen
$sql ="SELECT bezeichnung FROM ax_gemarkung WHERE gemarkungsnummer = $1 LIMIT 1;";
$v=array($gnr);
$res=pg_prepare("", $sql);
$res=pg_execute("", $v);
if (!$res) {echo "\nFehler bei Gemarkungsname.
";}
$row = pg_fetch_array($res);
$gkgname=$row["bezeichnung"];
}
if ($gkgname == "") {$gkgname = "(unbekannt)";}
$gnam=htmlentities($gkgname, ENT_QUOTES, "UTF-8");
if ($aktuell) {$cls=" aktuell";} else {$cls="";}
echo "\n";
return;
}
function zeile_flurstueck ($fs_gml, $fskenn, $x, $y, $gmkg, $flur, $aktuell) {
// Zeile mit Icon (Link zum Buch-Nachweis) und Text (Link zum Positionieren)
global $gkz, $gemeinde, $epsg, $auskpath, $scalefs;
if ($aktuell) {$cls=" aktuell";} else {$cls="";}
echo "\n";
return;
}
function zeile_person ($persongml, $nachname, $vorname) {
// Zeile P e r s o n (oder Firma)
global $gkz, $gemeinde, $epsg, $auskpath;
$nnam=htmlentities($nachname, ENT_QUOTES, "UTF-8");
$namlnk=urlencode(substr($nachname,0,50));
$vnam=htmlentities($vorname, ENT_QUOTES, "UTF-8");
// Link zur Auskunft Person, Icon differenzieren nach Eigentuemerart?
echo "";
return;
}
function zeile_strasse ($gkey, $skey, $sname, $kgml, $gemname) {
// Listen-Zeile (nicht Kopfzeile) für eine gefundenen Straße ausgeben.
// Die Kopfzeile über den Hausnummern hat einen zusätzlichen Koordinaten-Map-Link, das ist in der Liste zu aufwändig?
global $gkz, $gemeinde, $epsg, $auskpath, $gfilter, $debug;
echo "\n\t";
// Icon -> Buchnachweis
echo "\n\t
"
."\n\t\t"
."\n\t";
// Zeile -> Suche HsNr
echo "
".$sname
." (".$skey.")";
// Die Gemeinde dahinter falls mehrere möglich
switch ($gfilter) {
case 0: // Kein Filter
echo " in ".$gemname; break;
case 2: // Liste
echo " in ".$gemname; break;
}
echo "
";
return;
}
function GB_Buchung_FS ($linelimit, $blattgbkenn) {
// Zu einem Grundbuch-Blatt (identifiziert über seine gml_id) suchen der
// Buchungen (Gruppenwechsel) und Flurstücke (Links)
global $gemeinde, $blattgml, $epsg, $gfilter, $debug;
// SQL-Bausteine
// vorne gleich
$sql1 ="SELECT s1.laufendenummer AS lfd, s1.gml_id AS bsgml, f.gml_id, f.flurnummer, f.zaehler, f.nenner, f.gemeinde, ";
if($epsg == "25832") { // Transform nicht notwendig
$sql1.="st_x(st_centroid(f.wkb_geometry)) AS x, st_y(st_centroid(f.wkb_geometry)) AS y, ";
} else {
$sql1.="st_x(st_transform(st_centroid(f.wkb_geometry), ".$epsg.")) AS x, "
."st_y(st_transform(st_centroid(f.wkb_geometry), ".$epsg.")) AS y, ";
}
$sql1.="g.bezeichnung FROM ax_buchungsstelle s1 ";
// zwischen, Variante 1.
$sqlz1="JOIN ax_flurstueck f ON f.istgebucht=s1.gml_id ";
// zwischen, Variante 2. Nur an oder "an" und "zu"?
$sqlz2 ="JOIN ax_buchungsstelle s2 ON s2.gml_id=ANY(s1.an) "
."JOIN ax_flurstueck f ON f.istgebucht=s2.gml_id ";
// hinten gleich
$sql2="JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer "
."WHERE s1.istbestandteilvon = $1 AND f.endet IS NULL AND s1.endet IS NULL ";
switch ($gfilter) {
case 1: // Einzelwert
$sql2.="AND f.gemeinde='".$gemeinde."' "; break;
case 2: // Liste
$sql2.="AND f.gemeinde in ('".str_replace(",", "','", $gemeinde)."') "; break;
}
// WHERE-Zusatz bei 2
$sqlw2=" AND s2.endet IS NULL ";
$sqlord="ORDER BY cast(s1.laufendenummer AS integer), f.gemarkungsnummer, f.flurnummer, f.zaehler, f.nenner LIMIT $2 ;";
// d i r e k t e B u c h u n g e n
// Blatt Fehler bei Buchung und Flurstück.";
if ($debug >= 3) {echo "\nSQL='".$sql1.$sqlz1.$sql2.$sqlord."'
$1 = '".$blattgml."'
";}
return;
}
$zfs1=0;
$gwbv="";
while($row = pg_fetch_array($res)) {
$bvnr=$row["lfd"];
$bsgml=$row["bsgml"]; // Buchungsstelle gml_id
if ($gwbv != $bvnr) { // Gruppierung Buchungs-Stelle (BVNR)
$gwbv = $bvnr;
zeile_buchung($bsgml, $bvnr, $blattgbkenn, false, false);
}
$fs_gml=$row["gml_id"];
$gmkg=$row["bezeichnung"];
$flur=$row["flurnummer"];
$fskenn=$row["zaehler"];
if ($row["nenner"] != "") {$fskenn.="/".$row["nenner"];} // BruchNr
$x=$row["x"];
$y=$row["y"];
zeile_flurstueck ($fs_gml, $fskenn, $x, $y, $gmkg, $flur, false);
$zfs1++;
}
// "nichts gefunden" erst melden, wenn auch Teil 2 (Rechte an) nichts findet
if($zfs1 > 1) { // ab 2
echo "\n".$zfs1." Flurstücke zum Grundbuch";
if($zfs1 >= $linelimit) {
echo "... und weitere"; //++ Blättern einführen?
}
echo "
";
}
if($zfs1 > 0) {echo "
";} // Trennen
// Rechte "an" (dienende Buchungen)
$v=array($blattgml, $linelimit);
$res=pg_prepare("", $sql1.$sqlz2.$sql2.$sqlw2.$sqlord);
$res=pg_execute("", $v);
if (!$res) {
echo "\nFehler bei Recht an Buchung.
";
#if ($debug >= 3) {echo "\n".$sql1.$sqlz2.$sql2.$sqlw2.$sqlord."
";}
return;
}
$zfs2=0;
$gwbv="";
while($row = pg_fetch_array($res)) {
$bvnr=$row["lfd"];
$bsgml=$row["bsgml"]; // Buchungsstelle gml_id
if ($gwbv != $bvnr) { // Gruppierung Buchung (BVNR) - dienend
$gwbv = $bvnr;
zeile_buchung($bsgml, $bvnr, $blattgbkenn, true, false);
}
$fs_gml=$row["gml_id"];
$gmkg=$row["bezeichnung"];
$flur=$row["flurnummer"];
$fskenn=$row["zaehler"];
if ($row["nenner"] != "") {$fskenn.="/".$row["nenner"];} // Bruchnummer
zeile_flurstueck ($fs_gml, $fskenn, $row["x"], $row["y"], $gmkg, $flur, false);
$zfs2++;
}
// Foot
if($zfs1 + $zfs2 == 0) {
echo "\nKein Flurstück im berechtigten Bereich.
";
} elseif($zfs2 > 1) { // keine Meldung "nichts gefunden - Rechte an" wenn Treffer in Teil 1
echo "\n".$zfs2." Rechte an Flurst.";
if($zfs2 >= $linelimit) {
echo "... und weitere"; // Blättern einführen?
}
echo "
";
}
return;
}
?>