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

Revision 391, 21.9 KB checked in by frank.jaeger, 7 years ago (diff)

ALKIS-Auskunft: Deutsches Datumsformat tt.mm.jjjj bei Geburtsdatum von Eigentümern und Entstehung des Flurstücks.

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