source: trunk/info/info/alkisn/alkisnamstruk.php @ 427

Revision 427, 11.7 KB checked in by frank.jaeger, 2 years ago (diff)

Überarbeitung der Auskunft: Durch Functions den Code verdichtet. Drei neue Arten von Bauwerken.

Line 
1<?php
2/*      alkisnamstruk.php
3
4        ALKIS-Auskunft
5        Author: Frank JÀger, Kommunales Rechenzentrum Minden-Ravensberg/Lippe (Lemgo)
6
7        Namens- und Adressdaten fÃŒr einen EigentÃŒmer aus ALKIS PostNAS
8
9        Version:
10        2016-02-24 Version fÃŒr norGIS-ALKIS-Import
11        ...
12        2020-02-20 Authentifizierung ausgelagert in Function darf_ich()
13        2020-12-03 function selbstverlinkung() statt $_SERVER['PHP_SELF']
14        2020-12-15 Input-Validation und Strict Comparisation (===)
15        2021-12-09 Neue Parameter: $katAmtMix (Kataster-Amt-Mix), $PrntBtn (Drucken-SchaltflÀche). Gruppenwechsel Bezirk.
16        2022-01-13 Neue Functions LnkStf(), DsKy()
17*/
18ini_set("session.cookie_httponly", 1);
19session_start();
20$multiadress="n"; $showkey="n"; $nodebug=""; // Var. aus Parameter initalisieren
21$cntget = extract($_GET); // Parameter in Variable umwandeln
22
23// strikte Validierung aller Parameter
24if (isset($gmlid)) {
25        if (!preg_match('#^[0-9A-Za-z]{16}$#', $gmlid)) {die("Eingabefehler gmlid");}
26} else {
27        die("Fehlender Parameter");
28}
29if (isset($gkz)) {
30        if (!preg_match('#^[0-9]{3}$#', $gkz)) {die("Eingabefehler gkz");}
31} else {
32        die("Fehlender Parameter");
33}
34if (!preg_match('#^[j|n]{0,1}$#', $showkey)) {die ("Eingabefehler showkey");}
35if ($showkey === "j") {$showkey=true;} else {$showkey=false;}
36if (!preg_match('#^[j|n]{0,1}$#', $multiadress)) {die ("Eingabefehler multiadress");}
37if (!preg_match('#^j{0,1}$#', $nodebug)) {die("Eingabefehler nodebug");}
38
39require_once("alkis_conf_location.php");
40include("alkisfkt.php");
41?>
42<!doctype html>
43<html lang="de">
44<head>
45        <meta charset="utf-8">
46        <meta name="viewport" content="width=device-width, initial-scale=1.0">
47        <title>ALKIS Person und Adresse</title>
48        <link rel="stylesheet" type="text/css" href="alkisauszug.css">
49        <link rel="shortcut icon" type="image/x-icon" href="ico/Eigentuemer_2.ico">
50        <script type="text/javascript">
51                function ALKISexport() {
52                        window.open(<?php echo "'alkisexport.php?gkz=".$gkz."&tabtyp=person&gmlid=".$gmlid."'"; ?>);
53                }
54        </script>
55</head>
56<body>
57<?php
58$erlaubnis = darf_ich(); if ($erlaubnis === 0) { die('<p class="stop1">Abbruch</p></body>'); }
59$dbg=$debug;
60if ($nodebug === "j") {$dbg=0;}
61
62echo "<p class='balken nakennz'>ALKIS Name id=".$gmlid."&nbsp;</p>\n"
63."\n<h2><img src='ico/Eigentuemer.png' width='16' height='16' alt=''> Person</h2>";
64$con = pg_connect($dbconn." options='--application_name=ALKIS-Auskunft_alkisnamstruk.php'");
65if (!$con) "\n<p class='err'>Fehler beim Verbinden der DB</p>";
66
67$sql="SELECT p.nachnameoderfirma, p.anrede, p.vorname, p.geburtsname, to_char(cast(p.geburtsdatum AS date),'DD.MM.YYYY') AS geburtsdatum,
68p.namensbestandteil, p.akademischergrad, a.beschreibung AS anrv
69FROM ax_person p LEFT JOIN ax_anrede_person a ON p.anrede = a.wert WHERE gml_id= $1 AND p.endet IS NULL;";
70
71$v = array($gmlid);
72$res = pg_prepare("", $sql);
73$res = pg_execute("", $v);
74
75if (!$res) {
76        echo "\n<p class='err'>Fehler bei Zugriff auf Namensnummer</p>";
77        if ($dbg > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities(str_replace("$1", "'".$gmlid."'", $sql), ENT_QUOTES, "UTF-8")."</p>";}
78}
79if ($dbg > 0) {
80        $zeianz=pg_num_rows($res);
81        if ($zeianz > 1){
82                echo "\n<p class='err'>Die Abfrage liefert mehr als eine Person!</p>";
83                if ($dbg > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities(str_replace("$1","'".$gmlid."'",$sql), ENT_QUOTES, "UTF-8")."</p>";}
84        }
85}
86if ($row = pg_fetch_assoc($res)) {
87        $vor=htmlentities($row["vorname"], ENT_QUOTES, "UTF-8");
88        $nam=htmlentities($row["nachnameoderfirma"], ENT_QUOTES, "UTF-8");
89        $geb=htmlentities($row["geburtsname"], ENT_QUOTES, "UTF-8");
90        $anrk=$row["anrede"]; // Key
91        $anr=$row["anrv"]; // Value
92        $nbest=htmlentities($row["namensbestandteil"], ENT_QUOTES, "UTF-8");
93        $aka=htmlentities($row["akademischergrad"], ENT_QUOTES, "UTF-8");
94
95        echo "<table>"
96                ."\n\t<tr><td class='nhd'>Anrede:</td><td class='nam'>".DsKy($anrk, '* der Anrede-Kennung').$anr."</td></tr>"
97                ."\n\t<tr><td class='nhd'>Nachname oder Firma:</td><td class='nam'>".$nam."</td></tr>"
98                ."\n\t<tr><td class='nhd'>Vorname:</td><td class='nam'>".$vor."&nbsp;</td></tr>"
99                ."\n\t<tr><td class='nhd'>Geburtsname:</td><td class='nam'>".$geb."&nbsp;</td></tr>"
100                ."\n\t<tr><td class='nhd'>Geburtsdatum:</td><td class='nam'>".$row["geburtsdatum"]."&nbsp;</td></tr>"
101                ."\n\t<tr><td class='nhd'>Namensbestandteil:</td><td class='nam'>".$nbest."&nbsp;</td></tr>"
102                ."\n\t<tr><td class='nhd'>akademischer Grad:</td><td class='nam'>".$aka."&nbsp;</td></tr>"
103        ."\n</table>\n<hr>";
104
105        // A d r e s s e
106        if ($multiadress === "j") {$plural="n";} else {$plural="";}
107        echo "\n\n<h3><img src='ico/Strasse_mit_Haus.png' width='16' height='16' alt=''> Adresse".$plural."</h3>";
108        // Es können redundante Adressen vorhanden sein, z.B. aus Migration, temporÀr aus LBESAS.
109        // Im Normalfall nur die "letzte" davon anzeigen. Auf Wunsch alle anzeigen, dazu den Anlass und das Datum um das zu bewerten.
110        $sqla ="SELECT a.gml_id, w.value AS anltxt, a.anlass, to_char(cast(a.beginnt AS date),'DD.MM.YYYY') AS datum, a.ort_post, a.postleitzahlpostzustellung AS plz, a.strasse, a.hausnummer, a.bestimmungsland "
111        ."FROM ax_anschrift a JOIN ax_person p ON a.gml_id=ANY(p.hat) "
112        ."LEFT JOIN aa_anlassart w ON w.id = ANY(a.anlass) "
113        ."WHERE p.gml_id= $1 AND a.endet IS NULL AND p.endet IS NULL ORDER BY a.beginnt DESC ;";
114
115        $v = array($gmlid);
116        $resa = pg_prepare("", $sqla);
117        $resa = pg_execute("", $v);
118        if (!$resa) {
119                echo "\n<p class='err'>Fehler bei Adressen</p>";
120                if ($dbg > 2) {echo "\n<p class='err'>SQL=<br>". str_replace("$1", "'".$gmlid."'", $sqla)."</p>";}
121        }
122
123        $j=0;
124        // Parameter $multiadress = j zeigt ALLE Adressen an
125        while($rowa = pg_fetch_assoc($resa)) {
126                $j++;
127                if ($multiadress === "j" OR $j === 1) {
128                        $gmla=$rowa["gml_id"];
129                        $plz=$rowa["plz"];
130                        $ort=htmlentities($rowa["ort_post"], ENT_QUOTES, "UTF-8");
131                        $str=htmlentities($rowa["strasse"], ENT_QUOTES, "UTF-8");
132                        $hsnr=$rowa["hausnummer"];
133                        $land=htmlentities($rowa["bestimmungsland"], ENT_QUOTES, "UTF-8");
134                        $anlass=trim($rowa["anlass"], "{}"); // Key
135                        $anltxt=$rowa["anltxt"]; // Value
136                        $datum=$rowa["datum"];
137                        echo "<table>\n";
138                                if ($multiadress === "j" OR $showkey) {
139                                        if ($dbg > 0) { // nur Entw.: Sortierung gml_id vs. beginnt?
140                                                echo "\t<tr><td class='dbg'>gml_id:</td><td class='dbg'>".$rowa["gml_id"]."</td></tr>\n";
141                                        }
142                                        echo "\t<tr><td class='nhd'>Datum:</td><td class='nam'>".$datum."</td></tr>\n"
143                                        ."\t<tr><td class='nhd'>Anlass:</td><td class='nam'>".DsKy($anlass, 'Anlass-*').$anltxt."</td></tr>\n";
144                                }
145                                echo "\t<tr><td class='nhd'>PLZ:</td><td class='nam'>".$plz."</td></tr>\n"
146                                ."\t<tr><td class='nhd'>Ort:</td><td class='nam'>".$ort."</td></tr>\n"
147                                ."\t<tr><td class='nhd'>Strasse:</td><td class='nam'>".$str."</td></tr>\n"
148                                ."\t<tr><td class='nhd'>Hausnummer:</td><td class='nam'>".$hsnr."</td></tr>\n"
149                                ."\t<tr><td class='nhd'>Land:</td><td class='nam'>".$land."</td></tr>\n"
150                        ."\n</table>\n<br>";
151
152                        // Name und Adresse Kompakt (im Rahmen) - Alles was man fÃŒr ein Anschreiben braucht
153                        echo "\n<img src='ico/Namen.png' width='16' height='16' alt='Brief' title='Anschrift'>"
154                        ."\n<div class='adr' title='Anschrift'>\n\t".$anr." ".$aka." ".$vor." ".$nbest." ".$nam."<br>"
155                        ."\n\t".$str." ".$hsnr."<br>"
156                        ."\n\t".$plz." ".$ort."\n</div>";
157                }
158        }
159        pg_free_result($resa);
160        if ($j === 0) {
161                echo "\n<p class='err'>Keine Adressen.</p>";
162        } elseif ($j > 1) {
163                echo "\n\t\t<p class='nwlink noprint'>"
164                ."\n\t\t\t<a href='".selbstverlinkung(). "?gkz=".$gkz."&amp;gmlid=".$gmlid.LnkStf();
165                if ($multiadress === "j") {
166                        echo "&amp;multiadress=n' title='mehrfache Adressen unterdr&uuml;cken'>erste Adresse ";
167                } else {
168                        echo "&amp;multiadress=j' title='Adressen ggf. mehrfach vorhanden'>alle Adressen ";
169                }
170                echo "\n\t\t\t</a>"
171                ."\n\t\t</p>";
172        }
173
174        // G R U N D B U C H
175        echo "\n<hr>\n<h3><img src='ico/Grundbuch_zu.png' width='16' height='16' alt=''> Grundb&uuml;cher</h3>";
176        // person <benennt< namensnummer >istBestandteilVon>                Buchungsblatt
177        //                               >bestehtAusRechtsverhaeltnissenZu> namensnummer   (Nebenzweig/SonderfÀlle?)
178
179        $sqlg ="SELECT n.gml_id AS gml_n, n.laufendenummernachdin1421 AS lfd, n.zaehler, n.nenner, g.gml_id AS gml_g, g.bezirk, g.buchungsblattnummermitbuchstabenerweiterung as nr, g.blattart, wb.beschreibung AS blattartv, b.bezeichnung AS beznam "
180        ."FROM ax_person p JOIN ax_namensnummer n ON p.gml_id=n.benennt "
181        ."JOIN ax_buchungsblatt g ON g.gml_id=n.istbestandteilvon "
182        ."LEFT JOIN ax_buchungsblattbezirk b ON g.land=b.land AND g.bezirk=b.bezirk ".UnqKatAmt("g","b")
183        ."LEFT JOIN ax_blattart_buchungsblatt wb ON g.blattart = wb.wert "
184        ."WHERE p.gml_id= $1 AND p.endet IS NULL AND n.endet IS NULL AND b.endet IS NULL "
185        ."ORDER BY b.bezeichnung, g.buchungsblattnummermitbuchstabenerweiterung, n.laufendenummernachdin1421;";
186
187        $v = array($gmlid);
188        $resg = pg_prepare("", $sqlg);
189        $resg = pg_execute("", $v);
190
191        if (!$resg) {
192                echo "\n<p class='err'>Fehler bei Grundbuch</p>";
193                if ($dbg > 2) {
194                        echo "\n<p class='err'>SQL=<br>".htmlentities(str_replace("$1", "'".$gmlid."'", $sqlg ), ENT_QUOTES, "UTF-8")."</p>";
195                }
196        }
197        echo "<table class='eig'>"
198        ."\n<tr>"
199                ."\n\t<td class='heads'>Bezirk<img src='ico/sort.png' width='10' height='10' alt='' title='Sortierung'></td>"
200                ."\n\t<td class='head'>Blattart</td>"
201                ."\n\t<td class='heads'>Blatt<img src='ico/sort.png' width='10' height='10' alt='' title='Sortierung'></td>"
202                ."\n\t<td class='heads'>Namensnummer<img src='ico/sort.png' width='10' height='10' alt='' title='Sortierung'></td>"
203                ."\n\t<td class='head'>Anteil</td>"
204                ."\n\t<td class='head nwlink noprint' title='Verlinkung zu anderen Nachweis-Arten und verbundenen Objekten'>weitere Auskunft</td>"
205        ."\n</tr>";
206
207        $i=0;
208        $zpaar=false;
209        $gwbeznam='';
210        while($rowg = pg_fetch_assoc($resg)) {
211                $gmln=$rowg["gml_n"];
212                $gmlg=$rowg["gml_g"];
213                $namnum=kurz_namnr($rowg["lfd"]);
214                $zae=$rowg["zaehler"];
215                $blattkey=$rowg["blattart"]; // Key
216                $blattart=$rowg["blattartv"]; // Value
217                if ($zpaar) {$trclass='paa';} else {$trclass='unp';}
218                $beznam=$rowg["beznam"];
219                $zpaar=!$zpaar;
220                echo "\n<tr class='".$trclass."'>"
221                        ."\n\t<td>".DsKy($rowg["bezirk"], 'Grundbuch-Bezirks-*');
222                        if ($gwbeznam != $beznam){
223                                echo "<b>".$beznam."</b>";
224                                $gwbeznam=$beznam;
225                        } else {
226                                echo $beznam;
227                        }
228                        echo "</td>";
229
230                        echo "\n\t<td>".DsKy($blattkey, 'Blattart-*').$blattart."</td>";
231                        echo "\n\t<td><span class='wichtig'>".$rowg["nr"]."</span></td>";// Blatt
232
233                        echo "\n\t<td>"; // Namensnummer
234                        if ($namnum == "") {
235                                echo "&nbsp;";
236                        } else {
237                                echo $namnum;
238                        }
239                        echo "</td>";
240
241                        echo "\n\t<td>"; // Anteil
242                        if ($zae == '') {
243                                echo "&nbsp;";
244                        } else {
245                                echo $zae."/".$rowg["nenner"]." Anteil";
246                        }
247                        echo "</td>"
248                        ."\n\t<td>"
249                        ."\n\t\t<p class='nwlink noprint'>"
250                                ."\n\t\t\t<a href='alkisbestnw.php?gkz=".$gkz."&amp;gmlid=".$gmlg.LnkStf()."' title='Bestandsnachweis'>".$blattart
251                                ."\n\t\t\t<img src='ico/GBBlatt_link.png' width='16' height='16' alt=''></a>"
252                        ."\n\t\t</p>"
253                        ."\n\t</td>"
254                ."\n</tr>";
255                // +++ >bestehtAusRechtsverhaeltnissenZu> namensnummer ?
256                // z.B. eine Namennummer "Erbengemeinschaft" zeigt auf Namensnummern mit EigentÃŒmern
257                $i++;
258        }
259        pg_free_result($resg);
260        echo "</table>";
261        if ($i === 0) {echo "\n<p class='err'>Kein Grundbuch.</p>";}
262} else {
263        echo "\n\t<p class='err'>Fehler! Kein Treffer f&uuml;r Person".$gmlid."</p>\n";
264}
265pg_free_result($res);
266
267echo "\n<div class='buttonbereich noprint'>\n<hr>"
268        ."\n\t<a title='zur&uuml;ck' href='javascript:history.back()'><img src='ico/zurueck.png' width='16' height='16' alt='zur&uuml;ck'></a>&nbsp;";
269if ($PrntBtn==true){echo "\n\t<a title='Drucken' href='javascript:window.print()'><img src='ico/print.png' width='16' height='16' alt='Drucken'></a>&nbsp;";}
270echo "\n\t<a title='Export als CSV' href='javascript:ALKISexport()'><img src='ico/download.png' width='16' height='16' alt='Export'></a>&nbsp;"
271."\n</div>";
272
273footer($gmlid, selbstverlinkung()."?", "");
274?>
275
276</body>
277</html>
Note: See TracBrowser for help on using the repository browser.