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

Revision 422, 11.7 KB checked in by frank.jaeger, 3 years ago (diff)

Aktualisierungen der ALKIS-Buchauskunft, neues Modul für Bauwerke, Härtung

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