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

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