source: trunk/info/info/alkisn/alkisfkt.php @ 389

Revision 389, 21.8 KB checked in by frank.jaeger, 2 years ago (diff)

ALKIS Buchauskunft überarbeitet: Bodenschätzung im FS-Nachweis. Filter auf "endet IS NULL".

Line 
1<?php
2/*      Modul: alkisfkt.php
3
4        ALKIS-Buchauskunft, Kommunales Rechenzentrum Minden-Ravensberg/Lippe (Lemgo).
5        Functions
6
7        Version:
8        2016-02-24 Version fuer norGIS-ALKIS-Import, "function linkgml" raus. Case-EntschlÃŒsselung raus.
9        2016-03-03 Hinweis auf Datenfehler wenn "ax_person" fehlt in function "eigentuemer"
10        2016-03-14 Kleine Korrekturen
11        2016-11-29 Gemeinsam genutzte Datenbanken ermöglichen (Filter Gemeinde)
12        2017-06-08 gestreifte Tabelle, Feinkorrekturen
13*/
14
15function footer($gmlid, $link, $append) {
16        // Einen Seitenfuss ausgeben.
17        // Die Parameter &gkz= und &gmlid= kommen in allen Modulen einheitlich vor
18        // Den URL-Parameter "&showkey=j/n" umschalten lassen.
19        // $append wird angehaengt wenn gefuellt. Anwendung: &eig=j bei FS-NW, &ltyp=m/p/o bei Lage
20        global $gkz, $showkey, $hilfeurl, $auth;
21
22        // S c r e e n - Foot
23        echo "\n<div class='confbereich noprint'>"
24        ."\n\t<table class='outer'>\n\t<tr>";
25
26        // Spalte 1: Info Benutzerkennung
27        if ($auth == "mapbender") {
28                $customer=$_SESSION["mb_user_name"];
29                echo "\n\t\t<td title='Info'><i>Benutzer:&nbsp;".$customer."</i></td>";
30        } else {
31                echo "\n\t\t<td>&nbsp;</td>";
32        }
33
34        // Spalte 2: Umschalter
35        echo "\n\t\t<td title='Konfiguration'>";
36                $mylink ="\n\t\t\t<a class='keyswitch' href='".$link."gkz=".$gkz."&amp;gmlid=".$gmlid.$append;
37
38                if ($showkey) { // Umschalten SchlÃŒssel ein/aus
39                        echo $mylink."&amp;showkey=n' title='Verschl&uuml;sselungen ausblenden'>Schl&uuml;ssel aus</a>";
40                } else {
41                        echo $mylink."&amp;showkey=j' title='Verschl&uuml;sselungen anzeigen'>Schl&uuml;ssel ein</a>";
42                }
43        echo "\n\t\t</td>";
44
45        // Spalte 3
46        echo "\n\t\t<td title='Hilfe'>"
47                ."\n\t\t\t<p class='nwlink'>\n\t\t\t\t<a target='_blank' href='".$hilfeurl."' title='Dokumentation'>Hilfe zur ALKIS-Auskunft</a>\n\t\t\t</p>\n\t\t</td>"
48                ."\n\t</tr>\n\t</table>"
49        ."\n</div>\n";
50
51        // P r i n t - Foot
52        if ($auth == "mapbender") {
53        //      $customer=$_SESSION["mb_user_name"];
54                echo "\n<p class='onlyprint'><i>Mapbender-Benutzer:&nbsp;".$customer."</i></p>";
55        }
56
57        return 0;
58}
59
60function ber_bs_hinw($gmls, $gmlf) {
61        // Berechtigte Buchungs-Stellen - Hinweis.
62        // Unter dem Grundbuch-Link den Hinweis auf "berechtigte Buchungssstellen" anzeigen und einen Umschalter.
63        global $gkz, $debug, $showkey, $berbu, $eig;
64
65        // Buchungstelle dienend <(Recht)an< Buchungstelle herrschend
66        $sql ="SELECT count(sh.gml_id) AS anz, sh.buchungsart, a.v "
67        ."FROM ax_buchungsstelle sd JOIN ax_buchungsstelle sh ON sd.gml_id=ANY(sh.an) "
68        ."LEFT JOIN alkis_wertearten a ON sh.buchungsart=cast(a.k AS integer) "
69        ."WHERE sd.gml_id= $1 AND sh.endet IS NULL AND sd.endet IS NULL AND a.element='ax_buchungsstelle' and a.bezeichnung='buchungsart' "
70        ."GROUP BY sh.buchungsart, a.v;";
71
72        $v = array($gmls); // GML dienende Buchungs-Stelle
73        $resan = pg_prepare("", $sql);
74        $resan = pg_execute("", $v);
75        if (!$resan) {
76                echo "\n<p class='err'>Fehler bei 'berechtigte Buchungsstellen'.</p>";
77                if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = gml_id = '".$gmls."'</p>";}
78        }
79        $zeile=0; // Vesrchiedene Arten
80        $cnt=0; // Summe der Buchugen
81        while($rowan = pg_fetch_array($resan)) {
82                $anz=$rowan["anz"];
83
84                // Einleitung
85                if ($zeile == 0) { // vor. 1. Zeile
86                        // Diese Hinweise sollen mit gedruckt werden. Also KEIN "noprint"!
87                        echo "\n\t\t<br>\n\t\t<p class='nwlink' title='Andere Grundst&uuml;cke mit Rechten an diesem.'>\n\t\t\tBerechtigte Buchungen ";
88                        if ($berbu=="j") { // wechselndes Symbol
89                                echo "<img src='ico/Grundbuch_zu.png' width='16' height='16' alt=''>";
90                        } else {
91                                echo "<img src='ico/Grundbuch.png' width='16' height='16' alt=''>";
92                        }
93                        echo "\n\t\t\t<b>";
94                }
95
96                // Eine Zeile je Buchungs-Typ
97                echo "<br>".$anz." ".htmlentities($rowan["v"], ENT_QUOTES, "UTF-8");
98                if ($showkey) {echo " <span class='key'>(".$rowan["buchungsart"].")</span>";}
99                $zeile++;
100                $cnt = $cnt + $anz;
101        } // Ende Result
102        pg_free_result($resan);
103
104        // Ergebnis
105        if ($zeile == 0) { // kein Schleifen-Durchlauf
106                echo "\n\t<p class='nwlink' title='Kein anderes Grundst&uuml;ck hat ein Recht an diesem.'>Keine berechtigte Buchung</p>";
107        } else { // Schleife wurde durchlaufen,
108                echo "</b>\n\t\t</p>";
109
110                // Umschalter nicht drucken
111                echo "\n\t\t<p class='nwlink noprint'>"
112                ."\n\t\t\t<a href='".$_SERVER['PHP_SELF']."?gkz=".$gkz."&amp;gmlid=".$gmlf."&eig=".$eig; // GML FlurstÃŒck
113                if ($showkey) {echo "&amp;showkey=j";}
114                // Der FS-Nachweis ruft sich selbst mit geaendertem Parameter auf.
115                if ($berbu=="j") {
116                        echo "&amp;berbu=n' title='ohne berechtigte Buchungen'>nicht Anzeigen"; // Position: Top
117                } else {
118                        echo "&amp;berbu=j#berbu' title='mit berechtigten Buchungen'>Anzeigen"; // Positionierung auf Marke #berbu
119                }
120                echo "</a>\n\t\t</p>";
121        }
122        return $cnt; // Funktionswert = Anzahl der berechtigten Buchungen
123}
124
125function ber_bs_anz($gmls, $eig) {
126        // Berechtigte Buchungsstellen (+ BlÀtter, EigentÃŒmer) anzeigen innerhalb eines FS-Nachw.
127        // Im FS-Nachweis werden auch die berechtigten GrundbÃŒcher mit ihren EigentÃŒmern angezeigt.
128        // Also z.B. zu einem "fiktiven Blatt" auch die GrundbuÃŒcher mit dem "Wohnungs-/Teileigentum"
129        global $gkz, $debug, $showkey, $idanzeige;
130
131        // Herrschende (berechtigte) Buchungsstellen ausgeben - Beginn
132        // sd=Buchungstelle herrschend >(Recht)an> sd=Buchungstelle dienend >istBestandteilVon> BLATT -> Bezirk
133        $sql="SELECT sd.gml_id AS s_gml, "  // Buchungs-Stelle dienend
134        ."sh.buchungsart, sh.laufendenummer as lfd, sh.zaehler, sh.nenner, sh.nummerimaufteilungsplan as nrpl, sh.beschreibungdessondereigentums as sond, " // Buchungs-Stelle herrschend
135        ."b.gml_id AS g_gml, b.bezirk, b.buchungsblattnummermitbuchstabenerweiterung as blatt, b.blattart, z.bezeichnung, a.v AS bart, w.v AS blattartv "
136        ."FROM ax_buchungsstelle sd "
137        ."JOIN ax_buchungsstelle sh ON sd.gml_id=ANY(sh.an) "
138        ."JOIN ax_buchungsblatt b ON b.gml_id=sh.istbestandteilvon "
139        ."LEFT JOIN ax_buchungsblattbezirk z ON z.land=b.land AND z.bezirk=b.bezirk "
140        ."LEFT JOIN alkis_wertearten a ON sh.buchungsart=cast(a.k AS integer) AND a.element='ax_buchungsstelle' and a.bezeichnung='buchungsart' " // entschlÃŒsseln Buchungsart
141        ."LEFT JOIN alkis_wertearten w ON b.blattart=w.k AND w.element='ax_buchungsblatt' and w.bezeichnung='blattart' " // entschlÃŒsseln Blatt-Art
142        ."WHERE sd.gml_id= $1 AND sd.endet IS NULL AND sh.endet IS NULL AND b.endet IS NULL AND z.endet IS NULL "
143        ."ORDER BY b.bezirk, b.buchungsblattnummermitbuchstabenerweiterung;";
144
145        $v = array($gmls); // id dienende Buchungsstelle
146        $resber = pg_prepare("", $sql);
147        $resber = pg_execute("", $v);
148        if (!$resber) {
149                echo "\n<p class='err'>Fehler bei 'berechtigte Buchungsstellen'.</p>";
150                if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = gml_id = '".$gmls."'</p>";}
151        }
152
153        $an=0;
154        while($rowan = pg_fetch_array($resber)) {
155                $beznam=$rowan["bezeichnung"];
156                $bart=$rowan["bart"]; // Buchungsart
157                $blattkeyber=$rowan["blattart"];  // Schluessel von Blatt-Art des berechtigten GB
158                $blattartber=$rowan["blattartv"]; // Wert von Blatt-Art des berechtigten GB
159                $nrpl=$rowan["nrpl"]; // Nummer im Aufteilungsplan
160                $sond=$rowan["sond"]; // Beschreibung des Sondereigentums
161
162                echo "\n<table class='outer'>" // \n<hr>
163                ."\n<tr>" // 1 row only
164                        ."\n<td>"; // outer linke Spalte - Daten
165                                // Rahmen mit Kennzeichen GB
166                                if ($blattkeyber == 1000) {
167                                        echo "\n\t<table class='kennzgb' title='Bestandskennzeichen'>";
168                                } else {
169                                        echo "\n\t<table class='kennzgbf' title='Bestandskennzeichen'>"; // dotted
170                                }
171                                echo "\n\t<tr>"
172                                        ."\n\t\t<td class='head'>Bezirk</td>"
173                                        ."\n\t\t<td class='head'>".$blattartber."</td>"
174                                        ."\n\t\t<td class='head'>Lfd-Nr,</td>"
175                                        ."\n\t\t<td class='head'>Buchungsart</td>"
176                                ."\n\t</tr>";
177                                echo "\n\t<tr>"
178                                        ."\n\t\t<td title='Grundbuchbezirk'>";
179                                        if ($showkey) {echo "<span class='key'>".$rowan["bezirk"]."</span><br>";}
180                                        echo $beznam."</td>"
181                                        ."\n\t\t<td title='Grundbuch-Blatt'><span class='wichtig'>".$rowan["blatt"]."</span></td>"
182                                        ."\n\t\t<td title='Bestandsverzeichnis-Nummer (BVNR, Grundst&uuml;ck)'>".$rowan["lfd"]."</td>"
183                                        ."\n\t\t<td title='Buchungsart'>";
184                                                if ($showkey) {echo "<span class='key'>".$rowan["buchungsart"]."</span><br>";}
185                                                echo $rowan["bart"]
186                                        ."</td>"
187                                ."\n\t</tr>"
188                                ."\n\t</table>";
189                                if ($rowan["zaehler"] <> "") {
190                                        echo "\n\t<p class='ant'>".$rowan["zaehler"]."/".$rowan["nenner"]."&nbsp;Anteil am Flurst&uuml;ck</p>";
191                                }
192                        echo "\n</td>";
193
194                        echo "\n<td>"; // outer rechte Spalte
195                                if ($idanzeige) {
196                                        linkgml($gkz, $rowan["s_gml"], "Buchungsstelle", "ax_buchungsstelle");
197                                        echo "<br>";
198                                        linkgml($gkz, $rowan["g_gml"], "Buchungsblatt", "");
199                                }
200                                echo "\n\t<br>"
201                                ."\n\t<p class='nwlink noprint'>";
202                                        if ($showkey) {echo "<span class='key'>".$blattkeyber."</span> ";}
203                                        echo "\n\t\t<a href='alkisbestnw.php?gkz=".$gkz."&amp;gmlid=".$rowan["g_gml"];
204                                                if ($idanzeige) {echo "&amp;id=j";}
205                                                if ($showkey)   {echo "&amp;showkey=j";}
206                                                echo "' title='Grundbuchnachweis mit Eigent&uuml;merangabe'>".$blattartber
207                                                ." <img src='ico/GBBlatt_link.png' width='16' height='16' alt=''>"
208                                        ."</a>";
209                                echo "\n\t</p>"
210                        ."\n\t</td>"
211                ."\n</tr>"
212                ."\n</table>";
213
214                if ($blattkeyber != 1000) {
215                        echo "\n<p>Blattart: ".$blattartber." (".$blattkeyber.").<br>";
216                }
217
218                if ($nrpl != "") {
219                        echo "\n<p class='nrap' title='Nummer im Aufteilungsplan'>Nummer <span class='wichtig'>".$nrpl."</span> im Aufteilungsplan.</p>";
220                }
221
222                if ($sond != "") {
223                        echo "\n<p class='sond' title='Sondereigentum'>Verbunden mit dem Sondereigentum<br>".$sond."</p>";
224                }
225
226                if ($eig == "j") {
227                        $n = eigentuemer($rowan["g_gml"], true, ""); // mit Adresse
228                }
229                $an++; 
230        }
231        pg_free_result($resber);
232        return;
233}
234
235
236function kurz_namnr($lang) {
237        // Namensnummer kÃŒrzen. Nicht benötigte Stufen der Dezimalklassifikation abschneiden
238        $kurz=str_replace(".00","",$lang); // leere Stufen (nur am Ende)
239        $kurz=str_replace("0000","",$kurz); // ganz leer (am Anfang)
240        $kurz=ltrim($kurz, "0"); // fuehrende Nullen am Anfang
241        $kurz=str_replace(".0",".",$kurz); // fuehrende Null jeder Stufe
242        $kurz=rtrim($kurz); // Leerzeichen hinten
243        // echo "/n<p class='dbg'> lang='".$lang."'</p>/n<p class='dbg'> kurz='".$kurz."'</p>";
244        return $kurz;
245}
246
247function bnw_fsdaten($con, $lfdnr, $gml_bs, $ba, $anteil, $bvnraus, $bartkey, $bartstory) {
248/*      Bestandsnachweis - Flurstuecksdaten
249        Die Tabellenzeilen mit den Flurstuecksdaten zu einer Buchungsstelle im Bestandsnachweis ausgeben.
250        Die Funktion wird je einmal aufgerufen fÃŒr die Buchungen direkt auf dem GB (Normalfall).
251        Weiterere Aufrufe ggf. bei Erbbaurecht fÃŒr die mit "an" verknuepften Buchungsstellen.
252        Table-Tag und Tabellenkopf werden im aufrufenden Programm ausgegeben. */
253        global $debug, $gkz, $showkey, $filtkreis, $filtgem, $trclass; // $zpaar
254
255        // F L U R S T U E C K
256        $sql="SELECT g.gemarkungsnummer, g.bezeichnung, f.gml_id, f.flurnummer, f.zaehler, f.nenner, f.regierungsbezirk, f.kreis, f.gemeinde, f.amtlicheflaeche
257        FROM ax_flurstueck f JOIN ax_buchungsstelle s ON f.istgebucht=s.gml_id
258        LEFT JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer
259        WHERE f.endet IS NULL AND s.endet IS NULL AND g.endet IS NULL AND s.gml_id= $1 ";
260        if ($filtgem == '' ) { // ungefiltert
261                $v=array($gml_bs);
262        } else {
263                $sql.="AND f.kreis = $2 AND f.gemeinde = $3 "; // ZustÀndiges Gebiet
264                $v=array($gml_bs, $filtkreis, $filtgem);
265        }
266        $sql.="ORDER BY f.gemarkungsnummer, f.flurnummer, f.zaehler, f.nenner;";
267        $resf = pg_prepare("", $sql);
268        $resf = pg_execute("", $v);
269        if (!$resf) {echo "\n<p class='err'>Fehler bei Flurst&uuml;ck</p>";}
270
271        if($bvnraus) { // nur bei direkten Buchungen die lfdNr ausgeben
272                $bvnr=str_pad($lfdnr, 4, "0", STR_PAD_LEFT);
273        } else {
274                $bvnr="";
275        }
276        $altbvnr="";
277        $j=0;
278        while($rowf = pg_fetch_array($resf)) {
279                $flur=str_pad($rowf["flurnummer"], 3, "0", STR_PAD_LEFT);
280                $fskenn=$rowf["zaehler"];
281                if ($rowf["nenner"] != "") { // Bruch
282                        $fskenn.="/".$rowf["nenner"];
283                }
284                $flae=number_format($rowf["amtlicheflaeche"],0,",",".") . " m&#178;";
285
286                echo "\n<tr class='".$trclass."'>"; // eine Zeile je Flurstueck
287                        // Sp. 1-3 der Tab. aus Buchungsstelle, nicht aus FS
288                        if($bvnr == $altbvnr) { // gleiches Grundstueck, leer lassen
289                                echo "\n\t<td>&nbsp;</td>"
290                                ."\n\t<td>&nbsp;</td>"
291                                ."\n\t<td>&nbsp;</td>";
292                        } else { // Sprungmarke, BVNR
293                                echo "\n\t<td id='bvnr".$bvnr."'>"; // Sprungmarke
294                                //      echo "\n\t\t<a id='bvnr".$bvnr."'></a>";
295                                        echo "<span class='wichtig'>".$bvnr."</span>"
296                                ."\n\t</td>";
297
298                                echo "\n\t<td title ='".$bartstory."'>"; // Buchungsart
299                                        if ($showkey) {echo "<span class='key'>".$bartkey."</span>&nbsp;";} // Schluessel
300                                        echo $ba; // entschluesselt
301                                echo "</td>"
302                                ."\n\t<td>&nbsp;</td>"; // Anteil
303                                $altbvnr=$bvnr;
304                        }
305
306                        // Sp. 4-7 aus Flurstueck
307                        echo "\n\t<td>";
308                        if ($showkey) {echo "<span class='key'>".$rowf["gemarkungsnummer"]."</span> ";}
309                        echo $rowf["bezeichnung"]."</td>"
310                        ."\n\t<td>".$flur."</td>"
311                        ."\n\t<td class='fsnr'><span class='wichtig'>".$fskenn."</span>"
312                        ."</td>"
313                        ."\n\t<td class='flag'>".$flae."</td>"; // "width" hier (flaG) erweiterbar, weil in andere Zeile die Buchungsart steht
314
315                        echo "\n\t<td>\n\t\t<p class='nwlink noprint'>"
316                                ."\n\t\t\t<a href='alkisfsnw.php?gkz=".$gkz."&amp;gmlid=".$rowf["gml_id"]."&amp;eig=n";
317                                        if ($showkey)   {echo "&amp;showkey=j";}
318                                        echo "' title='Flurst&uuml;cksnachweis'>Flurst&uuml;ck "
319                                        ."<img src='ico/Flurstueck_Link.png' width='16' height='16' alt=''>"
320                                ."</a>"
321                        ."\n\t\t</p>"
322                ."\n\t</td>"
323                ."\n</tr>";
324
325                $j++;
326        } // Ende Loop Flurstueck
327        pg_free_result($resf);
328        return $j;
329}
330
331function eigentuemer($gmlid, $mitadresse, $lnkclass) {
332        // Tabelle mit Eigentuemerdaten zu einem Grundbuchblatt ausgeben
333        // Sp.1 = Namennummer, Sp. 2 = Name / Adresse, Sp. 3 = Link
334        // Parameter:
335        //      $gmlid = ID GB-Blattes
336        //      $mitadresse = Option (true/false) ob die Adresszeile ausgegeben werden soll
337        // Return = Anzahl Namensnummern
338
339        // Schleife 1: N a m e n s n u m m e r
340        // Beziehung: ax_namensnummer >istBestandteilVon> ax_buchungsblatt
341        global $debug, $gkz, $showkey;
342
343        // Link ÃŒber Java-Class? (Ja in alkisinlayausk.php, sonst normal)
344        if ($lnkclass == "") {
345                $lnkvor = "";
346                $lnknach = "";
347        } else {
348                $lnkvor  = "javascript:".$lnkclass."(\"";
349                $lnknach = "\")";
350        } // Beispiel-Link href='javascript:imFenster(\"alkislage.php?gkz= ... ."\")'>xxx ";
351
352        $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.v AS adrv, we.v AS eiartv "
353        ."FROM ax_namensnummer n "
354        ."LEFT JOIN alkis_wertearten wn ON cast(n.artderrechtsgemeinschaft AS character varying)=wn.k AND wn.element='ax_namensnummer' AND wn.bezeichnung='artderrechtsgemeinschaft' "
355        ."LEFT JOIN alkis_wertearten we ON cast(n.eigentuemerart AS character varying)=we.k AND we.element='ax_namensnummer' AND we.bezeichnung='eigentuemerart' "
356        ."WHERE n.istbestandteilvon= $1 AND n.endet IS NULL ORDER BY n.laufendenummernachdin1421;";
357
358        $v = array($gmlid); // 16 Stellen bei Relationen
359        $resn = pg_prepare("", $sqln);
360        $resn = pg_execute("", $v);
361
362        if (!$resn) {
363                echo "\n<p class='err'>Fehler bei Eigent&uuml;mer</p>";
364                // kein Fehler bei Blattarten > 1000
365                //if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".$sqln."<br>$1=gml= '".$gmlid."'</p>";}
366        }
367
368        $n=0; // Z.NamNum.
369        while($rown = pg_fetch_array($resn)) {
370                if($n == 0) { // Die Überschrift nur, wenn auch ein Inhalt folgt
371                        echo "\n\n<h3><img src='ico/Eigentuemer_2.png' width='16' height='16' alt=''> Angaben zum Eigentum</h3>"
372                        ."\n<table class='eig'>";
373                }
374                $gmlnn=$rown["gml_id"];
375                $namnum=kurz_namnr($rown["lfd"]);
376                $rechtsg=$rown["adr"];
377                echo "\n<tr>"
378                        ."\n\t<td class='nanu' title='Namens-Nummer'>\n\t\t<p>" // Sp. 1
379                                .$namnum."&nbsp;" // VOR die Tabelle: "EigentÃŒmer"
380                        ."</p>\n\t</td>"
381                        . "\n\t<td>"; // Sp. 2
382                        if ($rechtsg != "" ) {
383                                if ($rechtsg == 9999) { // sonstiges
384                                        echo "\n\t\t<p class='zus' title='Beschrieb der Rechtsgemeinschaft'>".htmlentities($rown["beschr"], ENT_QUOTES, "UTF-8")."</p>";
385                                } else {
386                                        echo "\n\t\t<p class='zus' title='Art der Rechtsgemeinschaft'>".htmlentities($rown["adrv"], ENT_QUOTES, "UTF-8")."</p>";
387                                }
388                        }
389                        //if ($rown["anlass"] > 0 ) {echo "<p>Anlass=".$rown["anlass"]."</p>";} // TEST:
390
391                        // Schleife Ebene 2: andere Namensnummern
392                        // Beziehung   ax_namensnummer >bestehtAusRechtsverhaeltnissenZu>  ax_namensnummer
393
394                        // Die Relation 'Namensnummer' besteht aus RechtsverhÀltnissen zu 'Namensnummer' sagt aus,
395                        // dass mehrere Namensnummern zu einer Rechtsgemeinschaft gehören können.
396                        // Die Rechtsgemeinschaft selbst steht unter einer eigenen AX_Namensnummer,
397                        // die zu allen Namensnummern der Rechtsgemeinschaft eine Relation besitzt.
398
399                // Schleife 2: P e r s o n
400                // Beziehung: ax_person  <benennt<  ax_namensnummer
401                $sqlp="SELECT gml_id, nachnameoderfirma, vorname, geburtsname, geburtsdatum, namensbestandteil, akademischergrad "
402                ."FROM ax_person WHERE gml_id= $1 AND endet IS NULL;";
403                $gmlpers=$rown["benennt"];
404                $v = array($gmlpers); // gml_id von ax_person
405                $resp = pg_prepare("", $sqlp);
406                $resp = pg_execute("", $v);
407                if (!$resp) {
408                        echo "\n\t<p class='err'>Fehler bei Person</p>";
409                        if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".$sqlp."<br>$1=gml= '".$gmlpers."'</p>";}
410                }
411
412                $i=0; // cnt Person
413                while($rowp = pg_fetch_array($resp)) { // Schleife weglassen? nn >benennt> Person ist KEIN Array!
414                        $diePerson=""; //++ Anrede?
415                        if ($rowp["akademischergrad"] <> "") {$diePerson=$rowp["akademischergrad"]." ";}
416                        $diePerson.=$rowp["nachnameoderfirma"];
417                        if ($rowp["vorname"] <> "") {$diePerson.=", ".$rowp["vorname"];}
418                        if ($rowp["namensbestandteil"] <> "") {$diePerson.=". ".$rowp["namensbestandteil"];}
419                        if ($rowp["geburtsdatum"] <> "") {$diePerson.=", geb. ".$rowp["geburtsdatum"];}
420                        if ($rowp["geburtsname"] <> "") {$diePerson.=", geb. ".$rowp["geburtsname"];}
421                        $diePerson=htmlentities($diePerson, ENT_QUOTES, "UTF-8"); // Umlaute
422
423                        if ($i > 0) { // Spalte 1 enthÀlt die Namensnummer, nur in Zeile 0
424                                echo "\n<tr>\n\t<td>&nbsp;</td>\n\t<td>";
425                        }
426                        // Spalte 2 = Angaben
427                        $eiartkey=$rown["eigentuemerart"]; // Key
428                        $eiart=$rown["eiartv"]; // Value
429                        echo "\n\t\t<p class='geig' title='Eigent&uuml;merart: ".$eiart."'>".$diePerson."</p>\n\t</td>";
430
431                        // Spalte 3 = Link
432                        echo "\n\t<td>\n\t\t<p class='nwlink noprint'>";
433                                if ($showkey AND $eiartkey != '') { // oft leer
434                                        echo "<span class='key' title='Eigent&uuml;merart'>".$eiartkey."</span> ";
435                                }
436                                echo "\n\t\t\t<a href='".$lnkvor."alkisnamstruk.php?gkz=".$gkz."&amp;gmlid=".$rowp[0];
437                                if ($showkey) {echo "&amp;showkey=j";}
438                                echo $lnknach."' title='vollst&auml;ndiger Name und Adresse eines Eigent&uuml;mers'>".$eiart
439                                ." <img src='ico/Eigentuemer.png' width='16' height='16' alt=''></a>\n\t\t</p>"
440                        ."\n\t</td>\n</tr>";
441
442                        if ($mitadresse) {
443                                // Schleife 3:  A d r e s s e  (OPTIONAL)
444                                $sqla ="SELECT a.gml_id, a.ort_post, a.postleitzahlpostzustellung AS plz, a.strasse, a.hausnummer, a.bestimmungsland "
445                                ."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 LIMIT 2;";
446                                $gmlp=$rowp["gml_id"]; // Person
447                                $v = array($gmlp);
448                                $resa = pg_prepare("", $sqla);
449                                $resa = pg_execute("", $v);
450
451                                if (!$resa) {
452                                        echo "\n\t<p class='err'>Fehler bei Adressen</p>";
453                                        if ($debug > 2) {echo "\n<p class='err'>SQL=<br>".$sqla."<br>$1=gml= '".$gmlp."'</p>";}
454                                }
455                                $j=0;
456                                while($rowa = pg_fetch_array($resa)) {
457                                        $j++;
458                                        if ($j == 1) { // erste Adresse anzeigen
459                                                $gmla=$rowa["gml_id"];
460                                                $plz=$rowa["plz"]; // integer
461                                                if($plz == 0) {
462                                                        $plz="";
463                                                } else {
464                                                        $plz=str_pad($plz, 5, "0", STR_PAD_LEFT);
465                                                }
466                                                $ort=htmlentities($rowa["ort_post"], ENT_QUOTES, "UTF-8");
467                                                $str=htmlentities($rowa["strasse"], ENT_QUOTES, "UTF-8");
468                                                $hsnr=$rowa["hausnummer"];
469                                                $land=htmlentities($rowa["bestimmungsland"], ENT_QUOTES, "UTF-8");
470
471                                                echo "\n<tr>\n\t<td>&nbsp;</td>"; //Sp. 1
472                                                echo "\n\t<td><p class='gadr'>"; //Sp. 2
473                                                if ($str.$hsnr != "") {echo $str." ".$hsnr."<br>";}
474                                                if ($plz.$ort != "") {echo $plz." ".$ort;}
475                                                if ($land != "" and $land != "DEUTSCHLAND") {echo ", ".$land;}
476                                                echo "</p></td>\n\t<td>"; // Sp. 3
477                                                echo "&nbsp;</td>\n</tr>";
478                                        } else { // manchmal dopplete Angaben (_straße / _str.)
479                                                echo "\n<tr>\n\t<td>&nbsp;</td>\n\t<td><p class='dbg' title='Siehe Auskunft zur Person'>weitere Adresse</p></td>\n\t<td>&nbsp;</td>\n</tr>";
480                                        }
481                                }
482                                pg_free_result($resa);
483                        }
484                        // 'keine Adresse' kann vorkommen, z.B. "Deutsche Telekom AG"
485                        $i++; // cnt Person
486
487                        // Anteil als eigene Tab-Zeile:
488                        $zaehler=$rown["zaehler"];
489                        if ($zaehler != "") {
490                                $zaehler=str_replace(".", ",", $zaehler); // Dezimal-KOMMA wenn dem Notar der Bruch nicht reicht
491                                $nenner=str_replace(".", ",", $rown["nenner"]);
492                                $comnt="Anteil der Berechtigten in Bruchteilen (Par. 47 GBO) an einem gemeinschaftlichen Eigentum (Grundst&uuml;ck oder Recht).";
493                                echo "\n<tr>\n\t<td>&nbsp;</td>" // Sp. 1
494                                ."\n\t<td><p class='avh' title='".$comnt."'>".$zaehler."/".$nenner." Anteil</p></td>"
495                                ."\n\t<td>&nbsp;</td>\n</tr>"; // Sp. 3
496                        }
497                } // End Loop Person
498                if ($i == 0) { // Keine Person. Das kommt vor hinter der Zeile "Erbengemeinschaft" und ist dann KEIN Fehler
499                        if ($rechtsg != 9999) {
500                                echo "\n<p class='err'>(Die Person mit der ID '".$gmlpers."' fehlt im Datenbestand)</p>";
501                        } else {
502                                if ($debug > 1) { // nur bei Entwicklung
503                                        echo "\n\t\t<p class='dbg'>Rechtsgemeinschaft = '".$rechtsg."'</p>";
504                                }
505                        }
506                        echo "</td>\n\t<td>&nbsp;</td>\n</tr>";
507                }
508                $n++; // cnt NamNum
509        } // End Loop NamNum
510        if($n > 0) {
511                echo "\n</table>";
512        } else { // $n == 0, bei "Fiktives Blatt" KEIN Fehler
513                if ($debug > 1) {
514                        echo "\n<p class='dbg'>keine Namensnummern zum Blatt</p>";
515                        //if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".$sqln."<br>$1=gml(Blatt)= '".$gmlid."'</p>";}
516                }
517        }
518        pg_free_result($resn);
519        return $n;
520} // End function eigentuemer
521
522?>
Note: See TracBrowser for help on using the repository browser.