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

Revision 430, 11.9 KB checked in by frank.jaeger, 22 months ago (diff)

ALKIS-Auskunft angepasst an PHP 8

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