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

Revision 412, 11.7 KB checked in by frank.jaeger, 5 years ago (diff)

Anpassung der ALKIS-Auskunft (PHP) an die Full-Schema-Version des ALKIS-Importers 3.0

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