source: trunk/data/mapbender/http/nav/alkisnav_eig.php @ 136

Revision 135, 12.1 KB checked in by astrid.emde, 12 years ago (diff)

Umstellung auf Suche in der Art:

Nachname
Nachname, Vorname
Nachna*
Doppel-Name, Vor*
Nachname, Zwei Vornamen
Nachname, Doppel-Vorname

Line 
1<?php
2/* Version vom
3        13.01.2011
4        11.04.2011 epsg in Link, transform nur wenn notwendig
5        25.07.2011 PostNAS 0.5/0.6 Versionen unterscheiden
6        24.10.2011 Nach Pos-Klick Highlight erneuern statt hideHighlight
7        17.11.2011 Nachweis-Links ÃŒber javascript im neuen Hochformat-Fenster
8        02.12.2011 Suche nach Vorname Nachname oder Nachname
9*/
10import_request_variables("PG");
11include("../../conf/alkisnav_conf.php");
12$con_string = "host=".$host." port=".$port." dbname=".$dbname.$dbvers.$gkz." user=".$user." password=".$password;
13$con = pg_connect ($con_string) or die ("<p class='err'>Fehler bei der Verbindung zur Datenbank</p>".$dbname.$dbvers.$gkz);
14// ToDo: Buchung zwischen Blatt und Flst?
15?>
16
17<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
18<html>
19<head>
20        <meta http-equiv="cache-control" content="no-cache">
21        <meta http-equiv="pragma" content="no-cache">
22        <meta http-equiv="expires" content="0">
23        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
24        <title>ALKIS-Suche Eigent&uuml;mer</title>
25        <link rel="stylesheet" type="text/css" href="alkisnav.css">
26        <script type="text/javascript">
27                function imFenster(dieURL) {
28                        var link = encodeURI(dieURL);
29                        window.open(link,'','left=10,top=10,width=620,height=800,resizable=yes,menubar=no,toolbar=no,location=no,status=no,scrollbars=yes');
30                }
31        </script>
32</head>
33<body>
34
35<?php
36
37function getEigByName() {
38// 1 =============================
39// Eigentuemer nach Name(-nsanfang)
40// ===============================
41        global $gkz, $gemeinde, $epsg, $con, $name, $person, $gb;
42        $linelimit=120;
43        $arr = explode(",", $name);
44        $name0 = trim($arr[0]);
45        $name1 = trim($arr[1]);
46        if(preg_match("/\*/",$name0)){
47                $match = trim(preg_replace("/\*/i","%", strtoupper($name0)));
48        } else {
49                $match = trim($name0)."%";
50        }       
51       
52        if(preg_match("/\*/",$name1)){
53                $match1 = trim(preg_replace("/\*/i","%", strtoupper($name1)));
54        } else {
55                $match1 = trim($name1)."%";
56        }               
57       
58        $sql ="SELECT p.nachnameoderfirma, p.vorname, p.gml_id FROM ax_person as p ";
59        if($match1 != '%'){
60                $sql.="WHERE nachnameoderfirma ILIKE $1 AND p.vorname ILIKE $2 ";               
61                $sql.="ORDER BY p.nachnameoderfirma, p.vorname LIMIT $3 ;";
62                $v=array($match, $match1, $linelimit);
63        }else{
64                $sql.="WHERE nachnameoderfirma ILIKE $1 ";             
65                $sql.="ORDER BY p.nachnameoderfirma, p.vorname LIMIT $2 ;";
66                $v=array($match, $linelimit);
67        }
68        // +++ Adresse der Person zur eindeutigen Bestimmung?
69        $res=pg_prepare("", $sql);
70        $res=pg_execute("", $v);
71        if (!$res) {
72                echo "\n<p class='err'>Fehler bei Eigent&uuml;mer</p>";
73                return;
74        }
75        $cnt = 0;
76        // einfache Liste ohne div und Icon     
77        while($row = pg_fetch_array($res)) {
78                $nnam=htmlentities($row["nachnameoderfirma"], ENT_QUOTES, "UTF-8");
79                $vnam=htmlentities($row["vorname"], ENT_QUOTES, "UTF-8");
80                $gml=$row["gml_id"];
81                // +++ Icon mit Link auf Person-Auskunft, ÃŒber gml_id 
82                // Zur Zeit siehe unten: erst nach Auswahl einer einzelnen Person
83                echo "\n<a class='nam' title='Person' href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;person=".$gml."&amp;name=".$nnam."'>".$nnam.", ".$vnam."</a>\n<br>";
84                $cnt++;
85        }
86        if($cnt == 0){
87                echo "\n<p class='err'>Keine Person.</p>";
88        } elseif($cnt >= $linelimit) {
89                echo "\n<p title='Bitte den Namen eindeutiger qualifizieren'>... und weitere</p>";
90        } elseif($cnt == 1){ // Eindeutig!
91                $person = $gml;
92        }
93        return;
94}
95
96function getGBbyPerson() {
97// 2 =================================
98// GrundbÌcher zur gewÀhlten Person
99// ===================================
100        global $gkz, $gemeinde, $epsg, $con, $name, $person, $gb, $auskpath;
101        $linelimit=120;
102        if(isset($name)) { // Familiensuche
103                echo "\n<div class='back' title='Andere Personen mit diesem Nachnamen'>";
104                        echo "\n\t\t<img class='nwlink' src='ico/Eigentuemer_2.ico' width='16' height='16' alt='FAM'> ";
105                        echo "\n<a class='back' href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;name=".$name."'>\"".$name."\"</a>";
106                echo "\n</div>\n<br>"; 
107        }
108        $sql="SELECT p.nachnameoderfirma, p.vorname, p.geburtsdatum, p.namensbestandteil, ";
109        $sql.="a.ort_post, a.postleitzahlpostzustellung AS plz, a.strasse, a.hausnummer ";
110        $sql.="FROM ax_person p ";
111        $sql.="JOIN alkis_beziehungen b ON p.gml_id=b.beziehung_von ";
112        $sql.="JOIN ax_anschrift a ON a.gml_id=b.beziehung_zu ";
113        $sql.="WHERE p.gml_id= $1 AND b.beziehungsart='hat';"; 
114        $v=array($person);
115        $res=pg_prepare("", $sql);
116        $res=pg_execute("", $v);
117        if (!$res) {echo "\n<p class='err'>Fehler bei Name</p>\n";}
118        // Daten der Person
119        echo "\n<div class='nam'>";
120                // Link zur Auskunft Person
121                echo "\n\t<a title='Nachweis' href='javascript:imFenster(\"".$auskpath."alkisnamstruk.php?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;gmlid=".$person."\")'>";
122                        echo "\n\t\t<img class='nwlink' src='ico/Eigentuemer.ico' width='16' height='16' alt='EIG'>";
123                echo "\n\t</a> ";
124                echo "\n\t<p class='nam'>";             
125                if ($row = pg_fetch_array($res)) {
126                        $namzeil=$row["nachnameoderfirma"].", ".$row["vorname"];
127                        $gebdat=$row["geburtsdatum"];
128                        if ($gebdat != "") {$namzeil.= ", geb. ".$gebdat;}
129                        $best=$row["namensbestandteil"];
130                        if ($best != "") {$namzeil.= ", ".$best;}
131                        echo htmlentities($namzeil, ENT_QUOTES, "UTF-8");
132                        $namzeil=$row["plz"]." ".$row["ort_post"];
133                        if (trim($namzeil) != "") {echo "\n\t<br>".htmlentities($namzeil, ENT_QUOTES, "UTF-8");}
134                        $namzeil=$row["strasse"]." ".$row["hausnummer"];
135                        if (trim($namzeil) != "") {echo "\n\t<br>".htmlentities($namzeil, ENT_QUOTES, "UTF-8");}
136                }
137                echo "\n\t</p>";
138        echo "\n</div>";
139
140        // Suche nach GrundbÃŒchern der Person
141        $sql ="SELECT g.gml_id AS gml_g, g.buchungsblattnummermitbuchstabenerweiterung as nr, b.bezeichnung AS beznam ";
142        $sql.="FROM alkis_beziehungen bpn ";
143        $sql.="JOIN ax_namensnummer n ON bpn.beziehung_von=n.gml_id ";
144        $sql.="JOIN alkis_beziehungen bng ON n.gml_id=bng.beziehung_von ";
145        $sql.="JOIN ax_buchungsblatt g ON bng.beziehung_zu=g.gml_id ";
146        $sql.="JOIN ax_buchungsblattbezirk b ON g.land = b.land AND g.bezirk = b.bezirk ";
147        $sql.="WHERE bpn.beziehung_zu= $1 AND bpn.beziehungsart='benennt' AND bng.beziehungsart='istBestandteilVon' ";
148        $sql.="ORDER BY g.bezirk, g.buchungsblattnummermitbuchstabenerweiterung LIMIT $2 ;";
149        $v=array($person, $linelimit);
150        $res=pg_prepare("", $sql);
151        $res=pg_execute("", $v);
152        if (!$res) {
153                echo "\n<p class='err'>Fehler bei Grundbuch</p>";
154                return;
155        }
156        $cnt = 0;
157        while($row = pg_fetch_array($res)) {
158                $gml=$row["gml_g"];
159                $beznam=$row["beznam"];
160                $nr=$row["nr"];
161                echo "\n<div class='gb'>";
162                        echo "\n\t<a title='Nachweis' href='javascript:imFenster(\"".$auskpath."alkisbestnw.php?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;gmlid=".$gml."\")'>";
163                                echo "\n\t\t<img class='nwlink' src='ico/GBBlatt_link.ico' width='16' height='16' alt='GB'>";
164                        echo "\n\t</a> ";               
165                        echo "\n\t".$beznam."<a title='Grundbuch' href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;gb=".$gml."&amp;person=".$person."'> Blatt ".$nr."&nbsp;</a>";
166                echo "\n</div>";
167                $cnt++;
168        }
169        if($cnt == 0){
170                echo "\n<p class='err'>Kein Grundbuch.</p>";
171        } elseif($cnt >= $linelimit) {
172                echo "\n<p>... und weitere</p>";
173        } elseif($cnt == 1){ // Eindeutig!
174                $gb=$gml; // dann Stufe 3 gleich nachschieben
175        }
176        return;
177}
178       
179function getFSbyGB($backlink) {
180// 3 =================================
181// FlurstÌcke zum gewÀhlten Grundbuch
182// ===================================
183        global $gkz, $gemeinde, $con, $name, $person, $gb, $scalefs, $auskpath, $epsg;
184        $linelimit=120;
185
186        if($backlink) {
187                echo "\n\t<div class='back' title='zur&uuml;ck zur Person'>";
188                        echo "\n\t\t<img class='nwlink' src='ico/Eigentuemer.ico' width='16' height='16' alt='EIG'> ";
189                        echo "\n\t<a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;person=".$person."'>";
190                        echo "zur&uuml;ck</a><br>";             
191                echo "</div>";
192                echo "<div class='gb'>";
193                        echo "\n\t<a title='Nachweis' href='javascript:imFenster(\"".$auskpath."alkisbestnw.php?gkz=".$gkz."&amp;gmlid=".$gb."\")'>";
194                                echo "\n\t\t<img class='nwlink' src='ico/GBBlatt_link.ico' width='16' height='16' alt='GB'>";
195                        echo "\n\t</a> Grundbuch";
196                echo "</div>"; 
197        }
198
199        // Blatt <vbg/istBestandteilVon<  Buchungsstelle <vfb/istGebucht< Flurstck.
200        $sql ="SELECT s.laufendenummer AS lfd, f.gml_id, f.flurnummer, f.zaehler, f.nenner, f.gemeinde, ";
201        if($epsg == "25832") { // Transform nicht notwendig
202                $sql.="x(st_centroid(f.wkb_geometry)) AS x, ";
203                $sql.="y(st_centroid(f.wkb_geometry)) AS y, ";
204        } else { 
205                $sql.="x(st_transform(st_centroid(f.wkb_geometry), ".$epsg.")) AS x, ";
206                $sql.="y(st_transform(st_centroid(f.wkb_geometry), ".$epsg.")) AS y, ";                 
207        }
208        $sql.="g.gemarkungsnummer, g.bezeichnung ";
209   $sql.="FROM alkis_beziehungen vbg ";
210        $sql.="JOIN ax_buchungsstelle s ON vbg.beziehung_von = s.gml_id ";
211        $sql.="JOIN alkis_beziehungen vfb ON s.gml_id = vfb.beziehung_zu ";
212        $sql.="JOIN ax_flurstueck f  ON vfb.beziehung_von = f.gml_id ";
213   $sql.="JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer ";
214        $sql.="WHERE vbg.beziehung_zu= $1 AND vbg.beziehungsart='istBestandteilVon' AND vfb.beziehungsart='istGebucht' ";
215        $sql.="ORDER BY s.laufendenummer, f.gemarkungsnummer, f.flurnummer, f.zaehler, f.nenner LIMIT $2 ;";
216
217        // +++ Sonderfall Fehlt noch: Blatt -> Buchung -> (Recht an) Buchung -> FlurstÃŒck
218        // +++ Ebene Buchung dazwischen wie im Teil 'Grundbuch' ?
219        $v=array($gb, $linelimit);
220        $res=pg_prepare("", $sql);
221        $res=pg_execute("", $v);
222        if (!$res) {
223                echo "\n<p class='err'>Fehler bei Buchung und Flurst&uuml;ck.</p>";
224                if ($debug >= 3) {echo "\n<p class='err'>".$sql."</p>";}
225                return;
226        }
227        $zfs=0;
228        while($row = pg_fetch_array($res)) {   
229                $fs_gml=$row["gml_id"];
230                $bvnr=$row["lfd"];
231                if ($bvnr > 0) {               
232                        $bvnr=str_pad($bvnr, 4, "0", STR_PAD_LEFT);
233                } else {
234                        $bvnr="";
235                }
236                $gmkg=$row["bezeichnung"];
237                $flur=$row["flurnummer"];
238                $fskenn=$row["zaehler"];
239                if ($row["nenner"] != "") {$fskenn.="/".$row["nenner"];} // Bruchnummer
240                $x=$row["x"];
241                $y=$row["y"];
242                echo "\n<div class='fs'>";
243                        echo "\n\t<a title='Nachweis' href='javascript:imFenster(\"".$auskpath."alkisfsnw.php?gkz=".$gkz."&amp;gmlid=".$fs_gml."\")'>";
244                                echo "\n\t\t<img class='nwlink' src='ico/Flurstueck_Link.ico' width='16' height='16' alt='FS'>";
245                        echo "\n\t</a> ";       
246                        echo "\n\tFlst. <a title='Flurst&uuml;ck positionieren 1:".$scalefs."' href='";
247                                        echo "javascript:parent.parent.parent.mb_repaintScale(\"mapframe1\",".$x.",".$y.",".$scalefs."); ";
248                                        echo "parent.parent.showHighlight(".$x.",".$y.");' ";
249                                echo "onmouseover='parent.parent.showHighlight(".$x.",".$y.")' ";
250                                echo "onmouseout='parent.parent.hideHighlight()'>";
251                        echo $bvnr." ".$gmkg." ".$flur."-".$fskenn."</a>";
252                echo "\n</div>";
253                $zfs++;
254        }
255        if($zfs == 0) {
256                echo "\n<p class='err'>Kein Flurst&uuml;ck.</p>";
257                echo "\n<p class='hilfe'>Hinweis: Sonderf&auml;lle wie 'Erbbaurecht' sind noch nicht umgesetzt.</p>";
258        } elseif($zfs >= $linelimit) {
259                echo "\n<p>... und weitere</p>";
260        }
261        return;
262}
263
264// ===========
265// Start hier!
266// ===========
267// Parameter: 
268// 1. name   = Suche nach Namensanfang oder -bestandteil.
269// 2. person = gml_id der Person      -> Suche nach GrundbÃŒchern
270// 3. gb     = gml_id des Grundbuches -> Suche nach FlurstÃŒcken
271if(isset($epsg)) {
272        if ($debug >= 2) {echo "<p>aktueller EPSG='".$epsg."'</p>";} // aus MB
273        $epsg = str_replace("EPSG:", "" , $_REQUEST["epsg"]);   
274} else {
275        if ($debug >= 1) {echo "<p class='err'>kein EPSG gesetzt</p>";}
276        $epsg=$gui_epsg; // aus Conf
277}
278if ($debug >= 2) {echo "<p>Filter Gemeinde = ".$gemeinde."</p>";}
279
280// Welche Parameter?
281// 3. Stufe: FlurstÃŒcke zum Grundbuch
282if(isset($gb)) { // gml_id
283        // Das Programm hat sich selbst verlinkt aus einer Liste der GB zu einem EigentÃŒmer.
284        // Wenn Parameter mitgegeben wurden, können diese fÃŒr einen "Link zurÃŒck" verwendet werden.
285        getFSbyGB(true);
286} elseif(isset($person)) { // gml_id - 2. Stufe: GrundbÃŒcher zur Person
287        // Das Programm hat sich selbst verlinkt aus einer Liste der Personen zu einer Suchmaske.
288        getGBbyPerson();
289        if(isset($gb) ) { getFSbyGB(false);} // Es wurde nur EIN Grundbuch zu der Person gefunden.
290} elseif(isset($name)) { // Suchbegriff aus Form - 1. Stufe: Suche nach Name
291        getEigByName();
292        if(isset($person)) { getGBbyPerson();}
293} elseif ($debug >= 2) {
294        echo "\n<p>Parameter?</p>"; // Programmfehler
295}
296?>
297
298</body>
299</html>
Note: See TracBrowser for help on using the repository browser.