Changeset 330 for trunk/mapbender


Ignore:
Timestamp:
09/10/14 12:08:18 (10 years ago)
Author:
frank.jaeger
Message:

Umstellung von PostNAS 0.7 auf PostNAS 0.8, ohne Tabelle "alkis_beziehungen".

Location:
trunk/mapbender
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/mapbender/conf/alkisnav_conf.php

    r278 r330  
    11<?php 
    2 /* Einstellungen fuer Mapbender-Navigation mit ALKIS-Daten 
    3         ALKIS-PostGIS-Datenbank aus Konverter PostNAS 0.7 
     2/*      Einstellungen fuer Mapbender-Navigation mit ALKIS-Daten 
     3        ALKIS-PostGIS-Datenbank aus Konverter PostNAS 0.8 
    44        krz Mi.-Ra./Li. 
    5         2013-04-26 ALKIS 07 
     5        2014-09-10 PostNAS 0.8: ohne "alkis_beziehungen" 
    66*/ 
    77 
     
    1010        $port="5432"; 
    1111        $dbname="alkis";        // .$dbvers.$gkz - Mandant 
    12         $dbvers="07";           // 05 oder 06 (steuert Format von .lage) 
     12        $dbvers="08";           // 05 oder 06 (steuert Format von .lage) 
    1313        $user="***"; 
    1414        $password="***"; 
     
    2424 
    2525#       default-Koordinatensystem der GUI 
    26         $gui_epsg=31467; 
     26        $gui_epsg=25832; 
    2727 
    2828#       Landes-Kennung 
  • trunk/mapbender/http/nav/alkisnav_adr.php

    r309 r330  
    88        2013-05-15  Gruppierung nach Gemeinde, mehrfache HsNr (ap_pto.advstandardmodell) unterdrÃŒcken, Icon f. Straße 
    99        2014-01-23      Link zum Auskunft-Modul fÃŒr Straße 
     10        2014-09-03  PostNAS 0.8: ohne Tab. "alkis_beziehungen", mehr "endet IS NULL", Spalten varchar statt integer 
     11 
    1012        ToDo: 
    1113        -       Gruppierung (mit Zeile) der Straßenliste nach Gemeinde 
     
    6264        } 
    6365        $sql ="SELECT g.gemeinde, g.bezeichnung AS gemname, k.gml_id, k.bezeichnung, k.schluesselgesamt, k.lage "; 
    64         $sql.="FROM ax_lagebezeichnungkatalogeintrag as k "; 
     66        $sql.="FROM ax_lagebezeichnungkatalogeintrag k "; 
    6567        $sql.="JOIN ax_gemeinde g ON k.land=g.land AND k.regierungsbezirk=g.regierungsbezirk AND k.kreis=g.kreis AND k.gemeinde=g.gemeinde "; 
    66         $sql.="WHERE k.bezeichnung ILIKE $1 "; 
     68        $sql.="WHERE k.bezeichnung ILIKE $1 AND k.endet IS NULL AND g.endet IS NULL "; 
    6769        switch ($gfilter) { 
    6870                case 1: // Einzelwert 
    69                         $sql.="AND k.gemeinde=".$gemeinde." "; 
     71                        $sql.="AND k.gemeinde='".$gemeinde."' "; 
    7072                        break; 
    7173                case 2: // Liste 
    72                         $sql.="AND k.gemeinde in (".$gemeinde.") "; 
     74                        $sql.="AND k.gemeinde in (".str_replace(",", "','", $gemeinde).") "; 
    7375                        break; 
    7476                default: // kein Filter 
     
    7981        $res=pg_prepare("", $sql); 
    8082        $res=pg_execute("", $v); 
    81         if (!$res) {return "\n<p class='err'>Fehler bei Name</p>";} 
     83 
     84        if (!$res) { 
     85                echo "\n<p class='err'>Fehler bei Name</p>"; 
     86                if ($debug > 2) {echo "<p class='dbg'>SQL = '".$sql."'<p>";} 
     87                return; 
     88        } 
     89 
    8290        $cnt = 0; 
    8391        $gwgem=""; 
     
    134142        switch ($gfilter) { 
    135143                case 1: // Einzelwert 
    136                         $sql.="AND k.gemeinde=".$gemeinde." "; 
     144                        $sql.="AND k.gemeinde='".$gemeinde."' "; 
    137145                        break; 
    138146                case 2: // Liste 
    139                         $sql.="AND k.gemeinde in (".$gemeinde.") "; 
     147                        $sql.="AND k.gemeinde in ('".str_replace(",", "','", $gemeinde)."') "; 
    140148                        break; 
    141149        } 
    142150        $sql.="ORDER BY k.lage, k.bezeichnung LIMIT $2 ;"; 
     151 
    143152        $v=array($match,$linelimit); 
    144153        $res=pg_prepare("", $sql); 
    145154        $res=pg_execute("", $v); 
    146         if (!$res) {return "\n<p class='err'>Fehler bei Schl&uuml;ssel</p>";} 
     155        if (!$res) { 
     156                echo "\n<p class='err'>Fehler bei Schl&uuml;ssel</p>"; 
     157                return; 
     158        } 
    147159        $cnt = 0; 
    148160        while($row = pg_fetch_array($res)) { 
     
    173185                echo "</div>"; 
    174186// function ende 
     187 
    175188                $cnt++; 
    176189        } 
     
    196209        $sql.="JOIN ax_gemeinde g ON k.land=g.land AND k.regierungsbezirk=g.regierungsbezirk AND k.kreis=g.kreis AND k.gemeinde=g.gemeinde "; 
    197210        $sql.="WHERE k.schluesselgesamt = $1 LIMIT 1";  
     211 
    198212        $v=array($str_schl);    // Schluessel-Gesamt .. 
    199213        $res=pg_prepare("", $sql); 
    200214        $res=pg_execute("", $v); 
     215        if (!$res) { 
     216                echo "\n<p class='err'>Fehler bei Name zum Stra&szlig;enschl&uuml;ssel</p>"; 
     217                if ($debug > 2) {echo "<p class='dbg'>SQL = '".$sql."'<p>";} 
     218                return; 
     219        } 
     220 
    201221        if($row = pg_fetch_array($res)) { // .. gefunden 
    202222                $kgml=$row["kgml"]; // ID aus Katalog 
     
    220240                        } 
    221241                        $sqlko.="FROM ax_lagebezeichnungohnehausnummer o "; 
    222                         $sqlko.="JOIN alkis_beziehungen v ON o.gml_id=v.beziehung_zu ";  
    223                         $sqlko.="JOIN ax_flurstueck f ON v.beziehung_von=f.gml_id "; 
     242                        $sqlko.="JOIN ax_flurstueck f ON o.gml_id = ANY(f.zeigtauf) "; 
    224243                        $sqlko.="WHERE o.land= $1 AND o.regierungsbezirk= $2 AND o.kreis= $3 AND o.gemeinde= $4 AND o.lage= $5 ";        
    225                         $sqlko.="AND v.beziehungsart='zeigtAuf' LIMIT 1;"; // die erstbeste Koordinate 
     244                        $sqlko.="LIMIT 1;"; // die erstbeste Koordinate 
    226245                        $v=array($land,$regb,$kreis,$gemnd,$nr); 
    227246                        $resko=pg_prepare("", $sqlko); 
     
    277296                        $sql.="avg (st_y(st_transform(p.wkb_geometry,".$epsg."))) AS y ";                
    278297                } 
    279                 $sql.="FROM ap_pto p JOIN alkis_beziehungen v ON p.gml_id = v.beziehung_von "; 
    280                 $sql.="JOIN ax_lagebezeichnungmithausnummer h ON v.beziehung_zu = h.gml_id "; 
    281                 $sql.="WHERE v.beziehungsart='dientZurDarstellungVon' AND p.art = 'HNR' "; 
    282                 $sql.="AND h.land= $1 AND h.regierungsbezirk= $2 AND h.kreis= $3 AND h.gemeinde= $4 AND h.lage= $5 "; 
     298                $sql.="FROM ap_pto p JOIN ax_lagebezeichnungmithausnummer h ON h.gml_id = ANY(p.dientzurdarstellungvon) "; 
     299                $sql.="WHERE p.art = 'HNR' AND h.land= $1 AND h.regierungsbezirk= $2 AND h.kreis= $3 AND h.gemeinde= $4 AND h.lage= $5 "; 
    283300                $sql.="GROUP BY lpad(split_part(hausnummer,' ',1), 4, '0'), split_part(hausnummer,' ',2) "; 
    284301                $sql.="ORDER BY lpad(split_part(hausnummer,' ',1), 4, '0'), split_part(hausnummer,' ',2);"; 
     
    293310                $resh=pg_prepare("", $sql); 
    294311                $resh=pg_execute("", $v); 
    295                 #echo "<p class='dbg'>SQL='".$sql."'<br>Array=".$v[]."</p>"; // TEST 
     312                if (!$resh) { 
     313                        echo "\n<p class='err'>Fehler bei H&auml;user zum Stra&szlig;enschl&uuml;ssel</p>"; 
     314                        if ($debug > 2) {echo "<p class='dbg'>SQL='".$sql."'<br>Array=".$v."</p>";} 
     315                        return; 
     316                } 
    296317 
    297318                $cnt=0; 
     
    347368 
    348369// +++  Zerlegung Eingabe aus "Balken" von Buchauskunft "Lage": 
    349 //                      Numerisch: Gem-Str-Haus-lfd 
     370//              Numerisch: Gem-Str-Haus-lfd 
    350371 
    351372if ($str_schl != "") { // aus Link 
  • trunk/mapbender/http/nav/alkisnav_eig.php

    r315 r330  
    1212        2013-05-14  Hervorhebung aktuelles Objekt, Parameter "gbkennz" auswerten, 
    1313                                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 
    1415*/ 
    1516$cntget = extract($_GET); 
     
    6061function personendaten() { // Adresse und Geburtsdatum der aktuellen Person ausgeben 
    6162        global $gkz, $gemeinde, $epsg, $name, $person, $blattgml, $auskpath; // $debug 
     63 
    6264        $sql ="SELECT p.nachnameoderfirma, p.vorname, p.geburtsdatum, p.namensbestandteil, "; 
    6365        $sql.="a.ort_post, a.postleitzahlpostzustellung AS plz, a.strasse, a.hausnummer "; 
    64         $sql.="FROM ax_person p LEFT JOIN alkis_beziehungen b ON p.gml_id=b.beziehung_von "; 
    65         $sql.="LEFT JOIN ax_anschrift a ON a.gml_id=b.beziehung_zu WHERE p.gml_id= $1 ;";        
     66        $sql.="FROM ax_person p LEFT JOIN ax_anschrift a ON a.gml_id = ANY(p.hat) "; 
     67        $sql.="WHERE p.gml_id= $1 AND p.endet IS NULL AND a.endet IS NULL LIMIT 1;";     
     68        // Es wird nur eine Zeile ausgewertet 
     69 
    6670        $v=array($person); 
    6771        $res=pg_prepare("", $sql); 
     
    126130                $sql.="JOIN gemeinde_person g ON p.gml_id = g.person WHERE "; 
    127131                switch ($gfilter) { 
    128                         case 1: // Einzelwert 
    129                                 $sql.="g.gemeinde=".$gemeinde." AND "; break; 
     132                        case 1: // Einzel 
     133                                $sql.="g.gemeinde='".$gemeinde."' AND "; break; 
    130134                        case 2: // Liste 
    131                                 $sql.="g.gemeinde in (".$gemeinde.") AND "; break; 
     135                                $sql.="g.gemeinde in ('".str_replace(",", "','", $gemeinde)."') AND "; break; 
    132136                } 
    133137        } else { 
     
    189193        // Suche nach GrundbÃŒchern der Person 
    190194        $sql ="SELECT gb.gml_id AS gml_g, gb.buchungsblattnummermitbuchstabenerweiterung as blatt, b.bezirk, b.bezeichnung AS beznam "; 
    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 "; 
    194         $sql.="JOIN ax_buchungsblatt gb ON bng.beziehung_zu=gb.gml_id "; 
     195        $sql.="FROM ax_namensnummer n JOIN ax_buchungsblatt gb ON n.istbestandteilvon = gb.gml_id "; 
    195196        $sql.="JOIN ax_buchungsblattbezirk b ON gb.land = b.land AND gb.bezirk = b.bezirk "; 
    196         $sql.="WHERE bpn.beziehung_zu= $1 AND bpn.beziehungsart='benennt' AND bng.beziehungsart='istBestandteilVon' "; 
     197        $sql.="WHERE n.bennennt = $1 AND n.endet IS NULL AND gb.endet IS NULL AND b.endet IS NULL "; 
    197198 
    198199        // Parameter $gbkennz, z.B. nach Klick auf Zeile "Bezirk" 
    199200        if ($kennztyp > 1) { // 2=Such Bezirk-Nummer, 3=Such Blatt, 4=Such Buchung BVNR 
    200201                #if ($debug > 0) {echo "<p class='dbg'>Filter Bezirk '".$zgbbez."'<p>";} 
    201                 $sql.="AND b.bezirk = ".$zgbbez." "; 
     202                $sql.="AND b.bezirk='".$zgbbez."' "; 
    202203                $bezirkaktuell = true; 
    203204        } else { 
     
    308309// Stufe 2 und 3 nacheinander verwendet werden. Dies ist wahrscheinlich ÃŒbersichtlicher,  
    309310// weil "ungefiltert" in "2+3" zu lange Listen entstehen wÃŒrden, die durchblÀttert werden mÃŒssen.  
     311 
    310312        global $gkz, $gemeinde, $epsg, $name, $person, $blattgml, $gfilter, $debug, $bltbez, $bltblatt, $bltbvnr, $bltseite, $bltrecht, $kennztyp, $zgbbez; 
    311313        $linelimit=80; // als Limit "Anzahl FlurstÃŒcke" in den beiden folgenden Abfragen 
     
    314316        personendaten(); 
    315317 
    316         // Wenn das Limit ÃŒberschritten wurde: zusÀtzliche Parameter "blt"=BlÀttern 
    317         // $bltbez   = Bezirk-Name   
    318         // $bltblatt = BlattMitBuchstabe 
    319         // $bltbvnr  = lfd.Nr der Buchungsstelle 
    320         // $bltseite = fortlaufende Seiten-Nr 
    321         // $bltrecht = "nur"/"ohne" liefert nur den abgebrochene Teil der Auflistung  
     318        // Wenn das Limit ÃŒberschritten wurde: zusÀtzliche Parameter "blt"=BlÀttern: 
     319        // - $bltbez   = Bezirk-Name   
     320        // - $bltblatt = BlattMitBuchstabe 
     321        // - $bltbvnr  = lfd.Nr der Buchungsstelle 
     322        // - $bltseite = fortlaufende Seiten-Nr 
     323        // - $bltrecht = "nur"/"ohne" liefert nur den abgebrochene Teil der Auflistung  
    322324 
    323325        // SQL-Bausteine vorbereiten 
    324         //  Direkte Buchungen suchen mit:  $sql1 +         $sqla1 + $sql2 
    325         //  SonderfÀlle suchen mit:        $sql1 + $sqlz + $sqla2 + $sql2 
    326  
    327         // Baustein: SQL-Anfang fuer beide Varianten 
     326        //  Direkte Buchungen suchen mit:  $sql1 + $sqla1 + $sql2 
     327        //  SonderfÀlle suchen mit:        $sql1 + $sqla2 + $sql2 
     328 
     329        // Baustein 1: SQL-Anfang fuer beide Varianten 
    328330        $sql1 ="SELECT gb.gml_id AS gml_g, gb.buchungsblattnummermitbuchstabenerweiterung as blatt, b.bezirk, b.bezeichnung AS beznam, "; 
    329331        $sql1.="s1.gml_id as bsgml, s1.laufendenummer AS lfd, f.gml_id, f.flurnummer, f.zaehler, f.nenner, f.gemeinde, ot.gemarkung, ot.gemarkungsname, "; 
     
    335337                $sql1.="st_y(st_transform(st_centroid(f.wkb_geometry), ".$epsg.")) AS y ";                       
    336338        } 
    337         $sql1.="FROM alkis_beziehungen bpn "; 
    338         $sql1.="JOIN ax_namensnummer nn ON bpn.beziehung_von=nn.gml_id "; 
    339         $sql1.="JOIN alkis_beziehungen bng ON nn.gml_id=bng.beziehung_von "; 
    340         $sql1.="JOIN ax_buchungsblatt gb ON bng.beziehung_zu=gb.gml_id "; 
    341    $sql1.="JOIN alkis_beziehungen vbg ON gb.gml_id=vbg.beziehung_zu "; 
    342         $sql1.="JOIN ax_buchungsstelle s1 ON vbg.beziehung_von=s1.gml_id "; 
    343         $sql1.="JOIN ax_buchungsblattbezirk b ON gb.land=b.land AND gb.bezirk=b.bezirk "; // quer-ab 
    344  
    345         // Baustein: Zwischen-JOIN (nur bei zweiter Abfrage) 
    346         $sqlz ="JOIN alkis_beziehungen vss ON vss.beziehung_von=s1.gml_id "; 
    347         $sqlz.="JOIN ax_buchungsstelle s2 ON vss.beziehung_zu=s2.gml_id "; 
    348  
    349         // Baustein: Auswahl 1 oder 2 
    350         $sqla1 ="JOIN alkis_beziehungen vfb ON s1.gml_id=vfb.beziehung_zu "; 
    351         $sqla2 ="JOIN alkis_beziehungen vfb ON s2.gml_id=vfb.beziehung_zu "; 
    352  
    353         // Baustein: SQL-Ende fuer beide Varianten 
    354         $sql2.="JOIN ax_flurstueck f ON vfb.beziehung_von=f.gml_id "; 
    355    $sql2.="JOIN pp_gemarkung ot ON f.land=ot.land AND f.gemarkungsnummer=ot.gemarkung "; // Ortsteil 
    356         $sql2.="WHERE bpn.beziehung_zu= $1 AND bpn.beziehungsart='benennt' AND bng.beziehungsart='istBestandteilVon' "; 
    357         $sql2.="AND vbg.beziehungsart='istBestandteilVon' AND vfb.beziehungsart='istGebucht' "; 
     339 
     340        // NamenNummer >istbestandteilvon> buchungsblatt <istbestandteilvon< buchungsstelle-1 
     341        $sql1.="FROM ax_namensnummer nn "; 
     342        $sql1.="JOIN ax_buchungsblatt gb ON gb.gml_id = nn.istbestandteilvon "; 
     343        $sql1.="JOIN ax_buchungsblattbezirk b ON gb.land=b.land AND gb.bezirk=b.bezirk "; 
     344        $sql1.="JOIN ax_buchungsstelle s1 ON gb.gml_id = s1.istbestandteilvon "; 
     345 
     346        // Baustein A: Auswahl 1 oder 2 
     347        // buchungsstelle-1 <istGebucht< FS 
     348        $sqla1 ="JOIN ax_flurstueck f ON s1.gml_id = f.istgebucht "; 
     349 
     350        // buchungsStelle1 (herr.) >an> buchungsStelle2 (dien.) <istGebucht< FS 
     351        $sqla2 ="JOIN ax_buchungsstelle s2 ON s2.gml_id = ANY(s1.an) "; 
     352        $sqla2.="JOIN ax_flurstueck f ON s2.gml_id = f.istgebucht "; 
     353 
     354        // Baustein 2: SQL-Ende fuer beide Varianten 
     355        $sql2 ="JOIN pp_gemarkung ot ON f.land=ot.land AND f.gemarkungsnummer=ot.gemarkung "; // Ortsteil 
     356        $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 "; 
     357        // AND s2.endet IS NULL 
    358358 
    359359        // Parameter $gbkennz nach Klick auf Zeile "Bezirk" 
     
    368368        switch ($gfilter) { // Gemeinde-Filter 
    369369                case 1: // Einzelwert 
    370                         $sql2.="AND ot.gemeinde=".$gemeinde." "; break; 
     370                        $sql2.="AND ot.gemeinde='".$gemeinde."' "; break; 
    371371                case 2: // Liste 
    372                         $sql2.="AND ot.gemeinde in (".$gemeinde.") "; break; 
     372                        $sql2.="AND ot.gemeinde in ('".str_replace(",", "','", $gemeinde)."') "; break; 
    373373        } 
    374374        $sql3 ="ORDER BY b.bezirk, gb.buchungsblattnummermitbuchstabenerweiterung, cast(s1.laufendenummer AS integer), f.gemarkungsnummer, f.flurnummer, f.zaehler, f.nenner LIMIT $2 ;"; 
     
    400400        // FÀlle ohne "Rechte an" 
    401401        if ($bltrecht != "nur") { // "nur"/"ohne" liefert nur den abgebrochene Teil der Auflistung 
    402                 // Blatt <vbg/istBestandteilVon<  Buchungsstelle <vfb/istGebucht< Flurstck. 
     402                // Blatt <istBestandteilVon<  Buchungsstelle <istGebucht< Flurstck. 
    403403                $sql=$sql1.$sqla1.$sql2.$bltwhere.$sql3; // Direkte Buchungen 
    404404                $v=array($person, $linelimit); 
     
    407407                if (!$res) { 
    408408                        echo "\n<p class='err'>Fehler bei Buchung und Flurst&uuml;ck.</p>"; 
     409                        if ($debug > 2) {echo "<p class='dbg'>SQL = '".$sql."'<p>";} 
    409410                        return; 
    410411                } 
     412 
    411413                $zfs1=0; 
    412414                $gwbez=""; 
     
    446448                        if ($bltseite > 1) {echo "weitere ";} 
    447449                        echo $zfs1." Flurst&uuml;cke"; 
     450 
    448451                        // B l À t t e r n  (eine Folgeseite anbieten) 
    449452                        $nxtbltbez=urlencode($beznam); 
     
    473476        if ($bltrecht != "ohne") { // "nur"/"ohne" liefert nur den abgebrochene Teil der Auflistung  
    474477                // Zweite Abfrage (Variante) aus den Bausteinen zusammen bauen 
    475                 // buchungsStelle2 < an < buchungsStelle1 
    476                 $sql=$sql1.$sqlz.$sqla2.$sql2.$bltwhere.$sql3; // Rechte an 
     478                // buchungsStelle2 <an< buchungsStelle1 
     479                $sql=$sql1.$sqla2.$sql2.$bltwhere."AND s2.endet IS NULL ".$sql3; // Rechte an 
    477480                $v=array($person, $linelimit); 
    478481                $res=pg_prepare("", $sql); 
     
    484487                $zfs2=0; 
    485488                $gwbez=""; 
    486                 #gwgb=""; 
    487489                while($row = pg_fetch_array($res)) {     
    488490                        $bezirk=$row["bezirk"]; 
     
    505507                                $gwbv = $bvnr; 
    506508                                $bsgml=$row["bsgml"]; 
    507                                 zeile_buchung($bsgml, $bvnr, "", true, false); // Recht an ...  // ohne Link! 
     509                                zeile_buchung($bsgml, $bvnr, "", true, false); // Recht an ... // ohne Link! 
    508510                        #       zeile_buchung($bsgml, $bvnr, $bezirk."-".$blatt, true, false); // Recht an ... 
    509511                        } 
     
    577579} elseif($person != "") { // GrundbÃŒcher zur Person 
    578580        // Das Programm hat sich selbst verlinkt aus einer Liste der Personen zu einer Suchmaske. 
    579         if ($debug >= 2) {echo "\n<p class='dbg'>Gemeinde-Filter-Steuerung = '".$gfilter."'</p>";} 
     581        //if ($debug >= 2) {echo "\n<p class='dbg'>Gemeinde-Filter-Steuerung = '".$gfilter."'</p>";} 
    580582 
    581583        // Die Filtereinstellung beeinflusst die Such-Strategie: 
  • trunk/mapbender/http/nav/alkisnav_fkt.php

    r315 r330  
    44        2013-05-14  Hervorhebung aktuelles Objekt, Title auch auf Icon, IE zeigt sonst alt= als Title dar. 
    55        2013-05-15  Function verlegt 
    6     2014-02-06  Korrektur zeile_person 
     6        2014-02-06  Korrektur zeile_person 
     7        2014-09-03  PostNAS 0.8: ohne Tab. "alkis_beziehungen", mehr "endet IS NULL", Spalten varchar statt integer 
    78*/ 
    89 
    9 // function Typ "zeile_**"  = Ausgabe eines Knotens 
    10 // - Icon,  ggf. mit Link zur Buchauskunft 
    11 // - Zeile, ggf. mit Link zur weiteren Auflösung untergeordneter Knoten 
    12 // Hierin die Encodierung fÃŒr url und HTML. 
    13  
    1410function is_ne_zahl($wert) { 
    15         // Prueft, ob ein Wert ausschließlich aus den Zahlen 0 bis 9 besteht 
     11        // PrÃŒft, ob ein Wert ausschließlich aus den Zahlen 0 bis 9 besteht 
    1612        if (trim($wert, "0..9") == "") {return true;} else {return false;} 
    1713} 
     
    7470} 
    7571 
     72// function Typ "zeile_**"  = Ausgabe eines Knotens 
     73// - Icon,  ggf. mit Link zur Buchauskunft 
     74// - Zeile, ggf. mit Link zur weiteren Auflösung untergeordneter Knoten 
     75// Hierin die Encodierung fÃŒr url und HTML. 
     76 
    7677function zeile_ag ($ag, $anr, $aktuell) {       // Zeile  A m t s g e r i c h t 
    7778        global $gkz, $gemeinde, $epsg, $auskpath; 
     
    235236 
    236237        // SQL-Bausteine vorbereiten 
    237         // SQL vorne gleich 
     238        // vorne gleich 
    238239        $sql1 ="SELECT s1.laufendenummer AS lfd, s1.gml_id AS bsgml, f.gml_id, f.flurnummer, f.zaehler, f.nenner, f.gemeinde, "; 
    239240        if($epsg == "25832") { // Transform nicht notwendig 
     
    244245                $sql1.="st_y(st_transform(st_centroid(f.wkb_geometry), ".$epsg.")) AS y, ";                      
    245246        } 
    246         $sql1.="g.gemarkung, g.gemarkungsname "; 
    247         $sql1.="FROM alkis_beziehungen vbg "; 
    248         $sql1.="JOIN ax_buchungsstelle s1 ON vbg.beziehung_von = s1.gml_id ";  
    249  
    250         // Zwischen-JOIN verschieden 
    251         $sqlz1 ="JOIN alkis_beziehungen vfb ON s1.gml_id = vfb.beziehung_zu "; 
     247        $sql1.="g.gemarkung, g.gemarkungsname FROM ax_buchungsstelle s1 ";  
     248 
     249        // 2 Varianten zwischen 
     250    $sqlz1="JOIN ax_flurstueck f ON f.istgebucht = s1.gml_id "; 
    252251         
    253         $sqlz2 ="JOIN alkis_beziehungen vss ON vss.beziehung_von = s1.gml_id "; 
    254         $sqlz2.="JOIN ax_buchungsstelle s2 ON vss.beziehung_zu = s2.gml_id "; 
    255         $sqlz2.="JOIN alkis_beziehungen vfb ON s2.gml_id = vfb.beziehung_zu "; 
    256  
    257         // SQL hinten gleich 
    258         $sql2 ="JOIN ax_flurstueck f ON vfb.beziehung_von = f.gml_id "; 
     252        $sqlz2 ="JOIN ax_buchungsstelle s2 ON s2.gml_id = ANY(s1.an) "; // nur an oder "an" und "zu" ? 
     253// Test: SELECT * FROM ax_buchungsstelle WHERE NOT zu IS NULL;  // keine Treffer fÃŒr "zu" 
     254//      $sqlz2 ="JOIN ax_buchungsstelle s2 ON (s2.gml_id = ANY(s1.an) OR s2.gml_id = ANY(s1.zu)) ";  
     255    $sqlz2.="JOIN ax_flurstueck f ON f.istgebucht = s2.gml_id "; 
     256 
     257        // hinten gleich 
    259258        $sql2.="JOIN pp_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkung "; 
    260         $sql2.="WHERE vbg.beziehung_zu= $1 AND vbg.beziehungsart='istBestandteilVon' AND vfb.beziehungsart='istGebucht' "; 
     259        $sql2.="WHERE s1.istbestandteilvon = $1 "; 
    261260        switch ($gfilter) { 
    262261                case 1: // Einzelwert 
    263                         $sql2.="AND g.gemeinde=".$gemeinde." "; break; 
     262                        $sql2.="AND g.gemeinde='".$gemeinde."' "; break; 
    264263                case 2: // Liste 
    265                         $sql2.="AND g.gemeinde in (".$gemeinde.") "; break; 
     264                        $sql2.="AND g.gemeinde in ('".str_replace(",", "','", $gemeinde)."') "; break; 
    266265        } 
    267266        $sql2.="ORDER BY cast(s1.laufendenummer AS integer), f.gemarkungsnummer, f.flurnummer, f.zaehler, f.nenner LIMIT $2 ;"; 
     
    276275        if (!$res) { 
    277276                echo "\n<p class='err'>Fehler bei Buchung und Flurst&uuml;ck.</p>"; 
    278                 #if ($debug >= 3) {echo "\n<p class='err'>".$sql1.$sqlz1.$sql2."</p>";} 
     277                if ($debug >= 3) {echo "\n<p class='err'>".$sql1.$sqlz1.$sql2."</p>";} 
    279278                return; 
    280279        } 
  • trunk/mapbender/http/nav/alkisnav_fls.php

    r306 r330  
    22/* Version vom 
    33        2013-04-16      "import_request_variables" entfÀllt in PHP 5.4,  
    4                                         Fehlerkorrektur Komma in SQL bei FS-Suche. 
     4                                Fehlerkorrektur Komma in SQL bei FS-Suche. 
    55        2013-04-26      Ersetzen View "gemeinde_gemarkung" durch Tabelle "pp_gemarkung" 
    6                                         ZurÃŒck-Link, Titel der Transaktion anzeigen 
     6                                ZurÃŒck-Link, Titel der Transaktion anzeigen 
    77        2013-04-29      Test mit IE 
    88        2013-05-07  Strukturierung des Programms, redundanten Code in Functions zusammen fassen 
    99        2013-05-14  Variablen-Namen geordnet, Hervorhebung aktuelles Objekt, Title auch auf Icon, IE zeigt sonst alt= als Title dar. 
    1010        2013-10-15  missing Parameter 
     11        2014-09-03  PostNAS 0.8: ohne Tab. "alkis_beziehungen", mehr "endet IS NULL", Spalten varchar statt integer 
    1112*/ 
    1213$cntget = extract($_GET); 
     
    114115                $sqlk.="y(st_transform(st_Centroid(wkb_geometry), ".$epsg.")) AS y ";                    
    115116        } 
    116    $sqlk.="FROM ax_flurstueck WHERE gml_id= $1 "; 
     117        $sqlk.="FROM ax_flurstueck WHERE gml_id= $1 AND endet IS NULL;"; 
    117118        $v=array($gml); 
    118119        $resk=pg_prepare("", $sqlk); 
     
    125126 
    126127function zeile_gemarkung($gkgnr, $gkgname, $aktuell) { 
    127         // Eine Zeile zu Gemarkung ausgeben 
     128// Eine Zeile zu Gemarkung ausgeben 
    128129        global $con, $gkz, $gemeinde, $epsg, $gfilter; 
    129130        if ($gkgname == "") { // Falls Gem.-Name fehlt, in DB nachschlagen 
    130                 $sql ="SELECT g.gemarkungsname FROM pp_gemarkung g WHERE g.gemarkung = $1 LIMIT 1;"; 
     131                $sql ="SELECT g.gemarkungsname FROM pp_gemarkung g WHERE g.gemarkung = $1 AND endet IS NULL LIMIT 1;"; 
    131132                $v=array($gnr); 
    132133                $res=pg_prepare("", $sql); 
     
    225226        global $con, $gkz, $gemeinde, $epsg, $debug, $gfilter; 
    226227        $linelimit=60; 
     228 
    227229        $sql ="SELECT gemeinde, gemeindename FROM pp_gemeinde "; 
    228230        switch ($gfilter) { 
    229231                case 1: // Einzelwert 
    230                         $sql.="WHERE gemeinde=".$gemeinde." "; break; 
     232                        $sql.="WHERE gemeinde='".$gemeinde."' "; break; 
    231233                case 2: // Liste 
    232                         $sql.="WHERE gemeinde in (".$gemeinde.") "; break; 
     234                        $sql.="WHERE gemeinde in ('".str_replace(",", "','", $gemeinde)."') "; break; 
    233235                default: break; 
    234236        } 
     
    311313        switch ($gfilter) { 
    312314                case 1: // Einzelwert 
    313                         $sql.="AND g.gemeinde = ".$gemeinde." "; break; 
     315                        $sql.="AND g.gemeinde='".$gemeinde."' "; break; 
    314316                case 2: // Liste 
    315                         $sql.="AND g.gemeinde in (".$gemeinde.") "; break; 
     317                        $sql.="AND g.gemeinde in ("."'".str_replace(",", "','", $gemeinde)."'".") "; break; 
    316318        } 
    317319        $sql.=" ORDER BY s.gemeindename, g.gemarkungsname LIMIT $2 ;"; 
     
    379381        // Body 
    380382        $sql ="SELECT gemarkungsteilflur AS flur FROM ax_gemarkungsteilflur f "; 
    381         $sql.="WHERE gemarkung= $1 ORDER BY gemarkungsteilflur LIMIT $2 ;"; //WHERE f.land=? 
     383        $sql.="WHERE gemarkung= $1 AND endet IS NULL ORDER BY gemarkungsteilflur LIMIT $2 ;"; //WHERE f.land=? 
    382384        $v=array($zgemkg, $linelimit); 
    383385        $res=pg_prepare("", $sql); 
     
    419421                $sql.="st_y(st_transform(st_Centroid(f.wkb_geometry), ".$epsg.")) AS y ";                        
    420422        } 
    421    $sql.="FROM ax_flurstueck f WHERE f.gemarkungsnummer= $1 AND f.flurnummer= $2 "; 
     423   $sql.="FROM ax_flurstueck f WHERE f.gemarkungsnummer= $1 AND f.flurnummer= $2 AND endet IS NULL "; 
    422424        $sql.="ORDER BY f.zaehler, f.nenner LIMIT $3 ;"; // WHERE f.land=? 
    423425        $v=array($zgemkg, $zflur, $linelimit); 
     
    457459 
    458460        // Body 
    459         $whcl.="WHERE flurstueckskennzeichen like $1 "; 
     461        $whcl.="WHERE flurstueckskennzeichen like $1 AND endet IS NULL "; 
    460462        $sql ="SELECT 'h' AS ftyp, gml_id, zaehler, nenner, nachfolgerflurstueckskennzeichen as nachf FROM ax_historischesflurstueck ".$whcl; 
    461463        $sql.="UNION SELECT 'o' AS ftyp, gml_id, zaehler, nenner, nachfolgerflurstueckskennzeichen as nachf FROM ax_historischesflurstueckohneraumbezug ".$whcl; 
    462464        $sql.="ORDER BY zaehler, nenner LIMIT $2 ;";  
    463465        $fskzwhere =$land.$zgemkg.str_pad($zflur, 3, "0", $STR_PAD_LEFT)."%"; 
    464         $v=array($fskzwhere,   $linelimit); 
     466        $v=array($fskzwhere, $linelimit); 
    465467        $res=pg_prepare("", $sql); 
    466468        $res=pg_execute("", $v); 
     
    506508                $sql.="y(st_transform(st_Centroid(f.wkb_geometry), ".$epsg.")) AS y ";                   
    507509        } 
    508    $sql.="FROM ax_flurstueck f "; 
     510        $sql.="FROM ax_flurstueck f "; 
    509511        $sql.="WHERE f.gemarkungsnummer= $1 AND f.flurnummer= $2 AND f.zaehler= $3 "; 
    510512        If ($znenner != "") {$sql.="AND f.nenner=".$znenner." ";} // wie prepared? 
    511         $sql.="ORDER BY f.zaehler, f.nenner;"; 
     513        $sql.="AND endet IS NULL ORDER BY f.zaehler, f.nenner;"; 
    512514        $v=array($zgemkg, $zflur, $zzaehler); 
    513515        $res=pg_prepare("", $sql); 
     
    553555        if ($znenner == "") {   // Wenn kein Nenner angegeben wurde,  
    554556                //wird mit Wildcard und like nach allen Nennern gesucht. 
    555                 $fskzwhere.="____\_\_"; // fÃŒr like  
    556                 // Das Wildcard-Zeichen "_" ist dummerweise mit FÃŒllzeichen im Feldinhalt identisch 
     557                $fskzwhere.="____\_\_"; // fÃŒr like 
    557558                $whereop=" like "; 
     559                // Das Wildcard-Zeichen "_" ist mit Zeichen im Feldinhalt identisch 
     560                // "___" = hier kann auch ein Nenner stehen, "\_\_" hier mÃŒssen tatsÀchlich __ stehen. 
     561                // WARNUNG:  nicht standardkonforme Verwendung von Escape in Zeichenkettenkonstante 
     562                // z.B.: like '05265600400145____\_\_' 
    558563        } else { // Ein Nenner wurde angegeben 
    559564                $fskzwhere.=str_pad($znenner, 4, "0", $STR_PAD_LEFT)."__"; 
    560565                $whereop=" = "; 
    561566        } 
    562         $whcl.="WHERE flurstueckskennzeichen ".$whereop." $1 "; 
    563          
     567        $whcl.="WHERE flurstueckskennzeichen ".$whereop." $1 AND endet IS NULL "; 
    564568        $fldlist=" AS ftyp, gml_id, gemarkungsnummer, flurnummer, zaehler, nenner, "; 
    565569 
    566570        // NICHT in aktuell suchen wenn explizit historisch gesucht wird 
    567         #$sql ="SELECT 'a'".$fldlist."null as nachf FROM ax_flurstueck ".$whcl." UNION "; 
    568571        $sql ="SELECT 'h'".$fldlist."nachfolgerflurstueckskennzeichen as nachf FROM ax_historischesflurstueck ".$whcl; 
    569572        $sql.="UNION SELECT 'o'".$fldlist."nachfolgerflurstueckskennzeichen as nachf FROM ax_historischesflurstueckohneraumbezug ".$whcl; 
    570573 
    571574        $v=array($fskzwhere); 
    572         #echo "<p class='dbg'>SQL=".$sql."<br>WHERE=".$fskzwhere."</p>";  // ++++ TEST 
    573  
    574575        $res=pg_prepare("", $sql); 
    575576        $res=pg_execute("", $v); 
    576         if (!$res) {echo "\n<p class='err'>Fehler bei hist. Flurst&uuml;ck.</p>";} 
     577        if (!$res) { 
     578                echo "\n<p class='err'>Fehler bei historischem Flurst&uuml;ck.</p>"; 
     579                if ($debug > 2) {echo "<p class='dbg'>SQL = '".$sql."'<br>Parameter: ".$fskzwhere."<p>";} 
     580                return; 
     581        } 
     582 
    577583        $zfs=0; 
    578  
    579584        while($row = pg_fetch_array($res)) { // Schleife Hist-FS 
    580585                $ftyp=$row["ftyp"]; 
     
    585590                $nachf=$row["nachf"]; 
    586591                if ($row["nenner"] != "") {$fskenn.="/".$row["nenner"];} 
    587  
    588                 #if ($ftyp == "a") { // als aktuelles FS gefunden, das "h" war also unnötig! 
    589                 #       $koor=flurstueckskoordinaten($fs_gml); 
    590                 #       echo "\n<p>Flurst&uuml;ck ".$fskenn." ist aktuell, nicht historisch</p>";        
    591                 #       zeile_flurstueck ($fs_gml, $fskenn, $koor["x"], $koor["y"], $gknr, $flur, true); 
    592                 #} else { // Historisches FS gefunden (h oder o) 
    593592 
    594593                zeile_hist_fs($fs_gml, $fskenn, $ftyp, $gknr, $flur, true); 
     
    604603                        $stri="'".str_replace(",", "','", $stri)."'"; 
    605604 
    606                         $nawhcl="WHERE flurstueckskennzeichen IN ( ".$stri." ) "; 
     605                        $nawhcl="WHERE flurstueckskennzeichen IN ( ".$stri." ) AND endet IS NULL "; 
    607606 
    608607                        $nasql ="SELECT 'a' AS ftyp, gml_id, gemarkungsnummer, flurnummer, zaehler, nenner FROM ax_flurstueck ".$nawhcl; 
     
    613612                        $nares=pg_prepare("", $nasql); 
    614613                        $nares=pg_execute("", $v); 
    615                         if (!$nares) {echo "\n<p class='err'>Fehler bei Nachfolger.</p>";} 
     614                        if (!$nares) { 
     615                                echo "\n<p class='err'>Fehler bei Nachfolger.</p>"; 
     616                                if ($debug > 2) {echo "<p class='dbg'>SQL = '".$nasql."'<p>";} 
     617                                return; 
     618                        } 
     619 
     620/* 
     621 
     622 SELECT 'a' AS ftyp, gml_id, gemarkungsnummer, flurnummer, zaehler, nenner  
     623 FROM ax_flurstueck  
     624 WHERE flurstueckskennzeichen IN ( '05265600400296______' )  
     625   AND endet IS NULL  
     626UNION  
     627 SELECT 'h' AS ftyp, gml_id, gemarkungsnummer, flurnummer, zaehler, nenner  
     628 FROM ax_historischesflurstueck  
     629 WHERE flurstueckskennzeichen IN ( '05265600400296______' )  
     630    AND endet IS NULL  
     631UNION  
     632 SELECT 'o' AS ftyp, gml_id, gemarkungsnummer, flurnummer, zaehler, nenner  
     633 FROM ax_historischesflurstueckohneraumbezug  
     634 WHERE flurstueckskennzeichen IN ( '05265600400296______' )  
     635   AND endet IS NULL ' 
     636 
     637==> UNION-Typen character varying und integer passen nicht zusammen  gemarkungsnummer 
     638 
     639*/ 
     640 
    616641                        $zfsn=0; 
    617642                        // inner Body 
  • trunk/mapbender/http/nav/alkisnav_grd.php

    r306 r330  
    1010        2013-05-14  Hervorhebung aktuelles Objekt. Title "Nachweis" auch auf Icon. 
    1111        2013-12-12      Limit in EinBlatt von 200 weit hoch gesetzt (bis BlÀttern möglich wird) 
     12        2014-09-03  PostNAS 0.8: ohne Tab. "alkis_beziehungen", mehr "endet IS NULL", Spalten varchar statt integer 
    1213*/ 
    1314$cntget = extract($_GET); 
     
    5253        global $debug; 
    5354        $linelimit=40; 
    54         $sql ="SELECT a.stelle, a.bezeichnung AS ag FROM ax_dienststelle a "; 
    55         $sql.="WHERE a.stelle IN (".$liste_ag.") AND a.stellenart = 1000 "; // Amtsgerichte aus Liste 
    56         $sql.="ORDER BY a.bezeichnung LIMIT $1 ;"; 
     55 
     56        $sql ="SELECT stelle, bezeichnung AS ag FROM ax_dienststelle "; 
     57        $sql.="WHERE stelle IN (".$liste_ag.") AND stellenart = 1000 AND endet IS NULL "; // AG aus Liste 
     58        $sql.="ORDER BY bezeichnung LIMIT $1 ;"; 
    5759        $res = pg_prepare("", $sql); 
    5860        $res = pg_execute("", array($linelimit)); 
    5961        if (!$res) { 
    6062                echo "\n<p class='err'>Fehler bei Amtsgerichte</p>"; 
    61                 #if ($debug >= 3) {echo "\n<p class='err'>".$sql."</p>";} 
     63                if ($debug >= 3) {echo "\n<p class='err'>".$sql."</p>";} 
    6264                return 0; 
    6365        } 
     
    9395        $sql ="SELECT g.bezirk, g.bezeichnung FROM ax_buchungsblattbezirk g "; 
    9496        $sql.="JOIN ax_dienststelle a ON g.stelle=a.stelle "; 
    95         $sql.="WHERE a.stelle = $1 AND a.stellenart = 1000 "; 
     97        $sql.="WHERE a.stelle = $1 AND a.stellenart = 1000 AND a.endet IS NULL AND g.endet IS NULL "; 
    9698        // Diese Subquery stellt sicher, dass nur Bezirke aufgelistet werden, die auch BlÀtter enthalten: 
    97         $sql.="AND NOT (SELECT gml_id FROM ax_buchungsblatt b WHERE b.land=g.land and b.bezirk=g.bezirk LIMIT 1) IS NULL "; 
     99        $sql.="AND NOT (SELECT gml_id FROM ax_buchungsblatt b WHERE b.land=g.land AND b.bezirk=g.bezirk AND b.endet IS NULL LIMIT 1) IS NULL "; 
    98100        $sql.="ORDER BY g.bezeichnung LIMIT $2 ;"; 
    99101        $v = array($agkey, $linelimit); 
     
    128130        #global $debug; 
    129131        $sql ="SELECT a.stelle, a.bezeichnung AS ag, g.bezeichnung FROM ax_buchungsblattbezirk g "; 
    130         $sql.="JOIN ax_dienststelle a ON g.stelle=a.stelle WHERE g.bezirk= $1 LIMIT 1;"; 
     132        $sql.="JOIN ax_dienststelle a ON g.stelle=a.stelle WHERE g.bezirk= $1 AND g.endet IS NULL AND a.endet IS NULL LIMIT 1;"; 
    131133        $v=array($gbbez); 
    132134        $res=pg_prepare("", $sql); 
     
    159161        $sql ="SELECT a.stelle, a.bezeichnung AS ag, g.bezirk, g.bezeichnung FROM ax_buchungsblattbezirk g "; 
    160162        $sql.="JOIN ax_dienststelle a ON g.stelle=a.stelle "; 
    161         $sql.="WHERE g.bezeichnung ILIKE $1 "; //       "AND a.stellenart=1000 " // Amtsgericht 
     163        $sql.="WHERE g.bezeichnung ILIKE $1 AND g.endet IS NULL AND a.endet IS NULL "; // "AND a.stellenart=1000 " Amtsgericht 
    162164        $sql.="ORDER BY a.bezeichnung, g.bezeichnung LIMIT $2 ;"; 
    163165        if ( $gbkennz == "") { 
     
    219221        // Body 
    220222        $sql ="SELECT b.gml_id, b.buchungsblattnummermitbuchstabenerweiterung AS blatt FROM ax_buchungsblatt b "; 
    221         $sql.="WHERE b.bezirk= $1 ORDER BY b.buchungsblattnummermitbuchstabenerweiterung LIMIT $2 ;"; 
     223        $sql.="WHERE b.bezirk= $1 AND b.endet IS NULL ORDER BY b.buchungsblattnummermitbuchstabenerweiterung LIMIT $2 ;"; 
    222224        $v=array($zgbbez, $linelimit); 
    223225        $res=pg_prepare("", $sql); 
     
    253255        global $debug, $zgbbez, $zblatt, $zblattn, $zblattz; 
    254256        $sql ="SELECT b.gml_id, b.buchungsblattnummermitbuchstabenerweiterung AS blatt FROM ax_buchungsblatt b ";  
    255         $sql.="WHERE b.bezirk= $1 AND b.buchungsblattnummermitbuchstabenerweiterung "; 
     257        $sql.="WHERE b.bezirk= $1 AND b.endet IS NULL AND b.buchungsblattnummermitbuchstabenerweiterung "; 
    256258 
    257259        if ($zblattz == "") { // Ohne Buchstabenerweiterung: Formate '123','000123 ','0000123' 
     
    290292        } 
    291293        // Body 
    292         // 2013-12-12 Limit von ursprÃŒnglich 200 weit hoch gesetzt 
    293294        GB_Buchung_FS(1000, $zgbbez."-".$zblatt); // Blatt -> Buchung -> Flurstueck (Limitiert) 
    294         // ++ besser Limit wieder runter und "BlÀttern"-Funktion einfÃŒhren 
     295        // ++ besser Limit runter und "BlÀttern"-Funktion einfÃŒhren 
    295296        return;  
    296297} 
     
    300301        // Dazu die gml_id der Buchungsstelle ermitteln, um "function EinGrundstueck" benutzen zu können. 
    301302        global $debug, $zgbbez, $zblatt, $zblattn, $zblattz, $zbvnr; 
     303 
    302304        // Blatt ->  B u c h u n g s s t e l l e 
    303305        $sql ="SELECT s.gml_id FROM ax_buchungsstelle s "; 
    304         $sql.="JOIN alkis_beziehungen v ON s.gml_id=v.beziehung_von ";  
    305         $sql.="JOIN ax_buchungsblatt b ON b.gml_id=v.beziehung_zu ";  
    306         $sql.="WHERE v.beziehungsart='istBestandteilVon' "; 
    307         $sql.="AND b.bezirk= $1 AND b.buchungsblattnummermitbuchstabenerweiterung "; 
     306        $sql.="JOIN ax_buchungsblatt b ON s.istbestandteilvon = b.gml_id ";  
     307        $sql.="WHERE b.bezirk= $1 AND s.endet IS NULL AND b.endet IS NULL AND b.buchungsblattnummermitbuchstabenerweiterung "; 
     308 
    308309        if ($zblattz == "") { // Ohne Buchstabenerweiterung 
    309310                //Formate '123','000123 ','0000123' 
     
    351352                zeile_buchung($buchunggml, $zbvnr, $zgbbez."-".$zblattn.$zblattz, false, true); 
    352353        } 
    353 // SQL-Bausteine 
     354 
    354355// dienend $1 gml_id von 
    355 //         Buchungsstelle  <vs/an<  Buchungsstelle sh 
     356//         Buchungsstelle  <an<  Buchungsstelle sh 
    356357//         (dienend)                (herrschend) 
     358 
    357359// direkt  $1 gml_id von  
    358 //         Buchungsstelle                              <vs/istGebucht< FlurstÃŒck > Gemarkung 
     360//         Buchungsstelle                           <istGebucht< FlurstÃŒck >> Gemarkung 
     361 
    359362// Recht   $1 gml_id von  
    360 //         Buchungsstelle  >vs/an>  Buchungsstelle sd  <vf/istGebucht< FlurstÃŒck > Gemarkung 
    361 //         (herrschend)             (dienend)      sd  >vd/istBestandteilVon> bd > gd 
     363//         Buchungsstelle  >an>  Buchungsstelle sd  <istGebucht< FlurstÃŒck >> Gemarkung 
     364//         (herrschend)             (dienend)   sd  >istBestandteilVon> bd >> gd 
    362365 
    363366        // Body 
     
    373376        // Filter gleich 
    374377        switch ($gfilter) { // Filter Gemeinde 
    375                 case 1: // Einzelwert 
    376                         $sqlfitler="AND g.gemeinde=".$gemeinde." "; break; 
     378                case 1: // Einzel 
     379                        $sqlfitler="AND g.gemeinde='".$gemeinde."' "; break; 
    377380                case 2: // Liste 
    378                         $sqlfilter="AND g.gemeinde in (".$gemeinde.") "; break; 
    379         } 
    380  
    381         // Abfrage: Direkte Buchungen (FlurstÃŒcke) 
    382         $sql =$sqlanf."FROM alkis_beziehungen vs JOIN ax_flurstueck f ON vs.beziehung_von = f.gml_id "; 
    383         $sql.="JOIN pp_gemarkung  g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkung "; 
    384         $sql.="WHERE vs.beziehung_zu= $1 AND vs.beziehungsart='istGebucht' "; 
    385         $sql.=$sqlfilter."ORDER BY f.gemarkungsnummer, f.flurnummer, f.zaehler, f.nenner;"; 
     381                        $sqlfilter="AND g.gemeinde in ('".str_replace(",", "','", $gemeinde)."') "; break; 
     382        } 
     383 
     384        // Direkte Buchungen (Flurst.) 
     385        $sql =$sqlanf."FROM ax_flurstueck f JOIN pp_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkung "; 
     386        $sql.="WHERE f.istgebucht = $1 AND f.endet IS NULL ".$sqlfilter."ORDER BY f.gemarkungsnummer, f.flurnummer, f.zaehler, f.nenner;"; 
    386387 
    387388        $v=array($buchunggml); 
     
    415416        } 
    416417 
    417         // Abfrage: Rechte an (dienende Buchungen und ihre FlurstÃŒcke) 
    418         $sql =$sqlanf.", sd.gml_id AS diengml, sd.laufendenummer AS dienlfd, ";         // Stelle dienend 
     418        // Recht "an" (dienende Buchungen und ihre Flurst.) 
     419        $sql =$sqlanf.", sd.gml_id AS diengml, sd.laufendenummer AS dienlfd, "; // Stelle dienend 
    419420        $sql.="bd.gml_id AS dienbltgml, bd.buchungsblattnummermitbuchstabenerweiterung AS dienblatt, "; // Blatt dienend 
    420         $sql.="gd.stelle, gd.gml_id AS dienbezgml, gd.bezirk, gd.bezeichnung AS diengbbez ";    // AG und Bezirk dazu 
    421         $sql.="FROM alkis_beziehungen vs "; 
    422         $sql.="JOIN ax_buchungsstelle sd ON vs.beziehung_zu=sd.gml_id "; 
    423         $sql.="JOIN alkis_beziehungen vf ON vf.beziehung_zu=sd.gml_id "; // sd=Stelle dienend 
    424         $sql.="JOIN ax_flurstueck f ON vf.beziehung_von = f.gml_id "; 
     421        $sql.="gd.stelle, gd.gml_id AS dienbezgml, gd.bezirk, gd.bezeichnung AS diengbbez "; // AG und Bezirk dazu 
     422        $sql.="FROM ax_buchungsstelle sh "; // herrschend 
     423        $sql.="JOIN ax_buchungsstelle sd ON sd.gml_id = ANY(sh.an) "; // dienend 
     424        $sql.="JOIN ax_flurstueck f ON f.istgebucht = sd.gml_ID "; 
    425425        $sql.="JOIN pp_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkung "; 
    426  
    427         // Blatt und Bezirk (dienend) 
    428         $sql.="JOIN alkis_beziehungen vd ON vd.beziehung_von=sd.gml_id "; 
    429         $sql.="JOIN ax_buchungsblatt bd ON vd.beziehung_zu=bd.gml_id "; // Blatt dienend 
     426        $sql.="JOIN ax_buchungsblatt bd ON sd.istbestandteilvon = bd.gml_id ";  // Blatt dienend 
    430427        $sql.="JOIN ax_buchungsblattbezirk gd ON bd.land=gd.land AND bd.bezirk=gd.bezirk "; // GB-Bez. dienend 
    431         $sql.="WHERE vs.beziehung_von = $1 AND vs.beziehungsart='an' AND vf.beziehungsart='istGebucht' AND vd.beziehungsart='istBestandteilVon' "; 
     428        $sql.="WHERE sh.gml_id = $1 AND sh.endet IS NULL AND sd.endet IS NULL AND f.endet IS NULL AND bd.endet IS NULL "; 
    432429        $sql.=$sqlfilter."ORDER BY gd.bezeichnung, bd.buchungsblattnummermitbuchstabenerweiterung, cast(sd.laufendenummer AS integer), f.gemarkungsnummer, f.flurnummer, f.zaehler, f.nenner;"; 
    433430 
     
    444441        $gwblatt=""; 
    445442        while($row = pg_fetch_array($res)) { 
    446                 $dienstelle=$row["stelle"];             // Stelle (AG) des dienenden GrundstÃŒcks 
     443                $dienstelle=$row["stelle"];     // Stelle (AG) des dienenden GrundstÃŒcks 
    447444                $dienbezgml=$row["dienbezgml"]; // Bezirks des dien. GS: gml, Nr. und Bezeichnung 
    448445                $diengbbez=$row["diengbbez"];   // Bezeichnung 
     
    450447                $dienbltgml=$row["dienbltgml"]; // dienendes Blatt, gml und Nr 
    451448                $dienblatt=$row["dienblatt"]; 
    452                 $diengml=$row["diengml"];               // gml_id des dienenden GrundstÃŒcks 
    453                 $dienlfd=$row["dienlfd"];               // BVNR (laufendNr) des dien. GS 
     449                $diengml=$row["diengml"];       // gml_id des dienenden GrundstÃŒcks 
     450                $dienlfd=$row["dienlfd"];       // BVNR (laufendNr) des dien. GS 
    454451                if ($gwblatt != $dienblatt) { // Gruppierung Blatt - dienend 
    455452                        $gwblatt = $dienblatt; // Steuerg GW Blatt 
     
    471468        } 
    472469 
    473 // Teil 3 
    474 // ++  Wenn nur 1 GrundstÃŒck untersucht wird, dann dazu auch die  
    475 //     berechtigten (herrschenden) GrundbÃŒcher anzeigen und verlinken (ohne FS)) 
     470// Teil 3 - noch nicht umgesetzt 
     471// ToDo: Wenn nur 1 GrundstÃŒck untersucht wird, dann dazu auch die berechtigten (herrschenden) GrundbÃŒcher anzeigen und verlinken (ohne FS) 
    476472 
    477473        // Foot 
     
    499495} else { 
    500496        $gfilter = 2; // Liste 
     497//      $gemeinde = "'".str_replace(",", "','", $gemeinde)."'"; // Jedes Element in '' 
    501498} 
    502499 
Note: See TracChangeset for help on using the changeset viewer.