Ignore:
Timestamp:
06/24/21 15:59:16 (3 years ago)
Author:
frank.jaeger
Message:

Aktualisierungen der ALKIS-Buchauskunft, neues Modul für Bauwerke, Härtung

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/info/info/alkisn/alkisfsnw.php

    r419 r422  
    77        Version: 
    88        2016-02-24 Version fuer norGIS-ALKIS-Import 
    9         2016-03-14 Korrekturen 
    10         2016-12-01 HTML5, Gemeinsam genutzte Datenbanken ermöglichen 
    11         2016-12-05 Nutzungsart-Kategorie ist nun in Text enthalten, nicht mehr aus der Definition ausschneiden 
    12         2017-06-08 optional "berechtigte Buchungen" anzeigen, Function "eigentuemer" ohne Parameter $con, 
    13                                 Validierung Eingabeparameter, Feinkorrekturen 
    14         2017-10-11 Sauber filtern auf 'endet IS NULL', Ausgabe der BodenschÀtzung 
    15         2017-10-11 Nachbesserung Formatierung der SchÀtzungs-Zeilen 
    16         2017-10-17 Zeitpunkt der Entstehung in deutschen Datumsformat 
    17         2017-11-03 Wertelisten fÃŒr Arrays in BodenschÀtzung ausgeben. 
    18         2017-12-08 Planung (Kommentare) der Erweiterung fÃŒr Berechtigte GrundbÃŒcher 
    19         2017-12-20 Links auf Lagebezeichnung verbessert. 
    20         2018-04-11 Variable "gmlid" an Function "ALKISexport" ÃŒbergeben. Ist beim Schreiben des Headers noch unbekannt, wenn mit "&fskennz=" aufgerufen. 
    21         2018-04-23 Umfangreiche Überarbeitung der "Buchungsstellen" 
    22         2018-05-03 Anpassung fÃŒr GrundstÃŒcksnachweis 
    23         2018-11-09 Umstellung Full-Schema 
    24         2018-11-19 EntschlÃŒsseln "zeigtaufexternes_art" mit function fortfuehrungen(). 
    25         2018-12-18 function fskenn_dbformat 
    26  
    27 ++ToDo: 
     9        ..... 
     10        2020-02-20 Authentifizierung ausgelagert in Function darf_ich() 
     11        2020-10-13 debug-infos raus 
     12        2020-12-03 function selbstverlinkung() statt $_SERVER['PHP_SELF'] 
     13        2020-12-09 Verschn. mit "Bau-, Raum- oder Bodenordnungsrecht" korrigiert, Entschl. BodenschÀtzung korrigiert 
     14        2020-12-16 Input-Validation und Strict Comparisation (===) 
     15        2021-03-09 Link zum GebÀudenachweis auch mit "Bauwerke" betiteln 
     16 
     17ToDo: 
    2818        - Buchung auf "fiktives Blatt" ist nur mit debug zu sehen: die <tr> in .css grau hinterlegen 
    29         - Umschalter (gleiches Modul) anders darstellen als Links zu anderen Nachweisen 
     19        - "Umschalter" (gleiches Modul) anders darstellen als Links zu ANDEREN Nachweisen 
    3020        - Parameter zum Umschalten mit/ohne BodenschÀtzung? 
    3121        - Bessere Differenzierung bei den Nutzungsarten (Tabelle dafÃŒr aufbauen)  
    3222*/ 
     23ini_set("session.cookie_httponly", 1); 
    3324session_start(); 
     25 
    3426$eig="n"; $showkey="n"; $nodebug=""; // Var. initalisieren 
    3527$cntget = extract($_GET); // alle Parameter in Variable umwandeln 
     
    4133} else { // Alternativ 
    4234        $gmlid=''; 
    43         if (isset($fskennz)) { // llgggg-fff-11111/222 oder z.B.'052647002001910013__' oder '05264700200012______' 
     35        if (isset($fskennz)) { 
    4436                if (!preg_match('#^[0-9\-_/]{8,20}$#', $fskennz)) {die ("Eingabefehler fskennz");} 
    4537        } else { 
    46                 $fskennz=''; 
    47         } 
    48 } 
    49 if (!isset($gkz) or !preg_match('#^[0-9]{3}$#', $gkz)) {die("Eingabefehler gkz");} 
     38                die("Fehlender Parameter"); 
     39        } 
     40} 
     41if (isset($gkz)) { 
     42        if (!preg_match('#^[0-9]{3}$#', $gkz)) {die("Eingabefehler gkz");} 
     43} else { 
     44        die("Fehlender Parameter"); 
     45} 
    5046if (!preg_match('#^[j|n]{0,1}$#', $eig)) {die("Eingabefehler eig");} 
    5147if (!preg_match('#^[j|n]{0,1}$#', $showkey)) {die ("Eingabefehler showkey");} 
    52 if ($showkey == "j") {$showkey=true;} else {$showkey=false;} // "j"/"n" als boolean umwandeln, ist praktischer abzufragen, wird oft gebraucht 
     48if ($showkey === "j") {$showkey=true;} else {$showkey=false;} // "j"/"n" als bool, ist praktischer, oft gebraucht 
    5349if (!preg_match('#^j{0,1}$#', $nodebug)) {die("Eingabefehler nodebug");} 
    5450 
    55 require_once("alkis_conf_location.php"); 
    56 if ($auth == "mapbender") {require_once($mapbender);} 
    57 include("alkisfkt.php"); 
     51include "alkis_conf_location.php"; 
     52include "alkisfkt.php"; 
    5853?> 
    5954<!doctype html> 
     
    7368<body> 
    7469<?php 
     70$erlaubnis = darf_ich(); if ($erlaubnis === 0) { die('<p class="stop1">Abbruch</p></body>'); } 
     71 
    7572// Mit URL-Parameter "&nodebug=j" kann man die Entwicklungsumgebung (in Conf definiert) ausschalten. Blendet z.B. "fiktives Blatt" aus. 
    7673// Manuell an die URL anfÃŒgen, wirkt nur temporÀr und wird nicht in Links weiter gereicht. 
    77 if ($nodebug == "j") {$debug=0;}  
     74if ($nodebug === "j") {$debug=0;}  
    7875 
    7976$con = pg_connect($dbconn." options='--application_name=ALKIS-Auskunft_alkisfsnw.php'"); 
    8077if (!$con) echo "\n<p class='err'>Fehler beim Verbinden der DB</p>"; 
    8178 
    82 // Ein FlurstÃŒcks-Kennzeichen wurde alternativ zur gml_id ÃŒbermittelt 
     79// Ein FlurstÃŒcks-Kennzeichen im DB-Format wurde alternativ zur gml_id ÃŒbermittelt 
    8380if ($fskennz != '') { 
    84 /* 
    85         $arr=explode("-", $fskennz, 4); // zerlegen 
    86         $zgemkg=trim($arr[0]); 
    87         if (strlen($zgemkg) == 20 and !isset($arr[1])) { 
    88                 $fskzdb=$zgemkg; // Datenbank-Feldformat 
    89         } else { // Format "llgggg-fff-nnnn/zz.nn" oder "gggg-ff-nnn/zz" 
    90                 // Das Kennzeichen auseinander nehmen.  
    91                 if (strlen($zgemkg) == 6) { 
    92                         $land=substr($zgemkg, 0, 2); 
    93                         $zgemkg=substr($zgemkg, 2, 4); 
    94                 } else { // kein schöner Land .. 
    95                         $land=$defland; // Default-Land aus config 
    96                 } 
    97                 $zflur=str_pad($arr[1], 3 , "0", STR_PAD_LEFT); // Flur-Nr 
    98                 $zfsnr=trim($arr[2]); // FlurstÃŒcke-Nr 
    99                 $zn=explode("/", $zfsnr, 2); // Bruch? 
    100                 $zzaehler=str_pad(trim($zn[0]), 5 , "0", STR_PAD_LEFT); 
    101                 if (isset($zn[1])) { 
    102                         $znenner=trim($zn[1]); 
    103                 } else { 
    104                         $znenner=""; 
    105                 } 
    106                 if (trim($znenner, " 0.") == "") { // kein Bruch oder nur Nullen 
    107                         $znenner="____"; // in DB-Spalte mit Tiefstrich aufgefÃŒllt 
    108                 } else { 
    109                         $zn=explode(".", $znenner, 2); // .00 wegwerfen 
    110                         $znenner=str_pad($zn[0], 4 , "0", STR_PAD_LEFT); 
    111                 } 
    112                 // nun die Teile stellengerecht wieder zusammen setzen           
    113                 $fskzdb=$land.$zgemkg.$zflur.$zzaehler.$znenner.'__'; // FS-Kennz. Format Datenbank 
    114         } 
    115         $v = array($fskzdb); 
    116 */ 
    117         // Spalte "flurstueckskennzeichen" ist in DB indiziert 
    118         // Format z.B.'052647002001910013__' oder '05264700200012______' 
    119         $sql ="SELECT gml_id FROM ax_flurstueck WHERE flurstueckskennzeichen= $1 AND endet IS NULL ;"; 
    120  
     81        // Spalte "flurstueckskennzeichen" ist in DB indiziert. Format z.B.'052647002001910013__' oder '05264700200012______' 
     82        $sql ="SELECT gml_id FROM ax_flurstueck WHERE flurstueckskennzeichen= $1 AND endet IS NULL;"; 
    12183        $v=array(fskenn_dbformat($fskennz)); 
    122  
    12384        $res = pg_prepare("", $sql); 
    12485        $res = pg_execute("", $v); 
     
    149110if (!$res) { 
    150111        echo "\n<p class='err'>Fehler bei Flurstuecksdaten</p>"; 
    151         if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = gml_id = '".$gmlid."'</p>";} 
     112        if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities(str_replace("$1","'".$gmlid."'",$sql), ENT_QUOTES, "UTF-8")."</p>";} 
    152113} 
    153114if ($row = pg_fetch_assoc($res)) { 
     
    176137} else { 
    177138        echo "\n<p class='err'>Fehler! Kein Treffer f&uuml;r Flurst&uuml;ck mit gml_id=".$gmlid."</p>"; 
    178         if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = gml_id = '".$gmlid."'</p>";} 
     139        if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities(str_replace("$1","'".$gmlid."'",$sql), ENT_QUOTES, "UTF-8")."</p>";} 
    179140        echo "\n</body>\n</html>"; 
    180141        return; 
     
    182143pg_free_result($res); 
    183144 
    184 if ($eig=="j") { // Balken 
    185         echo "<p class='fsei'>ALKIS Flurst&uuml;ck ".$gmkgnr."-".$flurnummer."-".$flstnummer."&nbsp;</p>" 
     145if ($eig==="j") { // Balken 
     146        echo "<p class='balken fsei'>ALKIS Flurst&uuml;ck ".$gmkgnr."-".$flurnummer."-".$flstnummer."&nbsp;</p>" 
    186147        ."\n\n<h2>Flurst&uuml;ck mit Eigent&uuml;mer</h2>"; 
    187148} else { 
    188         echo "<p class='fskennz'>ALKIS Flurst&uuml;ck ".$gmkgnr."-".$flurnummer."-".$flstnummer."&nbsp;</p>" 
     149        echo "<p class='balken fskennz'>ALKIS Flurst&uuml;ck ".$gmkgnr."-".$flurnummer."-".$flstnummer."&nbsp;</p>" 
    189150        ."\n\n<h2>Flurst&uuml;ck</h2>"; 
    190151} 
     
    263224        if ($debug > 1) { 
    264225                echo "\n<p class='dbg'>Fehler:".pg_last_error()."</p>"; 
    265                 if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = gml_id = '".$gmlid."'</p>";} 
     226                if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities(str_replace("$1","'".$gmlid."'",$sql), ENT_QUOTES, "UTF-8")."</p>";} 
    266227        } 
    267228} else { 
     
    270231        while($row = pg_fetch_assoc($res)) { 
    271232                $sname=htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8"); // Str.-Name 
    272                 if (substr($sname, strlen($sname) -3, 3) == 'weg') { // Versuch fuer korrekten Satzbau 
     233                if (substr($sname, strlen($sname) -3, 3) === 'weg') { // Versuch fuer korrekten Satzbau 
    273234                        $slink=" am ".$sname; 
    274235                } else { 
     
    277238                $hsnr=$row["hausnummer"]; 
    278239                echo "\n<tr>"; 
    279                         if ($j == 0) { // 1 
     240                        if ($j === 0) { // 1 
    280241                                echo "\n\t<td class='ll'><img src='ico/Lage_mit_Haus.png' width='16' height='16' alt=''> Adresse:</td>"; 
    281242                        } else { 
     
    321282        echo "\n<p class='err'>Fehler bei Lagebezeichnung ohne Hausnummer</p>"; 
    322283        //if ($debug > 1) {echo "<p class='dbg'>Fehler:".pg_result_error($res)."</p>";} 
    323         if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = gml_id = '".$gmlid."'</p>";} 
     284        if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities(str_replace("$1", "'".$gmlid."'", $sql), ENT_QUOTES, "UTF-8")."</p>";} 
    324285} 
    325286$j=0; 
    326287while($row = pg_fetch_assoc($res)) { 
    327288        $skey=$row["lage"]; // Strassenschl. 
    328         $lgml=$row["gml_id"]; // key der Lage 
     289        $lgml=$row["gml_id"]; // Key der Lage 
    329290        $gewann = htmlentities($row["unverschluesselt"], ENT_QUOTES, "UTF-8"); 
    330         if ($gewann != "") { 
     291        if ($gewann != '') { 
    331292                echo "\n<tr>" 
    332293                        ."\n\t<td class='ll' title='unverschl&uuml;sselte Lagebezeichnung'><img src='ico/Lage_Gewanne.png' width='16' height='16' alt=''> Gewanne:</td>" // 1 
     
    341302        } elseif ($skey > 0) { 
    342303                $sname=htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8"); // Str.-Name 
    343                 if (substr($sname, strlen($sname) -3, 3) == 'weg') { // Versuch fuer korrekten Satzbau 
     304                if (substr($sname, strlen($sname) -3, 3) === 'weg') { // Versuch fuer korrekten Satzbau 
    344305                        $slink=" am ".$sname; 
    345306                } else { 
     
    392353if (!$res) { 
    393354        echo "\n<p class='err'>Fehler bei Suche tats. Nutzung</p>"; 
    394         if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities($sql, ENT_QUOTES, "UTF-8")."<br>$1 = FS-Kennz = '".$fskennzalb."'</p>";} 
     355        if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities(str_replace("$1","'".$fskennzalb."'",$sql), ENT_QUOTES, "UTF-8")."'</p>";} 
    395356} 
    396357$j=0; 
     
    402363        $title=htmlentities($defi, ENT_QUOTES, "UTF-8"); // .. fÃŒr Anzeige aufbereitet 
    403364        echo "\n<tr>\n\t"; 
    404                 if ($j == 0) { // 1 
     365                if ($j === 0) { // 1 
    405366                        echo "<td class='ll' title='Abschnitt der tats&auml;chlichen Nutzung'><img src='ico/Abschnitt.png' width='16' height='16' alt=''> Nutzung:</td>"; 
    406367                } else { 
     
    444405                if ($showkey) {echo "&amp;showkey=j";} 
    445406                if ($cnt_adressen > 0) { // wenn Adresse vorgekommen ist 
    446                         echo "' title='Geb&auml;ude auf oder an dem Flurst&uuml;ck'>Geb&auml;ude "; 
     407                        echo "' title='Geb&auml;ude oder Bauwerke auf oder an dem Flurst&uuml;ck'>Geb&auml;ude/Bauw."; 
    447408                } else { // GebÀude mit Adresse gibt es NICHT, das ist klar 
    448                         echo "' title='Suche Geb&auml;ude ohne Adresse auf dem Flurst&uuml;ck oder angrenzende Geb&auml;ude'>Suche "; 
     409                        echo "' title='Suche Geb&auml;ude (ohne Adresse) oder Bauwerke auf dem Flurst&uuml;ck'>Geb&auml;ude/Bauw."; 
    449410                } 
    450411                echo "<img src='ico/Haus.png' width='16' height='16' alt=''></a>" 
     
    480441        while ($row = pg_fetch_assoc($res)) { 
    481442                $kulturartk=$row['kulturartk']; // Key  - 
    482                 $kulturartv=$row['kulturartv']; //              - Value 
    483                 // 1000="Ackerland (A)", 2000="Acker-GrÃŒnland (AGr)", 3000="GrÃŒnland (Gr)", 4000="GrÃŒnland-Acker (GrA)"               
    484                 if (substr($kulturartv, 0, 3) == 'Ack') { // A 
     443                $kulturartv=$row['kulturartv']; // - Value               
     444                if (substr($kulturartv, 0, 3) === 'Ack') { // A 
    485445                        $kbez1="Bodenzahl"; 
    486446                        $kbez2="Ackerzahl"; 
     
    494454                $ertragszahl = intval($absbuchflae * $row['ackerzahl'] / 100); 
    495455                $gesertragsmz+=$ertragszahl; 
    496         //      $absflaedis = number_format($absflae,0,",",".")." m&#178;";  // als Tool-Tip ? 
     456        //      $absflaedis = number_format($absflae,0,",",".")." m&#178;"; // als Tool-Tip ? 
    497457                $absbuchflaedis = number_format($absbuchflae,0,",",".")." m&#178;"; 
    498458                $boedenzahl=ltrim($row['bodenzahl'], '0'); 
    499459                $ackerzahl=ltrim($row['ackerzahl'], '0'); 
    500460                $jahr=$row['jahreszahl']; 
    501  
    502                 // 2x Array mit SchlÃŒsseln. PostNAS fÃŒllt es nicht, wenn als "integer[]" definiert. 
    503461                $entsteh=$row['entsteh']; 
    504462                $sonst=$row['sonstigeangaben']; 
    505                 if ($j == 0) { // 1 
     463                if ($j === 0) { // 1 
    506464                        echo "\n<tr>\n\t<td class='ll' title='Abschnitt Bodensch&auml;tzung'><img src='ico/Landwirt.png' width='16' height='16' alt=''> Bodensch&auml;tzung:</td>"; 
    507465                } else { 
    508466                        echo "\n<tr>\n\t<td>&nbsp;</td>"; 
    509467                } 
    510                 echo "\n\t<td class='fla' title='Ertragsmesszahl: Produkt von ".$kbez2."/100 und Fl&auml;che.'>EMZ ".$ertragszahl."</td>"; // 2 
    511                 echo "\n\t<td class='re' title='Fl&auml;che des Sch&auml;tzungsabschnitts'>".$absbuchflaedis."</td>"; // 3 
    512                 echo "\n\t<td class='lr'><span title='".$kbez1."'>".$boedenzahl."</span>/<span title='".$kbez2."'>".$ackerzahl."</span></td>"; // 4 
    513                 echo "\n\t<td class='lr'>"; // 5 
     468                echo "\n\t<td class='fla' title='Ertragsmesszahl: Produkt von ".$kbez2."/100 und Fl&auml;che.'>EMZ ".$ertragszahl."</td>" 
     469                ."\n\t<td class='re' title='Fl&auml;che des Sch&auml;tzungsabschnitts'>".$absbuchflaedis."</td>" 
     470                ."\n\t<td class='lr'><span title='".$kbez1."'>".$boedenzahl."</span>/<span title='".$kbez2."'>".$ackerzahl."</span></td>" 
     471                ."\n\t<td class='lr'>"; 
    514472 
    515473                        if ($showkey) {echo "\n\t\t<span class='key'>(".$kulturartk.")</span> ";} 
     
    521479                        echo "\n\t\t<span title='Zustandsstufe'>".$row['zustbodv']."</span> "; 
    522480 
    523                         // ARRAYs auflösen ohne den SchÀtzungs-Abschnitt mehrfach aufzulisten 
    524                         if ($entsteh <> '') { 
    525                                 $ent="'".str_replace(",", "','", trim($entsteh, "{}"))."'"; // als Liste fÃŒr SQL "WHERE IN ()" 
     481                        // 2 ARRAYs auflösen 
     482                        if (isset($entsteh)) { 
     483                                $ent=trim($entsteh, "{}"); 
    526484                                echo "\n\t\t <span title='Enststehungsart oder Klimastufe, Wasserverh&auml;ltnisse'>"; 
    527485                                        if ($showkey) {echo "\n\t\t <span class='key'>(".$ent.")</span> ";} 
    528                                         werteliste ('ax_bodenschaetzung', 'entstehungsartoderklimastufewasserverhaeltnisse', $ent); 
     486                                        werteliste ('e', $ent); 
    529487                                echo "</span>"; 
    530488                        } 
    531                         if ($sonst <> '') { 
    532                                 $son="'".str_replace(",", "','", trim($sonst, "{}"))."'"; 
     489                        if (isset($sonst)) { 
     490                                $son=trim($sonst, "{}"); 
    533491                                echo "\n\t\t <span title='Sonstige Angaben'>"; 
    534492                                        if ($showkey) {echo "\n\t\t <span class='key'>(".$son.")</span> ";} 
    535                                         werteliste ('ax_bodenschaetzung', 'sonstigeangaben', $son); 
     493                                        werteliste ('s', $son); 
    536494                                echo "</span>"; 
    537495                        } 
    538  
    539                         if ($jahr <> '') { 
     496                        if (isset($jahr)) { 
    540497                                echo "\n\t\t<span title='Jahreszahl'>".$jahr."</span>"; 
    541498                        } 
    542                 echo "\n\t</td>"; // 5 
    543                 echo "\n\t<td>&nbsp;</td>\n</tr>"; // 6 
     499                echo "\n\t</td>" 
     500                ."\n\t<td>&nbsp;</td>\n</tr>"; 
    544501                $j++; 
    545502        } 
     
    552509} 
    553510 
    554 // H i n w e i s  auf Bodenneuordnung oder eine strittige Grenze 
    555 $sql_boden ="SELECT b.artderfestlegung AS wert, a.beschreibung AS art_verf, b.gml_id AS verf_gml, b.bezeichnung AS verf_bez,  
     511// H i n w e i s  
     512// auf  "Bau-, Raum- oder Bodenordnungsrecht" (Baulast, Flurbereinigung) oder eine "strittige Grenze" 
     513 
     514// Gemeinsame FlÀche suchen: entweder (ST_Intersects and not ST_Touches) oder (2xST_Within OR ST_Overlaps), ST_Intersects liefert auch angrenzende 
     515$sql_boden="SELECT b.artderfestlegung AS wert, a.beschreibung AS art_verf, b.gml_id AS verf_gml, b.bezeichnung AS verf_bez,  
    556516b.name AS verf_name, d.bezeichnung AS stelle_bez, d.stelle AS stelle_key  
    557 FROM ax_bauraumoderbodenordnungsrecht b  
    558 LEFT JOIN ax_artderfestlegung_bauraumoderbodenordnungsrecht a ON b.artderfestlegung = a.wert 
     517FROM ax_flurstueck f  
     518JOIN ax_bauraumoderbodenordnungsrecht b ON ST_Within(b.wkb_geometry, f.wkb_geometry) OR ST_Within(f.wkb_geometry, b.wkb_geometry) OR ST_Overlaps(b.wkb_geometry, f.wkb_geometry) 
     519LEFT JOIN ax_artderfestlegung_bauraumoderbodenordnungsrecht a ON b.artderfestlegung=a.wert  
    559520LEFT JOIN ax_dienststelle d ON b.stelle=d.stelle  
    560 WHERE b.endet IS NULL AND d.endet IS NULL   
    561 AND (ST_Within((SELECT wkb_geometry FROM ax_flurstueck WHERE gml_id = $1 AND endet IS NULL ), wkb_geometry) 
    562  OR ST_Overlaps((SELECT wkb_geometry FROM ax_flurstueck WHERE gml_id = $1 AND endet IS NULL), wkb_geometry));"; 
     521WHERE f.gml_id = $1 AND f.endet IS NULL AND b.endet IS NULL AND d.endet IS NULL"; 
    563522 
    564523pg_prepare($con, "bodeneuordnung", $sql_boden); 
     
    566525if (!$res_bodeneuordnung) { 
    567526        echo "\n<p class='err'>Fehler bei Bau-, Raum- oder Bodenordnungsrecht</p>"; 
    568         if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".$sql_boden."<br>$1 = gml_id = '".$gmlid."'</p>";} 
     527        if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".str_replace("$1", "'".$gmlid."'", $sql_boden)."</p>";} 
    569528} 
    570529$sql_str="SELECT gml_id FROM ax_besondereflurstuecksgrenze WHERE endet IS NULL AND 1000 = ANY(artderflurstuecksgrenze)  
     
    575534if (!$res_strittigeGrenze) { 
    576535        echo "\n<p class='err'>Fehler bei strittige Grenze</p>"; 
    577         if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".$sql_str."<br>$1 = gml_id = '".$gmlid."'</p>";} 
     536        if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".str_replace("$1", "'".$gmlid."'", $sql_str)."</p>";} 
    578537} 
    579538if (pg_num_rows($res_bodeneuordnung) > 0 OR pg_num_rows($res_strittigeGrenze) > 0) { 
     
    599558                        ."\n</tr>"; 
    600559                        $dstell=$row['stelle_key']; // Zeile 2 
    601                         if ($dstell != "") { // Kann auch leer sein 
     560                        if ($dstell != '') { 
    602561                                echo "\n<tr title='Flurbereinigungsbeh&ouml;rde'>" 
    603562                                        ."\n\t<td>&nbsp;</td>" // 1 
     
    612571                        $vbez=$row['verf_bez']; // Zeile 3, ist nicht immer gefÃŒllt 
    613572                        $vnam=$row['verf_name']; // noch seltener 
    614                         if ($vbez != "") { 
     573                        if ($vbez != '') { 
    615574                                echo "\n<tr title='Verfahrensbezeichnung'>" 
    616575                                        ."\n\t<td>&nbsp;</td>" 
     
    619578                                                if ($vnam == "") { 
    620579                                                        echo $vbez; // nur die Nummer 
    621                                                 } else {        // Name oder beides 
     580                                                } else { // Name oder beides 
    622581                                                        if ($showkey) {echo "<span class='key'>(".$vbez.")</span> ";} 
    623582                                                        echo $vnam; 
     
    640599$bartgrp="";    // Buchungsart 
    641600$barttypgrp=""; // Buchungsart Typ 
    642 if ($gml_buchungsstelle == '') {echo "\n<p class='err'>Keine Buchungstelle zum Flurst&uuml;ck gefunden.</p>";} 
    643 echo "\n<table class='outer'>"; // ALLE Buchungen und EigentÃŒmer in 4 Spalten EINER Tabelle ausgeben 
     601if ($gml_buchungsstelle === '') { 
     602                echo "\n<p class='err'>Keine Buchungstelle zum Flurst&uuml;ck gefunden.</p>"; // keine Verweis vorhanden? 
     603} else { 
     604        echo "\n<table class='outer'>"; // ALLE Buchungen und EigentÃŒmer in 4 Spalten EINER Tabelle ausgeben 
     605         
    644606        $stufe=1; // SchleifenzÀhler Tiefe 
    645         $gezeigt=buchung_anzg($gml_buchungsstelle, $eig, false, $gmlid, 1); // die ("dienende") Buchung anzeigen, wenn nicht fiktiv. Liefert true/false 
    646  
    647         $anzber=ber_bs_zaehl($gml_buchungsstelle); // Anzahl berechtigte Buchungen (nÀchste Stufe) zu dieser Buchung ermitteln 
    648         $verf_next = array($gml_buchungsstelle); // Start Recursion mit einem Element 
    649         //if ($debug > 2) {echo "<p class='dbg'>Nach Stufe ".$stufe.", Anzahl: ". $anzber ."</p>";} 
     607        $gezeigt=buchung_anzg($gml_buchungsstelle, $eig, false, $gmlid, 1); // die ("dienende") Buchung anzeigen, wenn nicht fiktiv. Liefert 1/0 
     608 
     609        $anzber=ber_bs_zaehl($gml_buchungsstelle);      // Anzahl berechtigte Buchungen (nÀchste Stufe) zu dieser Buchung ermitteln 
     610        $verf_next = array($gml_buchungsstelle);        // Start Recursion mit einem Element 
     611        //if ($debug > 1) {echo "<p class='dbg'>Nach Stufe ".$stufe.", Anzahl: ". $anzber ."</p>";} 
    650612 
    651613        while ($anzber > 0 ) { // Stufe - recursiv in die Tiefe, solange es was zu verfolgen gibt 
     
    666628                } // Ende Buchungs-Array in der Stufe 
    667629                $anzber=count($verf_next); // Sammlung auf Stufe zÀhlen, Steuert die Schleife. 
    668                 //if ($debug > 2) {echo "<p class='dbg'>Nach Stufe ".$stufe.", Anzahl: ". $anzber ."</p>";} 
     630                //if ($debug > 1) {echo "<p class='dbg'>Nach Stufe ".$stufe.", Anzahl: ". $anzber ."</p>";} 
    669631        } // Ende Stufe 
    670 echo "\n</table>\n\n"; 
     632 
     633        echo "\n</table>\n\n"; 
     634        //if ($debug > 1) {echo "<p class='dbg'>Buchung gezeigt = ".$gezeigt."</p>";} 
     635 
     636        // Fehler aus "ModellschwÀche" erkennen. 
     637        // Wenn der Verweis der Buchungsstelle auf ein Grundbuch ins Leere lÀuft, weil das Grundbuch  
     638        //  nicht im SekundÀrbestand vorhanden ist, dann könnte das am NBA-Verfahren liegen. 
     639        if ( $gezeigt === 0 and $stufe === 1 ) { // and $anzber === 0 
     640        //      Fehlt die Buchung oder das Grundbuch? 
     641                echo "<p class='err'>Das Grundbuch zur Buchung '".$gml_buchungsstelle."' fehlt in der Datenbank.</p>"; 
     642                 
     643                if ($debug > 1) { // fehlt die Buchung?? 
     644                        echo "<p class='dbg'>Suchen mit SQL: SELECT * FROM ax_buchungsstelle WHERE gml_id='".$gml_buchungsstelle."'; </p>"; 
     645                } 
     646        // Buchung verlinken fÃŒr weitere Suche:        alkisgsnw.php?gkz=320&gmlid=DENW18AL0000SEbl 
     647        // Aber das Modul zeigt nichts an (inner join ?) 
     648        // +++ ZunÀchst: Auch im Modul alkisgsnw.php den Fall berÃŒcksichtigen, dass die Buchung vorhanden ist, aber das GB nicht ?! 
     649        } 
     650} 
    671651 
    672652pg_close($con); 
     
    679659echo "\n\t<a title='Export als CSV' href='javascript:ALKISexport(\"" . $gmlid . "\")'><img src='ico/download_fs.png' width='32' height='16' alt='Export'></a>&nbsp;\n</div>"; 
    680660 
    681 footer($gmlid, $_SERVER['PHP_SELF']."?", "&amp;eig=".$eig); 
     661footer($gmlid, selbstverlinkung()."?", "&amp;eig=".$eig); 
    682662?> 
    683663</body> 
Note: See TracChangeset for help on using the changeset viewer.