Changeset 330 for trunk/mapbender/http/nav/alkisnav_eig.php
- Timestamp:
- 09/10/14 12:08:18 (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/mapbender/http/nav/alkisnav_eig.php
r315 r330 12 12 2013-05-14 Hervorhebung aktuelles Objekt, Parameter "gbkennz" auswerten, 13 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 14 15 */ 15 16 $cntget = extract($_GET); … … 60 61 function personendaten() { // Adresse und Geburtsdatum der aktuellen Person ausgeben 61 62 global $gkz, $gemeinde, $epsg, $name, $person, $blattgml, $auskpath; // $debug 63 62 64 $sql ="SELECT p.nachnameoderfirma, p.vorname, p.geburtsdatum, p.namensbestandteil, "; 63 65 $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 66 70 $v=array($person); 67 71 $res=pg_prepare("", $sql); … … 126 130 $sql.="JOIN gemeinde_person g ON p.gml_id = g.person WHERE "; 127 131 switch ($gfilter) { 128 case 1: // Einzel wert129 $sql.="g.gemeinde= ".$gemeinde."AND "; break;132 case 1: // Einzel 133 $sql.="g.gemeinde='".$gemeinde."' AND "; break; 130 134 case 2: // Liste 131 $sql.="g.gemeinde in ( ".$gemeinde.") AND "; break;135 $sql.="g.gemeinde in ('".str_replace(",", "','", $gemeinde)."') AND "; break; 132 136 } 133 137 } else { … … 189 193 // Suche nach GrundbÃŒchern der Person 190 194 $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 "; 195 196 $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 "; 197 198 198 199 // Parameter $gbkennz, z.B. nach Klick auf Zeile "Bezirk" 199 200 if ($kennztyp > 1) { // 2=Such Bezirk-Nummer, 3=Such Blatt, 4=Such Buchung BVNR 200 201 #if ($debug > 0) {echo "<p class='dbg'>Filter Bezirk '".$zgbbez."'<p>";} 201 $sql.="AND b.bezirk = ".$zgbbez."";202 $sql.="AND b.bezirk='".$zgbbez."' "; 202 203 $bezirkaktuell = true; 203 204 } else { … … 308 309 // Stufe 2 und 3 nacheinander verwendet werden. Dies ist wahrscheinlich ÃŒbersichtlicher, 309 310 // weil "ungefiltert" in "2+3" zu lange Listen entstehen wÃŒrden, die durchblÀttert werden mÃŒssen. 311 310 312 global $gkz, $gemeinde, $epsg, $name, $person, $blattgml, $gfilter, $debug, $bltbez, $bltblatt, $bltbvnr, $bltseite, $bltrecht, $kennztyp, $zgbbez; 311 313 $linelimit=80; // als Limit "Anzahl FlurstÃŒcke" in den beiden folgenden Abfragen … … 314 316 personendaten(); 315 317 316 // Wenn das Limit ÃŒberschritten wurde: zusÀtzliche Parameter "blt"=BlÀttern 317 // $bltbez = Bezirk-Name318 // $bltblatt = BlattMitBuchstabe319 // $bltbvnr = lfd.Nr der Buchungsstelle320 // $bltseite = fortlaufende Seiten-Nr321 // $bltrecht = "nur"/"ohne" liefert nur den abgebrochene Teil der Auflistung318 // 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 322 324 323 325 // SQL-Bausteine vorbereiten 324 // Direkte Buchungen suchen mit: $sql1 + 325 // SonderfÀlle suchen mit: $sql1 + $sql z + $sqla2 + $sql2326 327 // Baustein : SQL-Anfang fuer beide Varianten326 // Direkte Buchungen suchen mit: $sql1 + $sqla1 + $sql2 327 // SonderfÀlle suchen mit: $sql1 + $sqla2 + $sql2 328 329 // Baustein 1: SQL-Anfang fuer beide Varianten 328 330 $sql1 ="SELECT gb.gml_id AS gml_g, gb.buchungsblattnummermitbuchstabenerweiterung as blatt, b.bezirk, b.bezeichnung AS beznam, "; 329 331 $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, "; … … 335 337 $sql1.="st_y(st_transform(st_centroid(f.wkb_geometry), ".$epsg.")) AS y "; 336 338 } 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 358 358 359 359 // Parameter $gbkennz nach Klick auf Zeile "Bezirk" … … 368 368 switch ($gfilter) { // Gemeinde-Filter 369 369 case 1: // Einzelwert 370 $sql2.="AND ot.gemeinde= ".$gemeinde.""; break;370 $sql2.="AND ot.gemeinde='".$gemeinde."' "; break; 371 371 case 2: // Liste 372 $sql2.="AND ot.gemeinde in ( ".$gemeinde.") "; break;372 $sql2.="AND ot.gemeinde in ('".str_replace(",", "','", $gemeinde)."') "; break; 373 373 } 374 374 $sql3 ="ORDER BY b.bezirk, gb.buchungsblattnummermitbuchstabenerweiterung, cast(s1.laufendenummer AS integer), f.gemarkungsnummer, f.flurnummer, f.zaehler, f.nenner LIMIT $2 ;"; … … 400 400 // FÀlle ohne "Rechte an" 401 401 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. 403 403 $sql=$sql1.$sqla1.$sql2.$bltwhere.$sql3; // Direkte Buchungen 404 404 $v=array($person, $linelimit); … … 407 407 if (!$res) { 408 408 echo "\n<p class='err'>Fehler bei Buchung und Flurstück.</p>"; 409 if ($debug > 2) {echo "<p class='dbg'>SQL = '".$sql."'<p>";} 409 410 return; 410 411 } 412 411 413 $zfs1=0; 412 414 $gwbez=""; … … 446 448 if ($bltseite > 1) {echo "weitere ";} 447 449 echo $zfs1." Flurstücke"; 450 448 451 // B l À t t e r n (eine Folgeseite anbieten) 449 452 $nxtbltbez=urlencode($beznam); … … 473 476 if ($bltrecht != "ohne") { // "nur"/"ohne" liefert nur den abgebrochene Teil der Auflistung 474 477 // Zweite Abfrage (Variante) aus den Bausteinen zusammen bauen 475 // buchungsStelle2 < an< buchungsStelle1476 $sql=$sql1.$sql z.$sqla2.$sql2.$bltwhere.$sql3; // Rechte an478 // buchungsStelle2 <an< buchungsStelle1 479 $sql=$sql1.$sqla2.$sql2.$bltwhere."AND s2.endet IS NULL ".$sql3; // Rechte an 477 480 $v=array($person, $linelimit); 478 481 $res=pg_prepare("", $sql); … … 484 487 $zfs2=0; 485 488 $gwbez=""; 486 #gwgb="";487 489 while($row = pg_fetch_array($res)) { 488 490 $bezirk=$row["bezirk"]; … … 505 507 $gwbv = $bvnr; 506 508 $bsgml=$row["bsgml"]; 507 zeile_buchung($bsgml, $bvnr, "", true, false); // Recht an ... 509 zeile_buchung($bsgml, $bvnr, "", true, false); // Recht an ... // ohne Link! 508 510 # zeile_buchung($bsgml, $bvnr, $bezirk."-".$blatt, true, false); // Recht an ... 509 511 } … … 577 579 } elseif($person != "") { // GrundbÃŒcher zur Person 578 580 // 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>";} 580 582 581 583 // Die Filtereinstellung beeinflusst die Such-Strategie:
Note: See TracChangeset
for help on using the changeset viewer.