Index: trunk/mapbender/http/nav/alkisnav_fls.php =================================================================== --- trunk/mapbender/http/nav/alkisnav_fls.php (revision 347) +++ trunk/mapbender/http/nav/alkisnav_fls.php (revision 348) @@ -11,4 +11,5 @@ 2014-09-03 PostNAS 0.8: ohne Tab. "alkis_beziehungen", mehr "endet IS NULL", Spalten varchar statt integer 2014-09-15 Bei Relationen den Timestamp abschneiden, mehr "endet IS NULL" + 2014-12-11 Fehlerbehandlung bei Eingabe ungÃŒltiger Gemarkungsnummer. Tabellen pp_gemarkung und pp_flur verwenden. */ $cntget = extract($_GET); @@ -68,5 +69,5 @@ // Teile der Zerlegung in global-Vars "$z..." global $debug, $zgemkg, $zflur, $zzaehler, $znenner; - $arr = explode("-", $fskennz, 4); + $arr = explode("-", $fskennz, 4); // an den Trenn-Strichen aufteilen $zgemkg=trim($arr[0]); $zflur=h_hinten($arr[1]); @@ -129,6 +130,7 @@ // Eine Zeile zu Gemarkung ausgeben global $con, $gkz, $gemeinde, $epsg, $gfilter; + if ($gkgname == "") { // Falls Gem.-Name fehlt, in DB nachschlagen - $sql ="SELECT g.gemarkungsname FROM pp_gemarkung g WHERE g.gemarkung = $1 AND endet IS NULL LIMIT 1;"; + $sql ="SELECT g.gemarkungsname FROM pp_gemarkung g WHERE g.gemarkung = $1 LIMIT 1;"; $v=array($gnr); $res=pg_prepare("", $sql); @@ -138,7 +140,9 @@ $gkgname=$row["gemarkungsname"]; } + if ($gkgname == "") {$gkgname = "(unbekannt)";} $gnam=htmlentities($gkgname, ENT_QUOTES, "UTF-8"); if ($aktuell) {$cls=" aktuell";} + echo "\n
Fehler bei Gemeinde und Gemarkung.
";} - $rowh = pg_fetch_array($resh); - $gmkg=$rowh["gemarkungsname"]; - $skey=$rowh["gemeinde"]; - $snam=$rowh["gemeindename"]; - zeile_gemeinde($skey, $snam, false); - zeile_gemarkung($gkgnr, $gmkg, $gkgaktuell); - return; + + if ($rowh = pg_fetch_array($resh)) { + $gmkg=$rowh["gemarkungsname"]; + $skey=$rowh["gemeinde"]; + $snam=$rowh["gemeindename"]; + zeile_gemeinde($skey, $snam, false); + zeile_gemarkung($gkgnr, $gmkg, $gkgaktuell); + return true; + } else { + echo "\nGem.-Gemkg.-Kopf abgebrochen
";} + return false; + } + } + // Body - $sql ="SELECT gemarkungsteilflur AS flur FROM ax_gemarkungsteilflur f - WHERE gemarkung= $1 AND endet IS NULL ORDER BY gemarkungsteilflur LIMIT $2 ;"; + // Tabelle pp_flur verwenden um nur Fluren aufzulisten, die tatsÀchlich FlurstÌcke enthalten + $sql ="SELECT flurnummer AS flur FROM pp_flur f WHERE gemarkung= $1 ORDER BY flurnummer LIMIT $2 ;"; $v=array($zgemkg, $linelimit); $res=pg_prepare("", $sql); $res=pg_execute("", $v); + if (!$res) {echo "\nFehler bei Flur.
";} $zfl=0; @@ -391,4 +412,5 @@ $zfl++; } + // Foot if($zfl == 0) { @@ -399,5 +421,5 @@ echo "\n".$zfl." Fluren
"; } - return; + return true; } @@ -408,6 +430,9 @@ // Head - gg_head($zgemkg, false); - zeile_flur($zgemkg, $zflur, true, true); + if (gg_head($zgemkg, false)) { + zeile_flur($zgemkg, $zflur, true, true); + } else { + return false; + } // Body @@ -444,5 +469,5 @@ echo "\n".$zfs." Flurstücke
"; } - return; + return true; } @@ -454,6 +479,9 @@ // Head - gg_head($zgemkg, false); - zeile_flur($zgemkg, $zflur, true, true); + if (gg_head($zgemkg, false)) { + zeile_flur($zgemkg, $zflur, true, true); + } else { + return false; + } // Body @@ -486,5 +514,5 @@ echo "\n".$zfs." historische Flurstücke
"; } - return; + return true; } @@ -495,6 +523,9 @@ // Head - gg_head($zgemkg, false); - zeile_flur($zgemkg, $zflur, true, false); + if (gg_head($zgemkg, false)) { + zeile_flur($zgemkg, $zflur, true, false); + } else { + return false; + } // Body @@ -507,6 +538,5 @@ $sql.="y(st_transform(st_Centroid(f.wkb_geometry), ".$epsg.")) AS y "; } - $sql.="FROM ax_flurstueck f "; - $sql.="WHERE f.gemarkungsnummer= $1 AND f.flurnummer= $2 AND f.zaehler= $3 "; + $sql.="FROM ax_flurstueck f WHERE f.gemarkungsnummer= $1 AND f.flurnummer= $2 AND f.zaehler= $3 "; If ($znenner != "") {$sql.="AND f.nenner=".$znenner." ";} // wie prepared? $sql.="AND endet IS NULL ORDER BY f.zaehler, f.nenner;"; @@ -535,5 +565,5 @@ echo "\nFehler bei historischem Flurstück.
"; if ($debug > 2) {echo "SQL = '".$sql."'
Parameter: ".$fskzwhere."
";} - return; + return true; } @@ -675,5 +708,6 @@ } else { // Die Formular-Eingabe interpretieren (kann auch ein Link sein) $retzer=ZerlegungFsKennz($fskennz); - switch ($retzer) { + if ($debug >= 1) {echo "\n
Return Zerlegung: ".$retzer."
";} + switch ($retzer) { // Return der Zerlegung case 0: // leere Eingabe if ($gfilter == 1) { // Die GUI ist bereits auf EINE Gemeinde gefiltert