pg_prepare + pg_execute)
01.02.2011 *Left* Join - Fehlertoleranz bei unvollstaendigen Schluesseltabellen
*/
function footer($gkz, $gmlid, $idumschalter, $idanzeige, $link, $hilfeurl, $append, $showkey) {
// Einen Seitenfuss ausgeben.
// Den URL-Parameter "&id=j/n" und "&showkey=j/n" in allen Kombinationen umschalten lassen.
// Die Parameter &gkz= und &gmlid= kommen in allen Modulen einheitlich vor
// Der Parameter $append wird angehaengt wenn gefuellt
// Anwendung: &eig=j bei FS-NW, <yp=m/p/o bei Lage
$customer=$_SESSION["mb_user_name"];
echo "\n
";
echo "\n
\n";
// Spalte 1: Info Benutzerkennung
echo "\n\tBenutzer: ".$customer." | ";
// Spalte 2: Umschalter
echo "\n\t";
// Umschalter:
// - Schluessel
// - Testmodus ID-Anzeige
// bei beiden
$mylink ="\n\t\t";
echo " ID aus";
} else {
echo $mylink.$mykey."&id=j' title='Verfolgung der GML-ID in den ALKIS-Beziehungen'>";
echo " ID ein";
}
echo " | ";
} else { // keinen ID-Umschalter
$myid = "";
}
if ($showkey) { // // Umschalten Schlüssel ein/aus
echo $mylink.$myid."&showkey=n' title='Verschlüsselungen ausblenden'>Schlüssel aus";
} else {
echo $mylink.$myid."&showkey=j' title='Verschlüsselungen anzeigen'>Schlüssel ein";
}
echo "\n\t | ";
// Spalte 3
echo "\n\t";
echo "\n\t\t \n\t\t\tHilfe zur ALKIS-Auskunft\n\t\t \n\t | ";
echo "\n
\n
\n
\n";
/* echo "
";
echo "gkz=".$gkz."
";
echo "gmlid=".$gmlid."
";
echo "idumschalter=".$idumschalter."
";
echo "idanzeige=".$idanzeige."
";
echo "link=".$link."
";
echo "hilfeurl=".$hilfeurl."
";
echo "append=".$append."
";
echo "showkey=".$showkey;
echo "
"; */
return 0;
}
function linkgml($gkz, $gml, $typ) {
// Einen Link zur Verfolgung der Beziehungen mit dem Modul alkisrelationen.php
$kurzid=substr($gml, 12); // ID in Anzeige kuerzen (4 Zeichen), der Anfang ist immer gleich
echo "\n\t\t";
echo "".$kurzid."";
return 0;
}
function kurz_namnr($lang) {
// Namensnummer kuerzen. Nicht benoetigte 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"); // fuehrende Nullen am Anfang
$kurz=str_replace(".0",".",$kurz); // fuehrende Null jeder Stufe
return $kurz;
}
function bnw_fsdaten($con, $gkz, $idanzeige, $lfdnr, $gml_bs, $ba, $anteil, $bvnraus, $showkey) {
/* Bestandsnachweis - Flurstuecksdaten
Die Tabellenzeilen mit den Flurstuecksdaten zu einer Buchungsstelle im Bestandsnachweis ausgeben.
Die Funktion wird je einmal aufgerufen für die Buchungen direkt auf dem GB (Normalfall).
Weiterere Aufrufe ggf. bei Erbbaurecht für die mit "an" verknuepften Buchungsstellen.
Table-Tag und Kopfzeile im aufrufenden Programm.
*/
// F L U R S T U E C K
$sql="SELECT g.gemarkungsnummer, g.bezeichnung, ";
$sql.="f.gml_id, f.flurnummer, f.zaehler, f.nenner, f.regierungsbezirk, f.kreis, f.gemeinde, f.amtlicheflaeche ";
$sql.="FROM ax_flurstueck f ";
$sql.="JOIN alkis_beziehungen v ON f.gml_id=v.beziehung_von ";
$sql.="LEFT JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer ";
$sql.="WHERE v.beziehung_zu= $1 "; // id buchungsstelle
$sql.="AND v.beziehungsart='istGebucht' ";
$sql.="ORDER BY f.gemarkungsnummer, f.flurnummer, f.zaehler, f.nenner;";
$v = array($gml_bs);
$resf = pg_prepare("", $sql);
$resf = pg_execute("", $v);
if (!$resf) {echo "Fehler bei Flurstück
".$sql."
\n";}
if($bvnraus) { // nur bei direkten Buchungen die lfdNr ausgeben
$bvnr=str_pad($lfdnr, 4, "0", STR_PAD_LEFT);
}
$altlfdnr="";
$j=0;
while($rowf = pg_fetch_array($resf)) {
$flur=str_pad($rowf["flurnummer"], 3, "0", STR_PAD_LEFT);
/* $fskenn=str_pad($rowf["zaehler"], 5, "0", STR_PAD_LEFT);
if ($rowf["nenner"] != "") { // Bruchnummer
$fskenn.="/".str_pad($rowf["nenner"], 3, "0", STR_PAD_LEFT);
} */
// ohne fuehrende Nullen?
$fskenn=$rowf["zaehler"];
if ($rowf["nenner"] != "") { // Bruchnummer
$fskenn.="/".$rowf["nenner"];
}
$flae=number_format($rowf["amtlicheflaeche"],0,",",".") . " m²";
echo "\n"; // eine Zeile je Flurstueck
// Sp. 1-3 der Tab. aus Buchungsstelle, nicht aus FS
if($lfdnr == $altlfdnr) { // gleiches Grundstueck
echo "\n\t | ";
echo "\n\t | ";
echo "\n\t | ";
} else {
echo "\n\t";
echo ""; // Sprungmarke
echo "".$bvnr.""; // BVNR
if ($idanzeige) {linkgml($gkz, $gml_bs, "Buchungsstelle");}
echo " | ";
echo "\n\t"; // Buchungsart
// if ($showkey) {echo "".$???." ";} // Schluessel
echo $ba; // entschluesselt
echo " | ";
echo "\n\t | "; // Anteil
$altlfdnr=$lfdnr;
}
//Sp. 4-7 aus Flurstueck
echo "\n\t";
if ($showkey) {
echo "".$rowf["gemarkungsnummer"]." ";
}
echo $rowf["bezeichnung"]." | ";
echo "\n\t".$flur." | ";
echo "\n\t".$fskenn."";
if ($idanzeige) {linkgml($gkz, $rowf["gml_id"], "Flurstück");}
echo " | ";
echo "\n\t".$flae." | ";
echo "\n\t";
echo "Flurstück ";
echo "";
echo "";
echo " | ";
echo "\n
";
$j++;
} // Ende Flurstueck
return $j;
}
function eigentuemer($con, $gkz, $idanzeige, $gmlid, $mitadresse, $showkey) {
// Tabelle mit Eigentuemerdaten zu einem Grundbuchblatt ausgeben
// Sp.1 = Namennummer, Sp. 2 = Name / Adresse, Sp. 3 = Link
// Parameter:
// $gmlid = ID des GB-Blattes
// $mitadresse = Option (true/false) ob auch 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
$sql="SELECT n.gml_id, n.laufendenummernachdin1421 AS lfd, n.zaehler, n.nenner, ";
$sql.="n.artderrechtsgemeinschaft AS adr, n.beschriebderrechtsgemeinschaft as beschr, n.eigentuemerart, n.anlass ";
$sql.="FROM ax_namensnummer n ";
$sql.="JOIN alkis_beziehungen b ON b.beziehung_von=n.gml_id ";
$sql.="WHERE b.beziehung_zu= $1 "; // id blatt
$sql.="AND b.beziehungsart='istBestandteilVon' ";
$sql.="ORDER BY laufendenummernachdin1421;";
$v = array($gmlid);
$resn = pg_prepare("", $sql);
$resn = pg_execute("", $v);
if (!$resn) {echo "Fehler bei Eigentuemer
SQL= ".$sql."
\n";}
//echo "weitere Auskunft:
"; // oben rechts von der Tabelle
echo "\n\n";
$n=0; // Z.NamNum.
//echo "\n\n";
while($rown = pg_fetch_array($resn)) {
$gmlnn=$rown["gml_id"];
echo "\n";
echo "\n\t\n\t\t "; // Sp. 1
// VOR die Tabelle: "Eigentümer"
$namnum=kurz_namnr($rown["lfd"]);
echo $namnum." ";
if ($idanzeige) {linkgml($gkz, $rown["gml_id"], "Namensnummer");}
echo " \n\t | ";
echo "\n\t"; // Sp. 2
$rechtsg=$rown["adr"];
if ($rechtsg != "" ) {
if ($rechtsg == 9999) { // sonstiges
echo "\n\t\t ".htmlentities($rown["beschr"], ENT_QUOTES, "UTF-8")." ";
} else {
echo "\n\t\t".htmlentities(rechtsgemeinschaft($rown["adr"]), ENT_QUOTES, "UTF-8")." ";
// !! Feld /td und Zeile /tr nicht geschlossen
// echo "\n\t | \n
"; // !!! IMMER? oder nur wenn letzte Zeile?
}
}
//if ($rown["anlass"] > 0 ) {echo "Anlass=".$rown["anlass"]."
";} // TEST:
//echo "\n\t\t\n\t\t | \n";
// Schleife Ebene 2: andere Namensnummern
// Beziehung 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.
// Die Relation 'Namensnummer' hat Vorgänger 'Namensnummer' gibt Auskunft darüber,
// aus welchen Namensnummern die aktuelle entstanden ist.
// Schleife 2: P e r s o n
// Beziehung: ax_person Fehler bei Eigentuemer
SQL= ".$sql."
\n";}
$i=0; // Z.Eig.
//echo "\n";
while($rowe = pg_fetch_array($rese)) {
$diePerson="";
if ($rowe["akademischergrad"] <> "") {$diePerson=$rowe["akademischergrad"]." ";}
$diePerson.=$rowe["nachnameoderfirma"];
if ($rowe["vorname"] <> "") {$diePerson.=", ".$rowe["vorname"];}
if ($rowe["namensbestandteil"] <> "") {$diePerson.=". ".$rowe["namensbestandteil"];}
if ($rowe["geburtsdatum"] <> "") {$diePerson.=", geb. ".$rowe["geburtsdatum"];}
if ($rowe["geburtsname"] <> "") {$diePerson.=", geb. ".$rowe["geburtsname"];}
$diePerson=htmlentities($diePerson, ENT_QUOTES, "UTF-8"); // Umlaute
// Spalte 1 enthält die Namensnummer, nur in Zeile 0
if ($i > 0) {
echo "\n\n\t | \n\t";
}
// Spalte 2 = Angaben
$eiart=eigentuemerart($rown["eigentuemerart"]);
echo "\n\t\t ".$diePerson." \n\t | ";
// Spalte 3 = Link
echo "\n\t\n\t\t ";
if ($idanzeige) {linkgml($gkz, $rowe["gml_id"], "Person"); echo " ";}
echo "\n\t\t".$eiart;
echo " \n\t\t ";
echo "\n\t | \n
";
if ($mitadresse) {
// Schleife 3: A d r e s s e (OPTIONAL)
$sql ="SELECT a.gml_id, a.ort_post, a.postleitzahlpostzustellung AS plz, a.strasse, a.hausnummer, a.bestimmungsland ";
$sql.="FROM ax_anschrift a ";
$sql.="JOIN alkis_beziehungen b ON a.gml_id=b.beziehung_zu ";
$sql.="WHERE b.beziehung_von= $1 AND b.beziehungsart='hat';"; // ORDER?
$v = array($rowe["gml_id"]);
$resa = pg_prepare("", $sql);
$resa = pg_execute("", $v);
if (!$resa) {
echo "\n\tFehler bei Adressen.
\nSQL= ".$sql."
\n";
}
$j=0;
//echo "\n";
while($rowa = pg_fetch_array($resa)) {
$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\n\t | "; // Spalte 1
echo "\n\t"; //Spalte 2
if ($str.$hsnr != "") {
echo $str." ".$hsnr." ";
}
if ($plz.$ort != "") {
echo $plz." ".$ort;
}
if ($land != "" and $land != "DEUTSCHLAND") {
echo ", ".$land;
}
echo " | ";
echo "\n\t"; // Spalte 3
if ($idanzeige) {
echo " ";
linkgml($gkz, $gmla, "Adresse");
echo " ";
} else {
echo " ";
}
echo " | \n
";
$j++;
}
//echo "\n";
} // if
// 'keine Adresse' kann vorkommen, z.B. "Deutsche Telekom AG"
$i++; // Z. Person
// als eigene Tab-Zeile?
// 'Anteil' ist der Anteil der Berechtigten in Bruchteilen (Par. 47 GBO)
// an einem gemeinschaftlichen Eigentum (Grundstück oder Recht).
if ($rown["zaehler"] != "") {
echo "\n\n\t | "; // Sp. 1
echo "\n\t".$rown["zaehler"]."/".$rown["nenner"]." Anteil | ";
echo "\n\t | \n
"; // Sp. 3
}
}
//echo "\n";
if ($i == 0) { // keine Pers zur NamNum
echo "\n";
// Wann warnen?
//if ($rechtsg != 9999) {
// Art der Rechtsgemeinsachft, 0 Eigent. ist Normal bei Sondereigentum
//echo "\n\n";
//linkgml($gkz, $rown["gml_id"], "Namensnummer");
//echo " | \n\n\t\t Kein Eigentümer gefunden. (Rechtsgemeinschaft=".$rechtsg.") ";
//}
echo " | \n\t | \n
";
}
$n++; // cnt NamNum
} // End Loop NamNum
//echo "\n";
echo "\n
\n";
return $n;
} // End Function eigentuemer
// ** Functions zum E n t s c h l u e s s e l n **
// Entschluesslung ax_person.anrede
function anrede($key) {
switch ($key) {
case 1000:
$wert = "Frau";
break;
case 2000:
$wert = "Herr";
break;
case 3000:
$wert = "Firma";
break;
default:
$wert = "";
break;
}
return $wert;
}
// Entschluesslung AX_Namensnummer.artDerRechtsgemeinschaft
function rechtsgemeinschaft($key) {
switch ($key) {
case 1000:
$wert = "Erbengemeinschaft";
break;
case 2000:
$wert = "Gütergemeinschaft";
break;
case 3000:
$wert = "BGB-Gesellschaft";
break;
case 9999:
$wert = "Sonstiges";
// dann: beschriebDerRechtsgemeinschaft
break;
default:
$wert = "";
break;
}
return $wert;
}
// Entschluesslung AX_Namensnummer.eigentuemerart
// Abweichend hier in singular fuer Link-Text
function eigentuemerart($key) {
switch ($key) {
case 1000:
$wert = "Natürliche Person";
break;
case 2000:
$wert = "Juristische Person";
break;
case 3000:
$wert = "Körperschaft";
break;
case "": // falls (noch) nicht gefuellt
$wert = "Person";
break;
default:
$wert = "** Unbekannte Eigentümerart '".$key."' **";;
break;
}
return $wert;
}
// Entschluesslung ax_buchungsblatt.blattart
function blattart($key) {
switch ($key) {
case 1000:
$wert = "Grundbuchblatt";
// Ein Grundbuchblatt ist ein Buchungsblatt, das die Buchung im Grundbuch enthält.
break;
case 2000:
$wert = "Katasterblatt";
// Ein Katasterblatt ist ein Buchungsblatt, das die Buchung im Liegenschaftskataster enthält.
break;
case 3000:
$wert = "Pseudoblatt";
// Ein Pseudoblatt ist ein Buchungsblatt, das die Buchung, die bereits vor Eintrag im Grundbuch Rechtskraft erlangt hat, enthält
// (z.B. Übernahme von Flurbereinigungsverfahren, Umlegungsverfahren).
break;
case 5000:
$wert = "Fiktives Blatt";
// Das fiktive Blatt enthält die aufgeteilten Grundstücke und Rechte als Ganzes.
// Es bildet um die Miteigentumsanteile eine fachliche Klammer.
break;
default:
$wert = "** Unbekannter Wert '".$key."'";;
break;
}
return $wert;
}
// Entschluesslung ax_dienststelle.stellenart
function dienststellenart($key) {
switch ($key) {
case 1000:
$wert = "Grundbuchamt";
break;
case 1100:
$wert = "Katasteramt";
break;
case 1200:
$wert = "Finanzamt";
break;
case 1300:
$wert = "Flurbereinigungsbehörde";
break;
case 1400:
$wert = "Forstamt";
break;
case 1500:
$wert = "Wasserwirtschaftsamt";
break;
case 1600:
$wert = "Straßenbauamt";
break;
case 1700:
$wert = "Gemeindeamt";
break;
case 1900:
$wert = "Kreis- oder Stadtverwaltung";
break;
case 2000:
$wert = "Wasser- und Bodenverband";
break;
case 2100:
$wert = "Umlegungsstelle";
break;
case 2200:
$wert = "Landesvermessungsverwaltung";
break;
case 2300:
$wert = "ÖbVI";
break;
case 2400:
$wert = "Bundeseisenbahnvermögen";
break;
case 2500:
$wert = "Landwirtschaftskammer";
break;
default:
$wert = "** Unbekannter Wert '".$key."'";
break;
}
return $wert;
}
?>