Changeset 374 for trunk


Ignore:
Timestamp:
11/25/16 09:23:52 (7 years ago)
Author:
frank.jaeger
Message:

kleine Anpassung bei Adressen-Darstellung

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/mapbender/http/nav/alkisnav_eig.php

    r356 r374  
    11<?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 
     2/*      Navigation mit ALKIS-Daten im Mapbender 2.7 - Teil EigentÃŒmer-Suche  
     3        Diese Version des Programms verwendet die Datenbank-Struktur aus dem norGIS-ALKIS-Importer. 
     4 
     5 Version vom 
     6        2016-02-11      Version fÃŒr norGIS-ALKIS-Import aus Version Classic abgeleitet. 
     7        2016-03-02  $gemeinde auf feste LÀnge korrigieren 
     8        2016-07-18      Personendaten: Zeilen getauscht. Wie Brief-Anschrift. 
    189*/ 
    1910 
     
    2415 
    2516$cntget = extract($_GET); 
     17$gemeinde=str_pad($gemeinde, 3, "0", STR_PAD_LEFT); // temporÀr .. 
    2618include("../../conf/alkisnav_conf.php"); // Konfigurations-Einstellungen 
    2719include("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); 
     20$con_string = "host=".$host." port=".$port." dbname=".$dbname.$gkz." user=".$user." password=".$password; 
     21$con = pg_connect ($con_string) or die ("<p class='err'>Fehler bei der Verbindung zur Datenbank</p>".$dbname.$gkz); 
    3022 
    3123echo <<<END 
     
    5951END; 
    6052 
    61 // Einen Link generieren, um nach anderen Personen mit gleichem Familiennamen zu suchen 
    6253function familiensuche() { 
     54        // Einen Link generieren, um nach anderen Personen mit gleichem Familiennamen (Nachnamen) zu suchen. 
     55        // Bei versehendlich falschem Vornamen muss nicht von vorn begonnen werden. 
    6356        global $gkz, $gemeinde, $epsg, $name; 
    6457        if(isset($name)) { // Familiensuche 
     
    7164} 
    7265 
    73 function personendaten() { // Adresse und Geburtsdatum der aktuellen Person ausgeben 
     66function personendaten() {  
     67        // Adresse und Geburtsdatum der aktuellen Person ausgeben 
    7468        global $gkz, $gemeinde, $epsg, $name, $person, $blattgml, $auskpath; // $debug 
    7569 
     
    7872        FROM ax_person p LEFT JOIN ax_anschrift a ON a.gml_id=ANY(p.hat)  
    7973        WHERE p.gml_id= $1 AND p.endet IS NULL AND a.endet IS NULL LIMIT 1;";    
    80         // Es wird nur eine Zeile ausgewertet 
     74        // Es wird nur EINE Zeile ausgewertet 
    8175 
    8276        $v=array($person); 
     
    8579        if (!$res) {echo "\n<p class='err'>Fehler bei Name</p>\n";} 
    8680        $row = pg_fetch_array($res); 
     81 
    8782        $zeil1=$row["nachnameoderfirma"].", ".$row["vorname"]; 
    8883        $gebdat=$row["geburtsdatum"]; 
     
    9287        $zeil1=htmlentities($zeil1, ENT_QUOTES, "UTF-8"); 
    9388 
    94         $zeil2=trim($row["plz"]." ".$row["ort_post"]); 
     89        // 2016-07-18: Zeile 2 mit 3 getauscht. Wie Brief-Anschrift 
     90        $zeil2= trim($row["strasse"]." ".$row["hausnummer"]); 
    9591        if ($zeil2 != "") { 
    96                 $zeil2="\n\t<br>".htmlentities($zeil2, ENT_QUOTES, "UTF-8"); 
    97         } 
    98  
    99         $zeil3= trim($row["strasse"]." ".$row["hausnummer"]); 
     92                $zeil2= "\n\t<br>".htmlentities($zeil2, ENT_QUOTES, "UTF-8"); 
     93        } 
     94 
     95        $zeil3=trim($row["plz"]." ".$row["ort_post"]); 
    10096        if ($zeil3 != "") { 
    101                 $zeil3= "\n\t<br>".htmlentities($zeil3, ENT_QUOTES, "UTF-8"); 
     97                $zeil3="\n\t<br>".htmlentities($zeil3, ENT_QUOTES, "UTF-8"); 
    10298        } 
    10399 
    104100// Tabelle: Sp.1=Icon, Link zur Auskunft Person, Sp.2=Rahmen 
    105 echo " 
     101        echo " 
    106102<div class='pe aktuell'> 
    107103<table> 
     
    118114</table> 
    119115</div>"; 
    120 return; 
     116        return; 
    121117} 
    122118 
    123119function getEigByName() { 
    124120        // 1 // Eigentuemer nach Name(-nsanfang) 
    125         global $gkz, $gemeinde, $epsg, $name, $person, $gfilter; 
     121        global $gkz, $debug, $gemeinde, $epsg, $name, $person, $gfilter; 
    126122        $linelimit=150; 
    127123        $arr = explode(",", $name); 
     
    141137        } else { 
    142138                $match1 = trim($name1)."%"; 
    143         }                
     139        } 
     140         
    144141        $sql ="SELECT p.nachnameoderfirma, p.vorname, p.gml_id FROM ax_person p "; 
    145         if ($gfilter > 0) { 
     142 
     143// Der Filter auf "Gemeinde" bleibt hier zunÀchst unberÃŒcksichtigt, bis im NorGIS-ALKIS-Importer ein Ersatz 
     144// geschaffen wurde fÃŒr die Tabelle "gemeinde_person" aus dem Post-Processing der "klassischen" Datenstruktur. 
     145// Es können somit Personen gefunden werden, die kein GrundstÃŒck im berechtigten Bereich haben. 
     146// Wenn eine Gemeinde-DB aus eigenem NBA geladen wurde, ist das unkritisch. 
     147// Wenn eine Gemeinde aus einer kreisweiten DB beauskunftet wird, ist das so noch nicht einsetzbar.  
     148 
     149/*      if ($gfilter > 0) { 
    146150                $sql.="JOIN gemeinde_person g ON p.gml_id=g.person WHERE p.endet IS NULL AND "; 
    147151                switch ($gfilter) { 
     
    151155                                $sql.="g.gemeinde in ('".str_replace(",", "','", $gemeinde)."') AND "; break; 
    152156                } 
    153         } else { 
     157        } else { */ 
    154158                $sql.="WHERE p.endet IS NULL AND "; 
    155         } 
     159//      } 
     160 
    156161        if($match1 != '%'){ 
    157162                $sql.="nachnameoderfirma ILIKE $1 AND p.vorname ILIKE $2 ";              
     
    167172        if (!$res) { 
    168173                echo "\n<p class='err'>Fehler bei Eigent&uuml;mer</p>"; 
     174                if ($debug > 2) {echo "<p class='dbg'>SQL=<br>".$sql."<br>$1='".$match."'</p>";} 
    169175                return; 
    170176        } 
     
    192198        // 2 // GrundbÃŒcher zur gewÀhlten Person 
    193199// 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, 
     200// haben, die im gefilterten Bereich (Gemeinde) liegen. Es können daher "Sackgassen" entstehen, 
    195201// 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. 
     202// Das Joinen bis zum FS unter BerÃŒcksichtigung von speziellen Buchungen ist aber zu aufwÀndig. 
    197203// Dann kann entweder das FS gleich mit ausgegeben werden -> getGBuFSbyPerson. 
    198204// Alternativ wÃŒrde eine Hilfstabelle benötigt, in der im PostProcessing  
    199205// das GB-zu-Gemeinde-VerhÀltnis vorbereitet wird. 
    200206        global $gkz, $gemeinde, $epsg, $name, $person, $blattgml, $debug, $bltbez, $bltblatt, $bltseite, $kennztyp, $zgbbez; 
    201         # $zblatt, $zblattn, $zblattz, $zbvnr; 
    202207        $linelimit=150; 
    203208 
     
    252257                $gml=$row["gml_g"]; 
    253258                $blatt=$row["blatt"]; 
    254                 zeile_blatt($zgbbez, $beznam, $gml, $blatt, false, $person, false); 
     259                zeile_blatt($zgbbez, "", $gml, $blatt, false, $person, false); 
    255260                $cnt++; 
    256261        } 
     
    313318                $blatt=$row["blatt"]; 
    314319                zeile_gbbez ($beznam, $bezirk, false); 
    315                 zeile_blatt($bezirk, $beznam, $blattgml, $blatt, false, $person, true);  
     320                zeile_blatt($bezirk, "", $blattgml, $blatt, false, $person, true);       
    316321        } 
    317322        GB_Buchung_FS(250, ""); // Blatt > Grundst. > FS, max. 250, ohne Link "Buchung" 
     
    349354        // Baustein 1: SQL-Anfang fuer beide Varianten 
    350355        $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, "; 
     356        s1.gml_id as bsgml, s1.laufendenummer AS lfd, f.gml_id, f.flurnummer, f.zaehler, f.nenner, f.gemeinde, ot.gemashl, trim(trailing from ot.gemarkung) AS gemarkungsname, "; 
    352357        if($epsg == "25832") { // Transform nicht notwendig 
    353358                $sql1.="st_x(st_centroid(f.wkb_geometry)) AS x, "; 
     
    373378 
    374379        // Baustein 2: SQL-Ende fuer beide Varianten 
    375         $sql2 ="JOIN pp_gemarkung ot ON f.land=ot.land AND f.gemarkungsnummer=ot.gemarkung "; // Ortsteil 
     380        $sql2 ="JOIN gema_shl ot ON f.land || f.gemarkungsnummer = ot.gemashl "; // Ortsteil 
    376381        $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  
    378382        $sqlw2="AND s2.endet IS NULL "; 
    379383 
     
    389393        switch ($gfilter) { // Gemeinde-Filter 
    390394                case 1: // Einzelwert 
    391                         $sql2.="AND ot.gemeinde='".$gemeinde."' "; break; 
     395                        $sql2.="AND substring(ot.gemshl from 6 for 3)='".$gemeinde."' "; break; 
    392396                case 2: // Liste 
    393                         $sql2.="AND ot.gemeinde in ('".str_replace(",", "','", $gemeinde)."') "; break; 
    394         } 
     397                        $sql2.="AND substring(ot.gemshl from 6 for 3) in ('".str_replace(",", "','", $gemeinde)."') "; break; 
     398        } 
     399 
    395400        $sql3 ="ORDER BY b.bezirk, gb.buchungsblattnummermitbuchstabenerweiterung, cast(s1.laufendenummer AS integer), f.gemarkungsnummer, f.flurnummer, f.zaehler, f.nenner LIMIT $2 ;"; 
    396401        // Sortier-Problem: laufendenummer in varchar linksbÃŒndig 
     
    448453                        if ($gwgb != $gb_gml) { // Gruppierung Blatt (Grundbuch) 
    449454                                $blatt=$row["blatt"]; 
    450                                 zeile_blatt($bezirk, $beznam, $gb_gml, $blatt, false, $person, false); 
     455                        //      zeile_blatt($bezirk, $beznam, $gb_gml, $blatt, false, $person, false); 
     456                                zeile_blatt($bezirk, "", $gb_gml, $blatt, false, $person, false); 
    451457                                $gwgb = $gb_gml;        // Steuerg GW GB 
    452458                                $gwbv = "";             // Steuerg GW BVNR 
     
    466472                        $zfs1++; 
    467473                } 
     474 
    468475                if($zfs1 == 0) { 
    469476                        if ($bltrecht == "ohne") {echo "\n<p class='anz'>Keine direkte Buchung gefunden.</p>";} 
     477                        /* nur Entw.  
     478                        if ($debug > 1) { 
     479                                echo "\n<p class='dbg'>Keine direkte Buchung gefunden.</p>"; 
     480                                if ($debug > 2) {echo "<p class='err'>SQL = '".$sql."', $1 = '".$person."'<p>";} 
     481                        } */ 
    470482                } elseif($zfs1 >= $linelimit) { // das Limit war zu knapp 
    471483                        echo "\n<p class='blt'>"; 
     
    492504                        } 
    493505                } 
    494         }        
     506        } 
     507 
    495508        if ($bltrecht == "" and $zfs1 > 0) { // beides 
    496509                echo "<hr>"; // dann Trenner 
     
    523536                                $beznam=$row["beznam"]; 
    524537                                $blatt=$row["blatt"]; 
    525                                 zeile_blatt ($bezirk, $beznam, $gb_gml, $blatt, false, $person, false); 
     538                                zeile_blatt ($bezirk, "", $gb_gml, $blatt, false, $person, false); 
    526539                                $gwgb = $gb_gml;        // Steuerg GW GB 
    527540                                $gwbv = "";             // Steuerg GW BVNR 
     
    532545                                $bsgml=$row["bsgml"]; 
    533546                                zeile_buchung($bsgml, $bvnr, "", true, false); // Recht an ... // ohne Link! 
    534                         #       zeile_buchung($bsgml, $bvnr, $bezirk."-".$blatt, true, false); // Recht an ... 
    535547                        } 
    536548                        $fs_gml=$row["gml_id"]; 
     
    620632        } else { // mit Filter auf Gemeinde: weniger Daten? 
    621633                if ($kennztyp > 1) { 
    622                         #trans="Grundb. und Flurst. in ".$zgbbez." von .. "; // zu lang 
    623634                        $trans="Grdb. und Flst. von .. in .."; // Filter GB-Bez, 
    624635                        // darunter sind dann Name und Bezirk farblich markiert 
     
    650661 
    651662// Nach Durchlaufen des PHP-Scriptes die zuletzt ausgefÃŒhrte Transaktion  
    652 // im Kopf des Ergebnisrahmens anzeigen. 
     663//  im Kopf des Ergebnisrahmens anzeigen. 
    653664// Dazu die im HTML-Header definierte Javascript-Function benutzen. 
    654665// Alternativ wird auch aus dem Javascript "positionieren Karte" dieser Titel gesetzt. 
Note: See TracChangeset for help on using the changeset viewer.