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

Revision 339, 25.1 KB checked in by frank.jaeger, 10 years ago (diff)

Rückbau von "substring(gml_id)" in Views und Programmen.
Namensänderung von Schlüsseltabellen von ax_* auf v_*.

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