source: trunk/mapbender/http/nav/alkisnav_eig.php @ 280

Revision 280, 28.2 KB checked in by frank.jaeger, 11 years ago (diff)

ALKIS-Navigation: Darstellung im IE verbessert

RevLine 
[134]1<?php
[278]2/* Version vom
[140]3        24.10.2011      Nach Pos-Klick Highlight erneuern statt hideHighlight
4        17.11.2011      Nachweis-Links ÃŒber javascript im neuen Hochformat-Fenster
5        02.12.2011      Suche nach Vorname Nachname oder Nachname
6        09.12.2011      Filter "Gemeinde" fÃŒr Ebene FlurstÃŒcke.
7                                        Filter "Gemeinde" fÃŒr Personen ÃŒber neue Hilfstabelle "gemeinde_person".
8                                        Format css Person (Rahmen).
[276]9        2013-04-16 "import_request_variables" entfÀllt in PHP 5.4
[278]10        2013-04-26      Ersetzen View "gemeinde_gemarkung" durch Tabelle "pp_gemarkung".
11                                        Stufe 2: GB *und* FS mit einem Klick anzeigen.
12                                        BlÀtterfunktion (Folgeseiten) fÃŒr lange Listen.
13                                        Function extern gemeinsam genutzt in _eig und _grd.
14                                        Dazu Var-Namen harmonisieren: $gb wird $blattgml.
15                                        ZurÃŒck-Link, Titel der Transaktion anzeigen.
[280]16        2013-04-29      Test mit IE
[134]17*/
[276]18$cntget = extract($_GET);
[278]19include("../../conf/alkisnav_conf.php"); // Konfigurations-Einstellungen
20include("alkisnav_fkt.php"); // Funktionen
[134]21$con_string = "host=".$host." port=".$port." dbname=".$dbname.$dbvers.$gkz." user=".$user." password=".$password;
22$con = pg_connect ($con_string) or die ("<p class='err'>Fehler bei der Verbindung zur Datenbank</p>".$dbname.$dbvers.$gkz);
[278]23echo <<<END
[134]24<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
25<html>
26<head>
27        <meta http-equiv="cache-control" content="no-cache">
28        <meta http-equiv="pragma" content="no-cache">
29        <meta http-equiv="expires" content="0">
30        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
31        <title>ALKIS-Suche Eigent&uuml;mer</title>
[129]32        <link rel="stylesheet" type="text/css" href="alkisnav.css">
33        <script type="text/javascript">
34                function imFenster(dieURL) {
35                        var link = encodeURI(dieURL);
36                        window.open(link,'','left=10,top=10,width=620,height=800,resizable=yes,menubar=no,toolbar=no,location=no,status=no,scrollbars=yes');
37                }
[278]38                function transtitle(trans) {
39                        document.getElementById('transaktiontitle').innerHTML = trans;
40                }
[134]41        </script>
42</head>
[66]43<body>
[280]44<a href='javascript:history.back()'>
45        <img src="ico/zurueck.ico" width="16" height="16" alt="&lt;&lt;" title="zur&uuml;ck" />
[278]46</a>
47<dfn class='title' id='transaktiontitle'></dfn>
[66]48
[278]49END;
[134]50
[278]51// Einen Link generieren, um nach anderen Personen mit gleichem Familiennamen zu suchen
52function familiensuche() {
53        global $gkz, $gemeinde, $epsg, $name; // $debug
54        if(isset($name)) { // Familiensuche
55                echo "\n<div class='back' title='Andere Personen mit diesem Nachnamen'>";
56                        echo "\n\t\t<img class='nwlink' src='ico/Eigentuemer_2.ico' width='16' height='16' alt='FAM'> ";
57                        echo "\n<a class='back' href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;name=".$name."'>\"".$name."\"</a>";
58                echo "\n</div>\n<br>"; 
59        }
60        return;
61}
62
63// Adresse und Geburtsdatum der aktuellen Person ausgeben
64function personendaten() {
65        global $gkz, $gemeinde, $epsg, $name, $person, $blattgml, $auskpath; // $debug
66        $sql ="SELECT p.nachnameoderfirma, p.vorname, p.geburtsdatum, p.namensbestandteil, ";
67        $sql.="a.ort_post, a.postleitzahlpostzustellung AS plz, a.strasse, a.hausnummer ";
68        $sql.="FROM ax_person p ";
69        $sql.="LEFT JOIN alkis_beziehungen b ON p.gml_id=b.beziehung_von ";
70        $sql.="LEFT JOIN ax_anschrift a ON a.gml_id=b.beziehung_zu ";
71        #sql.="WHERE p.gml_id= $1 AND b.beziehungsart='hat';";  // passt nicht zum LEFT
72        $sql.="WHERE p.gml_id= $1 ;";   
73        $v=array($person);
74        $res=pg_prepare("", $sql);
75        $res=pg_execute("", $v);
76        if (!$res) {
77                echo "\n<p class='err'>Fehler bei Name</p>\n";
78        }
79        echo "\n\t<table>\n\t<tr>\n\t\t<td valign='top'>";
80                // Sp. 1: Icon, Link zur Auskunft Person
81                echo "\n\t<a title='Nachweis' href='javascript:imFenster(\"".$auskpath."alkisnamstruk.php?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;gmlid=".$person."\")'>";
82                        echo "\n\t\t<img class='nwlink' src='ico/Eigentuemer.ico' width='16' height='16' alt='EIG'>";
83                echo "\n\t</a></td>\n\t\t<td>";
84                echo "\n\t<p class='nam'>"; // Sp. 2: Rahmen
85                if ($row = pg_fetch_array($res)) {
86                        $namzeil=$row["nachnameoderfirma"].", ".$row["vorname"];
87                        $gebdat=$row["geburtsdatum"];
88                        if ($gebdat != "") {$namzeil.= ", geb. ".$gebdat;}
89                        $best=$row["namensbestandteil"];
90                        if ($best != "") {$namzeil.= ", ".$best;}
91                        echo htmlentities($namzeil, ENT_QUOTES, "UTF-8");
92                        $namzeil=$row["plz"]." ".$row["ort_post"];
93                        if (trim($namzeil) != "") {echo "\n\t<br>".htmlentities($namzeil, ENT_QUOTES, "UTF-8");}
94                        $namzeil=$row["strasse"]." ".$row["hausnummer"];
95                        if (trim($namzeil) != "") {echo "\n\t<br>".htmlentities($namzeil, ENT_QUOTES, "UTF-8");}
96                }
97        echo "\n\t</p></td></tr>\n\t</table>";
98        return;
99}
100
[66]101function getEigByName() {
[134]102// 1 =============================
[66]103// Eigentuemer nach Name(-nsanfang)
104// ===============================
[278]105        global $gkz, $gemeinde, $epsg, $name, $person, $gfilter, $auskpath;
106        $linelimit=150;
107
[135]108        $arr = explode(",", $name);
[134]109        $name0 = trim($arr[0]);
110        $name1 = trim($arr[1]);
111        if(preg_match("/\*/",$name0)){
112                $match = trim(preg_replace("/\*/i","%", strtoupper($name0)));
113        } else {
114                $match = trim($name0)."%";
[66]115        }       
[134]116        if(preg_match("/\*/",$name1)){
117                $match1 = trim(preg_replace("/\*/i","%", strtoupper($name1)));
118        } else {
119                $match1 = trim($name1)."%";
[135]120        }               
[140]121        $sql ="SELECT p.nachnameoderfirma, p.vorname, p.gml_id FROM ax_person p ";
[278]122        if ($gfilter > 0) {
[140]123                $sql.="JOIN gemeinde_person g ON p.gml_id = g.person WHERE ";
124                switch ($gfilter) {
125                        case 1: // Einzelwert
126                                $sql.="g.gemeinde=".$gemeinde." AND "; break;
127                        case 2: // Liste
128                                $sql.="g.gemeinde in (".$gemeinde.") AND "; break;
129                }
130        } else {
131                $sql.="WHERE ";
132        }
[134]133        if($match1 != '%'){
[140]134                $sql.="nachnameoderfirma ILIKE $1 AND p.vorname ILIKE $2 ";             
[134]135                $sql.="ORDER BY p.nachnameoderfirma, p.vorname LIMIT $3 ;";
136                $v=array($match, $match1, $linelimit);
137        }else{
[140]138                $sql.="nachnameoderfirma ILIKE $1 ";           
[134]139                $sql.="ORDER BY p.nachnameoderfirma, p.vorname LIMIT $2 ;";
140                $v=array($match, $linelimit);
141        }
[66]142        $res=pg_prepare("", $sql);
143        $res=pg_execute("", $v);
144        if (!$res) {
145                echo "\n<p class='err'>Fehler bei Eigent&uuml;mer</p>";
146                return;
147        }
[134]148        $cnt = 0;
[66]149        while($row = pg_fetch_array($res)) {
[134]150                $nnam=htmlentities($row["nachnameoderfirma"], ENT_QUOTES, "UTF-8");
[66]151                $vnam=htmlentities($row["vorname"], ENT_QUOTES, "UTF-8");
[134]152                $gml=$row["gml_id"];
[140]153                // Link zur Auskunft Person  +++ Icon differenzieren? Firma/Person
[278]154                echo "\n<br>\n\t<a title='Nachweis' href='javascript:imFenster(\"".$auskpath."alkisnamstruk.php?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;gmlid=".$gml."\")'>";
[140]155                        echo "\n\t\t<img class='nwlink' src='ico/Eigentuemer.ico' width='16' height='16' alt='EIG'>";
156                echo "\n\t</a> ";               
[278]157                echo "\n<a title='Person' href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;person=".$gml."&amp;name=".$nnam."'>".$nnam.", ".$vnam."</a>";
[134]158                $cnt++;
159        }
[66]160        if($cnt == 0){
[278]161                echo "\n<p class='anz'>Kein Eigent&uuml;mer gefunden.</p>";
162        } elseif($cnt >= $linelimit) { // das Limit war zu knapp
163                echo "\n<p class='anz' title='Bitte den Namen eindeutiger qualifizieren'>... und weitere</p>";
[66]164        } elseif($cnt == 1){ // Eindeutig!
165                $person = $gml;
[278]166        } else {
167                echo "\n<p class='anz'>".$cnt." Eigent&uuml;mer mit '".$name."'</p>";   // im Limit
[66]168        }
[134]169        return;
[66]170}
171
172function getGBbyPerson() {
[134]173// 2 =================================
[66]174// GrundbÌcher zur gewÀhlten Person
175// ===================================
[278]176// Es wird in dieser Function nicht geprÃŒft, ob die gefundenen GrundbÃŒcher auch FlurstÃŒcke
177// haben, die im gefilterten Bereich (Gemeinde) liegen. Es können daher Sackgassen entstehen,
178// also GrundbÌcher, die in der nÀchsten Stufe bei Filterung nicht zu Treffern fÌhren.
179// Das Joinen bis zum FS unter BerÌcksichtigung von speziellen Buchungen ist zu aufwÀndig.
180// Dann kann entweder das FS gleich mit ausgegeben werden -> getGBuFSbyPerson.
181// Alternativ wÌrde eine Hilfstabelle benötigt, in der im PostProcessing
182// das GB-zu-Gemeinde-VerhÀltnis vorbereitet wird.
183        global $gkz, $gemeinde, $epsg, $name, $person, $blattgml, $auskpath, $debug, $bltbez, $bltblatt, $bltseite;
184        $linelimit=150;
185        $linelimit=15;  // +++ TEST +++
186        familiensuche();
187        personendaten();
188        #if ($debug > 0) {echo "\n<p>Nur Grundb&uuml;cher</p>"; }
[66]189        // Suche nach GrundbÃŒchern der Person
[278]190        $sql ="SELECT gb.gml_id AS gml_g, gb.buchungsblattnummermitbuchstabenerweiterung as blatt, b.bezeichnung AS beznam ";
[66]191        $sql.="FROM alkis_beziehungen bpn ";
192        $sql.="JOIN ax_namensnummer n ON bpn.beziehung_von=n.gml_id ";
193        $sql.="JOIN alkis_beziehungen bng ON n.gml_id=bng.beziehung_von ";
[278]194        $sql.="JOIN ax_buchungsblatt gb ON bng.beziehung_zu=gb.gml_id ";
195        $sql.="JOIN ax_buchungsblattbezirk b ON gb.land = b.land AND gb.bezirk = b.bezirk ";
[66]196        $sql.="WHERE bpn.beziehung_zu= $1 AND bpn.beziehungsart='benennt' AND bng.beziehungsart='istBestandteilVon' ";
[278]197        if ($bltbez.$bltblatt != "") { // BlÀttern, Fortsetzen bei ...
198                $sql.="AND ((b.bezeichnung > '".$bltbez."') ";
199                $sql.="OR (b.bezeichnung = '".$bltbez."' AND gb.buchungsblattnummermitbuchstabenerweiterung > '".$bltblatt."')) ";
200        }
201        $sql.="ORDER BY b.bezeichnung, gb.buchungsblattnummermitbuchstabenerweiterung LIMIT $2 ;";
202
203        if ($bltseite == "") { // Seite 1
204                $bltseite = 1;
205        } else { // Folgeseite
206                echo "\n<p class='ein'>Teil ".$bltseite;
207        }
[66]208        $v=array($person, $linelimit);
209        $res=pg_prepare("", $sql);
210        $res=pg_execute("", $v);
211        if (!$res) {
212                echo "\n<p class='err'>Fehler bei Grundbuch</p>";
213                return;
214        }
215        $cnt = 0;
216        while($row = pg_fetch_array($res)) {
217                $gml=$row["gml_g"];
218                $beznam=$row["beznam"];
[278]219                $blatt=$row["blatt"];
[66]220                echo "\n<div class='gb'>";
[129]221                        echo "\n\t<a title='Nachweis' href='javascript:imFenster(\"".$auskpath."alkisbestnw.php?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;gmlid=".$gml."\")'>";
[66]222                                echo "\n\t\t<img class='nwlink' src='ico/GBBlatt_link.ico' width='16' height='16' alt='GB'>";
223                        echo "\n\t</a> ";               
[278]224                        echo "\n\t".$beznam."<a title='Grundbuch' href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;blattgml=".$gml."&amp;person=".$person."'> Blatt ".$blatt."&nbsp;</a>";
[66]225                echo "\n</div>";
[134]226                $cnt++;
227        }
[278]228        if($cnt == 0) {
229                echo "\n<p class='anz'>Kein Grundbuch zum Eigent&uuml;mer</p>";
[66]230        } elseif($cnt >= $linelimit) {
[278]231                echo "\n<p class='blt'>".$cnt." Grundb. zum Eigent.";
232                $nxtbltbez=urlencode($beznam);
233                $nxtbltblatt=urlencode($blatt);
234                $nxtbltseite=$bltseite + 1;
235                echo "\n - <a class='blt' href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;person=".$person."&amp;bltbez=".$nxtbltbez."&amp;bltblatt=".$nxtbltblatt."&amp;bltseite=".$nxtbltseite."' ";
236                echo "title='Bl&auml;ttern ab ".htmlentities($beznam)." Blatt ".$blatt."'>weitere</a>";
237                echo "</p>";
238        } elseif($cnt == 1) { // Eindeutig!
239                $blattgml=$gml; // dann Stufe 3 gleich nachschieben
240        } else {
241                echo "\n<p class='anz'>".$cnt." Grundb&uuml;cher zum Eigent&uuml;mer</p>";
[66]242        }
243        return;
244}
[278]245
[66]246function getFSbyGB($backlink) {
[134]247// 3 =================================
[66]248// FlurstÌcke zum gewÀhlten Grundbuch
249// ===================================
[278]250// Zu einem Grundbuch (gml_id als Parameter) werden alle darauf gebuchten FlurstÃŒcke gesucht.
251// Im ersten Schritt sind das direkt gebuchten FlurstÃŒcke.
252// Im zweiten Schritt wird gesucht nach Rechten einer Buchungstelle des durchsuchten Blattes an anderen
253// Buchungstellen. Es werden dann die FlurstÃŒcke darauf gelistet.
254        global $gkz, $gemeinde, $name, $person, $blattgml, $scalefs, $auskpath, $epsg, $gfilter, $debug;
255        $linelimit=150;
256        if($backlink) { // Erneuter Ansatz bei Person oder GB möglich.
[66]257
[278]258                // Namen ermitteln
259                $sql ="SELECT nachnameoderfirma, vorname FROM ax_person WHERE gml_id = $1 ";
260                $v=array($person);
261                $res=pg_prepare("", $sql);
262                $res=pg_execute("", $v);
263                if (!$res) {
264                        echo "\n<p class='err'>Fehler bei Eigent&uuml;mer</p>";
265                }
266                $row = pg_fetch_array($res); // nur eine Zeile
267                $nnam=htmlentities($row["nachnameoderfirma"], ENT_QUOTES, "UTF-8");
268                $vnam=htmlentities($row["vorname"], ENT_QUOTES, "UTF-8");
[66]269                echo "\n\t<div class='back' title='zur&uuml;ck zur Person'>";
270                        echo "\n\t\t<img class='nwlink' src='ico/Eigentuemer.ico' width='16' height='16' alt='EIG'> ";
[86]271                        echo "\n\t<a href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;person=".$person."'>";
[278]272                        echo $nnam.", ".$vnam."</a><br>";               
[66]273                echo "</div>";
[278]274
275                // Grundbuch-Daten ermitteln
276                $sql ="SELECT gb.gml_id AS gml_g, gb.buchungsblattnummermitbuchstabenerweiterung as blatt, b.bezeichnung AS beznam ";
277                $sql.="FROM ax_buchungsblatt gb JOIN ax_buchungsblattbezirk b ON gb.land = b.land AND gb.bezirk = b.bezirk ";
278                $sql.="WHERE gb.gml_id= $1 ;";
279                $v=array($blattgml);
280                $res=pg_prepare("", $sql);
281                $res=pg_execute("", $v);
282                if (!$res) {
283                        echo "\n<p class='err'>Fehler bei Grundbuch</p>";
284                }
285                $row = pg_fetch_array($res); // nur eine Zeile
286                $gml=$row["gml_g"];
287                $beznam=$row["beznam"];
288                $blatt=$row["blatt"];
[66]289                echo "<div class='gb'>";
[278]290                        echo "\n\t<a title='Nachweis' href='javascript:imFenster(\"".$auskpath."alkisbestnw.php?gkz=".$gkz."&amp;gmlid=".$blattgml."\")'>";
[66]291                                echo "\n\t\t<img class='nwlink' src='ico/GBBlatt_link.ico' width='16' height='16' alt='GB'>";
[278]292                        echo "\n\t</a>&nbsp;".$beznam." Blatt ".$blatt;
[66]293                echo "</div>"; 
294        }
295
[278]296        GB_Buchung_FS($linelimit); // Externe Function: Blatt > GrundstÃŒck > Flurst.
297       
298        return;
299}
300
301function getGBuFSbyPerson() {
302// 2 + 3 =========================================
303// GrundbÌcher UND FlurstÌcke zur gewÀhlten Person
304// ===============================================
305// Dies ist die Kombination von Stufe 2 (GrundbÃŒcher zur Person) und 3 (FlurstÃŒcke zum Grundbuch)
306// in einem einzelnen Schritt. Wenn auf Gemeinde gefiltert wird, dann können in Stufe 2 (noch ohne Filter)
307// auch GrundbÃŒcher gefunden werden, die dann auf Stufe 3 (mit Filter) keine FS liefern ("Sackgasse"!).
308// Wenn aber per JOIN "GB -> FS -> Gemarkung -> Gemeinde" geprÌft wird, dann können
309// die Daten ja auch gleich ausgegeben werden.
310// FÌr FÀlle in denen nicht nach Gemeinde gefiltert wird (z.B. ganzer Kreis) kann weiter
311// Stufe 2 und 3 nacheinander verwendet werden. Dies ist wahrscheinlich ÃŒbersichtlicher,
312// weil "ungefiltert" in "2+3" zu lange Listen entstehen wÌrden, die durchblÀttert werden mÌssen.
313        global $gkz, $gemeinde, $epsg, $name, $person, $blattgml, $auskpath, $scalefs, $gfilter, $debug, $bltbez, $bltblatt, $bltbvnr, $bltseite, $bltrecht;
314        $linelimit=80; // als Limit "Anzahl FlurstÃŒcke" in den beiden folgenden Abfragen
315        // darf nun etwas knapper sein, weil man jetzt blÀttern kann
316        familiensuche();
317        personendaten();
318
319        // Wenn das Limit ÃŒberschritten wurde: zusÀtzliche Parameter "blt"=BlÀttern
320        // $bltbez   = Bezirk-Name 
321        // $bltblatt = BlattMitBuchstabe
322        // $bltbvnr  = lfd.Nr der Buchungsstelle
323        // $bltseite = fortlaufende Seiten-Nr
324        // $bltrecht = "nur"/"ohne" liefert nur den abgebrochene Teil der Auflistung
325
[140]326        // SQL-Bausteine vorbereiten
[278]327        //  Direkte Buchungen suchen mit:  $sql1 +         $sqla1 + $sql2
328        //  SonderfÀlle suchen mit:        $sql1 + $sqlz + $sqla2 + $sql2
329
330        // Baustein: SQL-Anfang fuer beide Varianten
331        $sql1 ="SELECT gb.gml_id AS gml_g, gb.buchungsblattnummermitbuchstabenerweiterung as blatt, b.bezeichnung AS beznam, ";
332        $sql1.="s1.laufendenummer AS lfd, f.gml_id, f.flurnummer, f.zaehler, f.nenner, f.gemeinde, ot.gemarkung, ot.gemarkungsname, ";
[86]333        if($epsg == "25832") { // Transform nicht notwendig
[189]334                $sql1.="st_x(st_centroid(f.wkb_geometry)) AS x, ";
[278]335                $sql1.="st_y(st_centroid(f.wkb_geometry)) AS y ";
[86]336        } else { 
[189]337                $sql1.="st_x(st_transform(st_centroid(f.wkb_geometry), ".$epsg.")) AS x, ";
[278]338                $sql1.="st_y(st_transform(st_centroid(f.wkb_geometry), ".$epsg.")) AS y ";                     
[86]339        }
[278]340        $sql1.="FROM alkis_beziehungen bpn ";
341        $sql1.="JOIN ax_namensnummer nn ON bpn.beziehung_von=nn.gml_id ";
342        $sql1.="JOIN alkis_beziehungen bng ON nn.gml_id=bng.beziehung_von ";
343        $sql1.="JOIN ax_buchungsblatt gb ON bng.beziehung_zu=gb.gml_id ";
344   $sql1.="JOIN alkis_beziehungen vbg ON gb.gml_id=vbg.beziehung_zu ";
345        $sql1.="JOIN ax_buchungsstelle s1 ON vbg.beziehung_von=s1.gml_id ";
346        $sql1.="JOIN ax_buchungsblattbezirk b ON gb.land=b.land AND gb.bezirk=b.bezirk "; // quer-ab
[66]347
[278]348        // Baustein: Zwischen-JOIN (nur bei zweiter Abfrage)
349        $sqlz ="JOIN alkis_beziehungen vss ON vss.beziehung_von=s1.gml_id ";
350        $sqlz.="JOIN ax_buchungsstelle s2 ON vss.beziehung_zu=s2.gml_id ";
[140]351
[278]352        // Baustein: Auswahl 1 oder 2
353        $sqla1 ="JOIN alkis_beziehungen vfb ON s1.gml_id=vfb.beziehung_zu ";
354        $sqla2 ="JOIN alkis_beziehungen vfb ON s2.gml_id=vfb.beziehung_zu ";
[140]355
[278]356        // Baustein: SQL-Ende fuer beide Varianten
357        $sql2.="JOIN ax_flurstueck f ON vfb.beziehung_von=f.gml_id ";
358   $sql2.="JOIN pp_gemarkung ot ON f.land=ot.land AND f.gemarkungsnummer=ot.gemarkung "; // Ortsteil
359        $sql2.="WHERE bpn.beziehung_zu= $1 AND bpn.beziehungsart='benennt' AND bng.beziehungsart='istBestandteilVon' ";
360        $sql2.="AND vbg.beziehungsart='istBestandteilVon' AND vfb.beziehungsart='istGebucht' ";
361        switch ($gfilter) { // Gemeinde-Filter
362                case 1: // Einzelwert
363                        $sql2.="AND ot.gemeinde=".$gemeinde." "; break;
364                case 2: // Liste
365                        $sql2.="AND ot.gemeinde in (".$gemeinde.") "; break;
[140]366        }
[278]367        $sql3 ="ORDER BY gb.bezirk, gb.buchungsblattnummermitbuchstabenerweiterung, cast(s1.laufendenummer AS integer), f.gemarkungsnummer, f.flurnummer, f.zaehler, f.nenner LIMIT $2 ;";
368        // Sortier-Problem: laufendenummer in varchar linksbÃŒndig
[140]369
[278]370        // Die Bausteine in 2 Varianten kombinieren
[140]371
[278]372        // BlÀttern mit folgenden Parametern: $bltbez, $bltblatt, $bltbvnr, $bltseite, $bltrecht
373        if ($bltbez.$bltblatt.$bltbvnr != "") { // BlÀttern, Fortsetzen bei ...
374                $bltwhere ="AND ((b.bezeichnung > '".$bltbez."') ";
375                $bltwhere.="OR (b.bezeichnung = '".$bltbez."' AND gb.buchungsblattnummermitbuchstabenerweiterung > '".$bltblatt."') ";
376                $bltwhere.="OR (b.bezeichnung = '".$bltbez."' AND gb.buchungsblattnummermitbuchstabenerweiterung = '".$bltblatt."' AND cast(s1.laufendenummer AS integer) >= ".$bltbvnr." )) ";
377        } // FlurstÃŒcke in der BVNR werden ggf. wiederholt
378
379        if ($bltseite == "") { // auf Seite 1 beide Teile ausgegeben
380                $bltseite = 1;
381        } else { // Folgegeseite: nur Teil 1 *oder* 2
382                echo "\n<p class='ein'>Teil ".$bltseite." - ";
383                switch ($bltrecht) {
384                        case "nur":
385                                echo "nur Rechte an .. Buchungen</p>"; break;
386                        case "ohne":
387                                echo "nur direkte Buchungen</p>"; break;
388                        default:
389                                echo "</p>"; break;
[140]390                }
391        }
392
[278]393        // FÀlle ohne "Rechte an"
394        if ($bltrecht != "nur") { // "nur"/"ohne" liefert nur den abgebrochene Teil der Auflistung
395                // Blatt <vbg/istBestandteilVon<  Buchungsstelle <vfb/istGebucht< Flurstck.
396                $sql=$sql1.$sqla1.$sql2.$bltwhere.$sql3; // Direkte Buchungen
397       
398                $v=array($person, $linelimit);
399                $res=pg_prepare("", $sql);
400                $res=pg_execute("", $v);
401                if (!$res) {
402                        echo "\n<p class='err'>Fehler bei Buchung und Flurst&uuml;ck.</p>";
403                        if ($debug >= 3) {echo "\n<p class='err'>".$sql."</p>";}
404                        return;
405                }
406                $zfs1=0;
407                $gwgb="";
408                while($row = pg_fetch_array($res)) {   
409                        $gb_gml=$row["gml_g"];
410       
411                        // Gruppenwechsel auf Ebene Grundbuch
412                        if ($gwgb != $gb_gml) {
413                                $beznam=$row["beznam"];
414                                $blatt=$row["blatt"];
415                                echo "\n<div class='gb'>"; // Ausgabe GB - B L A T T
416                                        echo "\n\t<a title='Nachweis' href='javascript:imFenster(\"".$auskpath."alkisbestnw.php?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;gmlid=".$gb_gml."\")'>";
417                                                echo "\n\t\t<img class='nwlink' src='ico/GBBlatt_link.ico' width='16' height='16' alt='GB'>";
418                                        echo "\n\t</a> ";               
419                                        echo "\n\t".$beznam."<a title='Grundbuch' href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;blattgml=".$gb_gml."&amp;person=".$person."'> Blatt ".$blatt."&nbsp;</a>";
420                                echo "\n</div>";
421                                $gwgb = $gb_gml;        // Steuerg GW GB
422                                $gwbv = "";             // Steuerg GW BVNR
423                        }
424       
425                        // Gruppenwechsel auf Ebene Buchungs-Stelle (BVNR)
426                        $bvnr=$row["lfd"];
427                        if ($gwbv != $bvnr) {
428                                if ($bvnr == 0) {
429                                        $bvnra = "-";
430                                } else {
431                                        $bvnra = str_pad($bvnr, 4, "0", STR_PAD_LEFT); // auf 4 Stellen
432                                }
433                                $gwbv = $bvnr; // Steuerg GW BVNR
434                                echo "\n<div class='gs' title='Grundst&uuml;ck'>";
435                                echo "<img class='nwlink' src='ico/Grundstueck.ico' width='16' height='16' alt='GS'> ";
436                                echo "Buchung ".$bvnra."</div>";
437                        }
438       
439                        $fs_gml=$row["gml_id"];
440                        $gmkg=$row["gemarkungsname"];
441                        $flur=$row["flurnummer"];
442                        $fskenn=$row["zaehler"];
443                        if ($row["nenner"] != "") {$fskenn.="/".$row["nenner"];} // BruchNr
444                        $x=$row["x"];
445                        $y=$row["y"];
446                        echo "\n<div class='fs'>"; // F L U R S T Ü C K
447                                echo "\n\t<a title='Nachweis' href='javascript:imFenster(\"".$auskpath."alkisfsnw.php?gkz=".$gkz."&amp;gmlid=".$fs_gml."\")'>";
448                                        echo "\n\t\t<img class='nwlink' src='ico/Flurstueck_Link.ico' width='16' height='16' alt='FS'>";
449                                echo "\n\t</a> ";       
450                                echo "\n\t".$gmkg." <a title='Flurst&uuml;ck positionieren 1:".$scalefs."' href='";
451                                                echo "javascript:";
452                                                echo "transtitle(\"auf Flurst&uuml;ck positioniert\"); ";
453                                                echo "parent.parent.parent.mb_repaintScale(\"mapframe1\",".$x.",".$y.",".$scalefs."); ";
454                                                echo "parent.parent.showHighlight(".$x.",".$y.");' ";
455                                        echo "onmouseover='parent.parent.showHighlight(".$x.",".$y.")' ";
456                                        echo "onmouseout='parent.parent.hideHighlight()'>";
457                                echo " Flur ".$flur." ".$fskenn."</a>";
458                        echo "\n</div>";
459                        $zfs1++;
460                }
461                if($zfs1 == 0) {
462                        if ($bltrecht == "ohne") {
463                                echo "\n<p class='anz'>Keine direkte Buchung gefunden.</p>";
464                                #if ($debug >= 3) {echo "\n<p class='dbg'>".$sql."</p>";}
465                        }
466                } elseif($zfs1 >= $linelimit) { // das Limit war zu knapp, das  B l À t t e r n  anbieten
467                        echo "\n<p class='blt'>".$zfs1." Flurst&uuml;cke";
468                        $nxtbltbez=urlencode($beznam);
469                        $nxtbltblatt=urlencode($blatt);
470                        $nxtbltseite=$bltseite + 1;
471                        echo "\n - <a class='blt' href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;person=".$person."&amp;bltbez=".$nxtbltbez."&amp;bltblatt=".$nxtbltblatt."&amp;bltbvnr=".$bvnr."&amp;bltseite=".$nxtbltseite."&amp;bltrecht=ohne' ";
472                        echo "title='Bl&auml;ttern ab ".htmlentities($beznam)." Blatt ".$blatt." BVNR ".$bvnr."'>weitere</a>";
473                        echo "</p>";
474                } elseif($zfs1 > 1) { // Meldung (Plural) ab 2
475                        echo "\n<p class='anz'>".$zfs1." Flurst&uuml;cke zum Eigent&uuml;mer</p>"; // im Limit
476                }
477        }       
[140]478
[278]479        if ($bltrecht == "" and $zfs1 > 0) { // beides
480                echo "<hr>"; // dann Trenner
[66]481        }
[140]482
[278]483        // FÀlle mit "Rechte an"
484        if ($bltrecht != "ohne") { // "nur"/"ohne" liefert nur den abgebrochene Teil der Auflistung
485                // Zweite Abfrage (Variante) aus den Bausteinen zusammen bauen
486                // buchungsStelle2 < an < buchungsStelle1
487                $sql=$sql1.$sqlz.$sqla2.$sql2.$bltwhere.$sql3; // Rechte an
488                $v=array($person, $linelimit);
489                $res=pg_prepare("", $sql);
490                $res=pg_execute("", $v);
491                if (!$res) {
492                        echo "\n<p class='err'>Fehler bei Recht an Buchung.</p>";
493                        if ($debug >= 3) {echo "\n<p class='dbg'>".$sql."</p>";}
494                        return;
495                }
496                $zfs2=0;
497                $gwgb="";
498                while($row = pg_fetch_array($res)) {   
499                        // Gruppenwechsel auf Ebene Grundbuch
500                        $gb_gml=$row["gml_g"];
501                        if ($gwgb != $gb_gml) {
502                                $beznam=$row["beznam"];
503                                $blatt=$row["blatt"];
504                                echo "\n<div class='gb'>"; // Ausgabe GB
505                                        echo "\n\t<a title='Nachweis' href='javascript:imFenster(\"".$auskpath."alkisbestnw.php?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;gmlid=".$gb_gml."\")'>";
506                                                echo "\n\t\t<img class='nwlink' src='ico/GBBlatt_link.ico' width='16' height='16' alt='GB'>";
507                                        echo "\n\t</a> ";               
508                                        echo "\n\t".$beznam."<a title='Grundbuch' href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;blattgml=".$gb_gml."&amp;person=".$person."'> Blatt ".$blatt."&nbsp;</a>";
509                                echo "\n</div>";
510                                $gwgb = $gb_gml;        // Steuerg GW GB
511                                $gwbv = "";             // Steuerg GW BVNR
512                        }
[140]513
[278]514                        // Gruppenwechsel auf Ebene Buchungs-Stelle (BVNR)
515                        $bvnr=$row["lfd"];
516                        if ($gwbv != $bvnr) {
517                                if ($bvnr == 0) {
518                                        $bvnra = "-";
519                                } else {
520                                        $bvnra = str_pad($bvnr, 4, "0", STR_PAD_LEFT); // auf 4 Stellen
521                                }
522                                $gwbv = $bvnr; // Steuerg GW BVNR
523                                echo "\n<div class='gs' title='Grundst&uuml;ck'>";
524                                echo "<img class='nwlink' src='ico/Grundstueck.ico' width='16' height='16' alt='GS'> ";
525                                echo "Buchung ".$bvnra."</div>";
526                        }
[140]527
[278]528                        $fs_gml=$row["gml_id"];
529                        $gmkg=$row["gemarkungsname"];
530                        $flur=$row["flurnummer"];
531                        $fskenn=$row["zaehler"];
532                        if ($row["nenner"] != "") {$fskenn.="/".$row["nenner"];} // Bruchnummer
533                        $x=$row["x"];
534                        $y=$row["y"];
535                        echo "\n<div class='fs'>";
536                                echo "\n\t<a title='Nachweis' href='javascript:imFenster(\"".$auskpath."alkisfsnw.php?gkz=".$gkz."&amp;gmlid=".$fs_gml."\")'>";
537                                        echo "\n\t\t<img class='nwlink' src='ico/Flurstueck_Link.ico' width='16' height='16' alt='FS'>";
538                                echo "\n\t</a> ";       
539                                echo "\n\tRecht an ".$gmkg." <a title='Flurst&uuml;ck positionieren 1:".$scalefs."' href='";
540                                                echo "javascript:parent.parent.parent.mb_repaintScale(\"mapframe1\",".$x.",".$y.",".$scalefs."); ";
541                                                echo "parent.parent.showHighlight(".$x.",".$y.");' ";
542                                        echo "onmouseover='parent.parent.showHighlight(".$x.",".$y.")' ";
543                                        echo "onmouseout='parent.parent.hideHighlight()'>";
544                                echo " Flur ".$flur." ".$fskenn."</a>";
545                        echo "\n</div>";
546                        $zfs2++;
547                }
548                if($zfs2 == 0) {
549                        if ($zfs1 == 0 or $bltrecht == "nur") { // keine Meldung wenn schon in Teil 1 eine Ausgabe
550                                echo "\n<p class='anz'>Keine Rechte an Buchungen.</p>";
551                                #if ($debug >= 3) {echo "\n<p class='dbg'>".$sql."</p>";}
552                        }
553                } elseif($zfs2 >= $linelimit) { // das Limit war zu knapp, das  B l À t t e r n  anbieten
554                        echo "\n<p class='blt'>".$zfs2." Rechte an Flurst.";
555                        $nxtbltbez=urlencode($beznam);
556                        $nxtbltblatt=urlencode($blatt);
557                        $nxtbltseite=$bltseite + 1;
558                        echo "\n - <a class='blt' href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;person=".$person."&amp;bltbez=".$nxtbltbez."&amp;bltblatt=".$nxtbltblatt."&amp;bltbvnr=".$bvnr."&amp;bltseite=".$nxtbltseite."&amp;bltrecht=nur' ";
559                        echo "title='Bl&auml;ttern ab ".htmlentities($beznam)." Blatt ".$blatt." BVNR ".$bvnr."'>weitere</a>";
560                        echo "</p>";
561                } elseif($zfs2 > 1) { // ab 2
562                        echo "\n<p class='anz'>".$zfs2." Rechte an Flurst.</p>"; // im Limit           
563                }
564        } // ENDE FÀlle mit "Rechte an"
[66]565        return;
566}
567
568// ===========
569// Start hier!
570// ===========
[278]571
[66]572// Parameter: 
573// 1. name   = Suche nach Namensanfang oder -bestandteil.
574// 2. person = gml_id der Person      -> Suche nach GrundbÃŒchern
575// 3. gb     = gml_id des Grundbuches -> Suche nach FlurstÃŒcken
[278]576
[66]577if(isset($epsg)) {
[278]578        #if ($debug >= 2) {echo "\n<p class='dbg'>aktueller EPSG='".$epsg."'</p>";} // aus MB
[86]579        $epsg = str_replace("EPSG:", "" , $_REQUEST["epsg"]);   
[66]580} else {
[278]581        #if ($debug >= 1) {echo "<p class='dbg'>kein EPSG gesetzt</p>";}       
[66]582        $epsg=$gui_epsg; // aus Conf
583}
[278]584#if ($debug >= 2) {echo "\n<p class='dbg'>Filter Gemeinde = '".$gemeinde."'</p>";}
[140]585if ($gemeinde == "") {
[278]586        $gfilter = 0; // Gemeinde ungefiltert
[140]587} elseif(strpos($gemeinde, ",") === false) {
[278]588        $gfilter = 1; // Gemeinde Einzelwert
[140]589} else {
[278]590        $gfilter = 2; // Gemeinde Filter-Liste
[140]591}
[66]592
[278]593// Quo Vadis?
594if(isset($blattgml)) {          // 3. Stufe: FlurstÃŒcke zum Grundbuch
595
[66]596        // Das Programm hat sich selbst verlinkt aus einer Liste der GB zu einem EigentÃŒmer.
597        // Wenn Parameter mitgegeben wurden, können diese fÃŒr einen "Link zurÃŒck" verwendet werden.
[278]598        $trans="Flurst&uuml;cke zum Grundbuch";
599        getFSbyGB(true);                                // mit BackLink
600
601} elseif(isset($person)) {      // 2. Stufe: GrundbÃŒcher zur Person
[66]602        // Das Programm hat sich selbst verlinkt aus einer Liste der Personen zu einer Suchmaske.
[278]603        if ($debug >= 2) {echo "\n<p class='dbg'>Gemeinde-Filter-Steuerung = '".$gfilter."'</p>";}
604
605        // Die Filtereinstellung beeinflusst die Such-Strategie:
606        if ($gfilter == 0) {                    // Keine Filterung auf "Gemeinde": große Datenmenge
607
608                $trans="Grundb&uuml;cher zum Eigent&uuml;mer";
609                getGBbyPerson();
610                // Also schrittweise erst mal Stufe 2 = GrundbÃŒcher zur Person suchen.
611                // Diese Function hat auch noch keine Gemeinde-Filter-Funktion auf GB-Ebene.
612                                                                       
613                if(isset($blattgml) ) { // Es wurde nur EIN Grundbuch zu der Person gefunden.
614                        $trans="1 Blatt zum Eigent&uuml;mer";
615                        getFSbyGB(false);       // Dann dazu auch gleich die Stufe 3 hinterher, aber ohne Backlink.
616                }
617
618        } else {                                                // mit Filter auf Gemeinde: weniger Daten?
619
620                $trans="Grundb. und Flurst. zum Eigent&uuml;mer";
621                getGBuFSbyPerson();             // Schritte 2+3 gleichzeitig, dabei Gemeinde-Filter auf Stufe 3
622        }
623
624} elseif(isset($name)) {        // Suchbegriff aus Form - 1. Stufe: Suche nach Name
625
626        $trans="Namensuche \"".$name."\"";
627        getEigByName();                         // Suchen nach Namensanfang
628
629        if(isset($person)) {            // genau EIN Treffer
630                $trans="1 Grundbuch zum Namen";
631                getGBbyPerson();                // Dann gleich das Grundbuch hinterher
632        }
633
[66]634} elseif ($debug >= 2) {
[278]635        echo "\n<p class='dbg'>Parameter?</p>"; // Programmfehler, soll nicht vorkommen
[66]636}
[278]637// Titel im Kopf anzeigen
638echo "\n<script type='text/javascript'>\n\ttranstitle('".$trans."')\n</script>";
639
[66]640?>
[134]641
642</body>
[66]643</html>
Note: See TracBrowser for help on using the repository browser.