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

Revision 394, 22.8 KB checked in by frank.jaeger, 3 years ago (diff)

ALKIS-Buchauskunft, im Flurstücksnachweis, Abschnitt Bodenschätzung: Ausgabe Enststehungsart, Klimastufe + Wasserverhältnisse (Arrays)

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