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

Revision 356, 25.4 KB checked in by frank.jaeger, 8 years ago (diff)

ALKIS-Mapbender-Navigation umgestellt von .ico- auf .png-Grafiken.
Weitere kleine Korrekturen an ALKIS-Mapbender-Navigation.

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