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".

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 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 
Note: See TracChangeset for help on using the changeset viewer.