Changeset 425 for trunk/info/info/alkisn/alkisbestnw.php
- Timestamp:
- 12/30/21 17:49:00 (2 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/info/info/alkisn/alkisbestnw.php
r422 r425 6 6 7 7 Version: 8 2016-02-24 Version f uer norGIS-ALKIS-Import8 2016-02-24 Version fÃŒr norGIS-ALKIS-Import 9 9 .... 10 2020-02-20 Authentifizierung ausgel egert in Function darf_ich()10 2020-02-20 Authentifizierung ausgelagert in Function darf_ich() 11 11 2020-12-03 function selbstverlinkung() statt $_SERVER['PHP_SELF'] 12 12 2020-12-15 Input-Validation und Strict Comparisation (===) 13 2021-12-09 Neue Parameter: $katAmtMix (Kataster-Amt-Mix), $PrntBtn (Drucken-SchaltflÀche) 14 Tabellenstruktur verbessert und Title bei "Recht an". 15 2021-12-30 Bestandsnachweis recursiv ÃŒber alle Buchungs-Ebenen 13 16 */ 14 17 ini_set("session.cookie_httponly", 1); … … 54 57 55 58 $erlaubnis = darf_ich(); if ($erlaubnis === 0) { die('<p class="stop1">Abbruch</p></body>'); } 56 57 // Mit URL-Parameter "&nodebug=j" kann man die Entwicklungsumgebung (in Conf definiert) ausschalten. 58 // Manuell an die URL anfÃŒgen, wirkt nur temporÀr und wird nicht in Links weiter gereicht.59 if ($nodebug === "j") {$d ebug=0;}59 $dbg=$debug; // CONF in Arbeits-Variable 60 61 // Entwicklungsumgebung (in Conf definiert) ausschalten. 62 if ($nodebug === "j") {$dbg=0;} 60 63 61 64 $con = pg_connect($dbconn." options='--application_name=ALKIS-Auskunft_alkisbestnw.php'"); … … 64 67 // G R U N D B U C H 65 68 $sql="SELECT g.gml_id, g.bezirk, g.buchungsblattnummermitbuchstabenerweiterung AS blatt, g.blattart, wb.beschreibung AS blattartv, wb.dokumentation AS blattartd, 66 b.gml_id, b.bezirk, b.bezeichnung AS beznam, d.gml_id, d.land, d.bezeichnung, d.stelle, d.stellenart, wd.beschreibung AS stellev FROM ax_buchungsblatt g 67 LEFT JOIN ax_buchungsblattbezirk b ON g.land=b.land AND g.bezirk=b.bezirk 68 LEFT JOIN ax_dienststelle d ON b.land=d.land AND b.gehoertzu_stelle=d.stelle 69 LEFT JOIN ax_blattart_buchungsblatt wb ON g.blattart = wb.wert 70 LEFT JOIN ax_behoerde wd ON d.stellenart = wd.wert 69 b.gml_id, b.bezirk, b.bezeichnung AS beznam, d.gml_id, d.land, d.bezeichnung, d.stelle, d.stellenart, wd.beschreibung AS stellev 70 FROM ax_buchungsblatt g 71 LEFT JOIN ax_buchungsblattbezirk b ON g.land=b.land AND g.bezirk=b.bezirk ".UnqKatAmt("g","b") 72 ."LEFT JOIN ax_dienststelle d ON b.land=d.land AND b.gehoertzu_stelle=d.stelle ".UnqKatAmt("b","d") 73 ."LEFT JOIN ax_blattart_buchungsblatt wb ON g.blattart = wb.wert 74 LEFT JOIN ax_behoerde wd ON d.stellenart = wd.wert 71 75 WHERE g.gml_id= $1 AND g.endet IS NULL AND b.endet IS NULL AND d.endet IS NULL;"; 72 76 // .. AND d.stellenart=1000 … … 77 81 if (!$res) { 78 82 echo "\n<p class='err'>Fehler bei Grundbuchdaten.</p>"; 79 if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities(str_replace("$1", "'".$gmlid."'", $sql), ENT_QUOTES, "UTF-8")."</p>";} 83 if ($dbg > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities(str_replace("$1", "'".$gmlid."'", $sql), ENT_QUOTES, "UTF-8")."</p>";} 84 } 85 $zeianz=pg_num_rows($res); 86 if ($dbg > 0) { 87 if ($zeianz > 1){ 88 echo "\n<p class='err'>Die Abfrage liefert mehr als ein (".$zeianz.") Grundbuch-Objekt!</p>"; 89 if ($dbg > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities(str_replace("$1","'".$gmlid."'",$sql), ENT_QUOTES, "UTF-8")."</p>";} 90 } 91 } 92 if ($zeianz == 0){ 93 echo "\n<p class='err'>Fehler! Kein Treffer für ein Grundbuch-Blatt mit gml_id=".$gmlid."</p>"; 94 if ($dbg > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities(str_replace("$1","'".$gmlid."'",$sql), ENT_QUOTES, "UTF-8")."</p>";} 95 echo "\n</body>\n</html>"; 96 return; 80 97 } 81 98 if ($row = pg_fetch_assoc($res)) { … … 87 104 echo "\n<h2>Grundbuch</h2>"; 88 105 echo "\n<table class='outer'>" // Blatt UND Eigent. 89 ."\n <tr>\n\t<td class='ll'><img src='ico/Grundbuch.png' width='16' height='16' alt=''> Blatt:</td>" // outer Links90 ."\n\t <td colspan='2'>"; // Outer Mitte, Kennz. im Rahmen91 if ($blattkey == 1000) {92 echo "\n\t\t<table class='kennzgb' title='Bestandskennzeichen'>";93 } else {94 echo "\n\t\t<table class='kennzgbf' title='Bestandskennzeichen'>"; // dotted95 }96 echo "\n\t\t <tr>"97 ."\n\t\t\t<td class='head'>"; // .d nicht gefÃŒllt106 ."\n\t<tr>\n\t\t<td class='ll'><img src='ico/Grundbuch.png' width='16' height='16' alt=''> Blatt:</td>" 107 ."\n\t\t<td colspan='2'>"; // Outer Mitte, Kennz. im Rahmen 108 if ($blattkey === "1000") { 109 echo "\n\t\t\t<table class='kennzgb' title='Bestandskennzeichen'>"; 110 } else { 111 echo "\n\t\t\t<table class='kennzgbf' title='Bestandskennzeichen'>"; // dotted 112 } 113 echo "\n\t\t\t<tr>" 114 ."\n\t\t\t<td class='head'>"; 98 115 if ($showkey) {echo "<span class='key'>".$row["stellenart"]." </span>";} 99 116 echo $row["stellev"]."</td>"; 100 117 echo "\n\t\t\t<td class='head'>Bezirk</td>" 101 ."\n\t\t\t <td class='head' title='".htmlentities($row["blattartd"], ENT_QUOTES, "UTF-8")."'>";118 ."\n\t\t\t\t<td class='head' title='".htmlentities($row["blattartd"], ENT_QUOTES, "UTF-8")."'>"; 102 119 if ($showkey) {echo "<span class='key'>".$blattkey." </span>";} 103 120 echo $blattart."</td>" 104 ."\n\t\t </tr>\n\t\t<tr>"105 ."\n\t\t\t <td title='Amtsgerichtsbezirk'>";121 ."\n\t\t\t</tr>\n\t\t\t<tr>" 122 ."\n\t\t\t\t<td title='Amtsgerichtsbezirk'>"; 106 123 if ($showkey) {echo "<span class='key'>".$row["stelle"]."</span><br>";} 107 124 echo htmlentities($row["bezeichnung"], ENT_QUOTES, "UTF-8")."</td>" 108 ."\n\t\t\t <td title='Grundbuchbezirk'>";125 ."\n\t\t\t\t<td title='Grundbuchbezirk'>"; 109 126 if ($showkey) {echo "<span class='key'>".$row["bezirk"]."</span><br>";} 110 127 echo htmlentities($row["beznam"], ENT_QUOTES, "UTF-8")."</td>" 111 ."\n\t\t\t <td title='Grundbuch-Blatt'><span class='wichtig'>".$blatt."</span></td>"112 ."\n\t\t </tr>"113 ."\n\t\t </table>"114 ."\n\t </td>\n\t<td> "115 ."\n\t</td>\n</tr>"; 116 } 117 118 if ($blattkey == 5000) { // fikt. Blatt128 ."\n\t\t\t\t<td title='Grundbuch-Blatt'><span class='wichtig'>".$blatt."</span></td>" 129 ."\n\t\t\t</tr>" 130 ."\n\t\t\t</table>" 131 ."\n\t\t</td>\n\t\t<td> </td>\n\t</tr>"; 132 } 133 pg_free_result($res); 134 135 if ($blattkey === "5000") { // fikt. Blatt 119 136 echo "\n<p>Keine Angaben zum Eigentum bei fiktivem Blatt.</p>"; 120 } else { // E I G E N T U EM E R137 } else { // E I G E N T à M E R 121 138 $n = eigentuemer($gmlid, true, ""); // MIT Adressen. 122 139 if ($n === 0) { // keine NamensNr, kein Eigentuemer … … 127 144 echo "\n</table>"; 128 145 129 // Vorab pruefen, ob der Fall "Rechte an .." vorliegt. 130 // ToDo: +++ Es gibt auch den Fall, dass auf der nÀchsten Stufe "nur Rechte" angezeigt werden, noch keine FlurstÃŒcke 131 // ++ Also 3 Möglichkeiten: 132 // - Nur Rechte an (+++ FEHLT NOCH ++) 133 // - Rechte und FlurstÃŒcke 134 // - FlurstÃŒcke 135 136 // GB-Blatt <istBestandteilVon< sh=herrschend >an/zu> sd=dienend 137 $sql="SELECT count(sd.laufendenummer) AS anzahl " 138 ."FROM ax_buchungsstelle sh JOIN ax_buchungsstelle sd ON (sd.gml_id=ANY(sh.an) OR sd.gml_id=ANY(sh.zu)) " 139 ."WHERE sh.istbestandteilvon= $1 AND sd.endet IS NULL AND sh.endet IS NULL;"; 140 146 // Vorab eine Tiefbohrung zur Sondierung von (potentiell) herrschend bis dienend ÃŒber max. 4 Buchungs-Stellen. 147 // Diese ZÀhlung sagt nur aus, ob es "generell" solche FÀlle auf diesem Grundbuch gibt (ist selten). 148 // In jedem einzelnen Zweig der Buchungen muss aber individuell danach gesucht werden. 149 // Die Relation "zu" ist hier einbezogen, wird aber spÀter nicht ausgewertet. Hier könnte man die Differenz erkennen falls "zu" doch mal auftaucht. 150 $sql ="SELECT count(s2.laufendenummer) AS anz2"; 151 if ($dbg > 1) {$sql.=", count(s3.laufendenummer) AS anz3, count(s4.laufendenummer) AS anz4";} 152 $sql.=" FROM ax_buchungsstelle sh " // herrschend 153 ."LEFT JOIN ax_buchungsstelle s2 ON (s2.gml_id=ANY(sh.an) OR s2.gml_id=ANY(sh.zu)) "; 154 if ($dbg > 1) { 155 $sql.="LEFT JOIN ax_buchungsstelle s3 ON (s3.gml_id=ANY(s2.an) OR s3.gml_id=ANY(s2.zu)) " 156 ."LEFT JOIN ax_buchungsstelle s4 ON (s4.gml_id=ANY(s3.an) OR s4.gml_id=ANY(s3.zu)) "; 157 } 158 $sql.="WHERE sh.istbestandteilvon= $1 AND sh.endet IS NULL AND s2.endet IS NULL "; 159 if ($dbg > 1) {$sql.="AND s3.endet IS NULL AND s4.endet IS NULL";} 141 160 $v=array($gmlid); // GB-Blatt 142 161 $res=pg_prepare("", $sql); 143 162 $res=pg_execute("", $v); 144 if (!$res) echo "\n<p class='err'>Fehler bei Suche nach Buchungen.</p>"; 163 if (!$res) { 164 echo "\n<p class='err'>Fehler bei tiefer Suche nach Buchungen.</p>"; 165 if ($dbg > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities(str_replace("$1", "'".$gmlid."'", $sql), ENT_QUOTES, "UTF-8")."</p>";} 166 } 145 167 $row=pg_fetch_assoc($res); 146 $anz=$row["anzahl"]; 147 168 $anz2=$row["anz2"]; // steuert Tabellenform und Ãberschrift 169 if ($dbg > 1) { 170 $anz3=$row["anz3"]; 171 $anz4=$row["anz4"]; 172 echo "\n<p class='dbg'>Anzahl dienende Buchungen Ebene 2: '".$anz2."', Ebene 3: '".$anz3."', Ebene 4: '".$anz4."'</p>"; 173 } 148 174 echo "\n<hr>\n\n<h3><img src='ico/Flurstueck.png' width='16' height='16' alt=''>"; 149 if ($anz > 0) { // auch "Rechte an"175 if ($anz2 > 0) { // auch "Rechte an", also dienende B. 150 176 echo " Rechte und Flurstücke</h3>\n<table class='fs'>"; 151 // zusaetzliche Kopfzeile "Rechte"152 echo "\n<tr>"153 ."\n\t<td> </td>"154 ."\n\t<td class=' dien' title='herrschendes Grundstück'>herrschendeBuchungsart</td>"155 ."\n\t<td class=' dien'>Anteil</td>"156 ."\n\t<td class=' dien'>Bezirk</td>"157 ."\n\t<td class=' dien'>Blatt</td>"158 ."\n\t<td class=' dien'>BVNR</td>"159 ."\n\t<td class=' dien' title='dienendes Grundstück'>Buchungsart</td>"160 ."\n\t<td > </td>"177 echo "\n<tr>" // zus. Kopfz. "Rechte" vor FS 178 ."\n\t<td class='heads' title='laufende Nummer Bestandsverzeichnis (BVNR) = Grundstück'>\n\t\t<span class='wichtig'>BVNR</span>" 179 ."\n\t\t<img src='ico/sort.png' width='10' height='10' alt='' title='primäre Sortierung'>\n\t</td>" 180 ."\n\t<td class='head dien' title='herrschendes Grundstück'>Buchungsart</td>" 181 ."\n\t<td class='head dien'>Anteil</td>" 182 ."\n\t<td class='head dien'>Bezirk</td>" 183 ."\n\t<td class='head dien'>Blatt</td>" 184 ."\n\t<td class='head dien'>BVNR</td>" 185 ."\n\t<td class='head dien'> </td>" 186 ."\n\t<td class='head dien'> </td>" 161 187 ."\n</tr>"; 162 } else { // keine Rechte an, nur F lurstÃŒcke gebucht188 } else { // keine Rechte an, nur FS 163 189 echo " Flurstücke</h3>\n<table class='fs'>"; 164 190 } 165 166 // gemeinsame Kopfzeile "Buchung + FlurstÃŒck" 167 echo "\n<tr>" 168 ."\n\t<td class='heads' title='laufende Nummer Bestandsverzeichnis (BVNR) = Grundstück'><span class='wichtig'>BVNR</span><img src='ico/sort.png' width='10' height='10' alt='' title='primäre Sortierung'></td>" 169 ."\n\t<td class='head'>Buchungsart</td>" 170 ."\n\t<td class='head'> </td>" 191 echo "\n<tr>"; // Kopfzeile "FlurstÃŒck" 192 if ($anz2 > 0) { // BS und FS 193 echo "\n\t<td class='head'> </td>" 194 ."\n\t<td class='head'> </td>"; 195 } else { // nur FS 196 echo "\n\t<td class='heads' title='laufende Nummer Bestandsverzeichnis (BVNR) = Grundstück'>\n\t\t<span class='wichtig'>BVNR</span>" 197 ."\n\t\t<img src='ico/sort.png' width='10' height='10' alt='' title='primäre Sortierung'>" 198 ."\n\t</td>" 199 ."\n\t<td class='head'>Buchungsart</td>"; 200 } 201 echo "\n\t<td class='head'> </td>" 171 202 ."\n\t<td class='heads'>Gemarkung</td>" 172 203 ."\n\t<td class='heads'>Flur</td>" 173 204 ."\n\t<td class='heads fsnr' title='Flurstücksnummer (Zähler / Nenner)'><span class='wichtig'>Flurst.</span></td>" 174 ."\n\t<td class='head fla g'>Fläche</td>"205 ."\n\t<td class='head fla'>Fläche</td>" 175 206 ."\n\t<td class='head nwlink noprint' title='Verlinkung zu anderen Nachweis-Arten und verbundenen Objekten'>weitere Auskunft</td>" 176 207 ."\n</tr>"; 177 208 178 // Blatt -> B u c h u n g s s t e l l e 209 // Blatt -> B u c h u n g s s t e l l e (oberste Ebene 1, GrundstÃŒck oder herrschend). Relation istBestandteilVon 179 210 // aktuelles ax_buchungsblatt <istBestandteilVon< ax_buchungsstelle 180 211 $sql ="SELECT s.gml_id, s.buchungsart, s.laufendenummer AS lfd, s.beschreibungdesumfangsderbuchung AS udb, s.zaehler, s.nenner, 181 212 s.nummerimaufteilungsplan AS nrap, s.beschreibungdessondereigentums AS sond, b.beschreibung as bart, b.dokumentation 182 FROM ax_buchungsstelle s LEFT JOIN ax_buchungsart_buchungsstelle b ON s.buchungsart = b.wert 213 FROM ax_buchungsstelle s 214 LEFT JOIN ax_buchungsart_buchungsstelle b ON s.buchungsart = b.wert 183 215 WHERE s.istbestandteilvon= $1 AND s.endet IS NULL ORDER BY cast(s.laufendenummer AS integer);"; 184 $v=array($gmlid); // Rel. istBestandteilVon216 $v=array($gmlid); 185 217 $res=pg_prepare("", $sql); 186 218 $res=pg_execute("", $v); 187 219 if (!$res) { 188 220 echo "\n<p class='err'>Fehler bei Buchung.</p>"; 189 if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities(str_replace("$1", "'".$gmlid."'", $sql), ENT_QUOTES, "UTF-8")."</p>";} 190 } 191 $i=0; 192 $fscnt=0; 221 if ($dbg > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities(str_replace("$1", "'".$gmlid."'", $sql), ENT_QUOTES, "UTF-8")."</p>";} 222 } 223 $i=0; // ZÀhler Buchungs-Stellen auf oberer Ebene 193 224 $zpaar=false; 194 while($row = pg_fetch_assoc($res)) { // Loop Buchungsstelle (GrundstÃŒck) 225 $altlfdnr=''; // GW 226 227 while($row = pg_fetch_assoc($res)) { // Loop Buchungsstellen der 1. Ebene (herrschend oder nur FS) 228 $i++; 229 $gml_bs=$row["gml_id"]; // gml der Buchungsstelle 195 230 $lfdnr=$row["lfd"]; 196 $bvnr=str_pad($lfdnr, 4, "0", STR_PAD_LEFT); 197 $gml_bs=$row["gml_id"]; // id der buchungsstelle 198 $bartkey=$row["buchungsart"]; // SchlÃŒsselwert 231 $bartkey=$row["buchungsart"]; // Key 199 232 $bart=$row["bart"]; // BuchungsART Text dazu 200 $bartstory=htmlentities($row["dokumentation"], ENT_QUOTES, "UTF-8"); // .. fÃŒr Anzeige aufbereitet 201 if ($row["zaehler"] == "") { 202 $anteil = ""; 203 } else { 204 $anteil = $row["zaehler"]."/".$row["nenner"]; 205 } 206 if ($zpaar) {$trclass='paa';} else {$trclass='unp';} // Farbwechsel je GrundstÃŒck 233 $bartstory=htmlentities($row["dokumentation"], ENT_QUOTES, "UTF-8"); // .. fÃŒr Anzeige aufbereitet 234 if ($row["zaehler"] == "") {$anteil = "";} 235 else {$anteil = $row["zaehler"]."/".$row["nenner"];} 236 if ($zpaar) {$trclass='paa';} else {$trclass='unp';} // Farbwechsel je Buchung auf Ebene 1 207 237 $zpaar=!$zpaar; 208 238 209 // F l u r s t u e c k s d a t e n zur direkten Buchungsstelle 210 $j = bnw_fsdaten($lfdnr, $gml_bs, $bart, $anteil, true, $bartkey, $bartstory); // return=Anzahl der FS 211 $fscnt=$fscnt + $j; 212 if ($j === 0) { // k e i n e Flurstuecke gefunden (Miteigentumsnteil usw.) 213 // Bei "normalen" Grundstuecken wurden hier Flurstuecksdaten gefunden und ausgegeben. 214 // Bei Miteigentumsanteil, Erbbaurecht usw. muss nach den "dienenden" Buchungsstellen gesucht werden, darauf sind die FS gebucht. 215 // Buchungsstelle >an/zu> (andere)Buchungsstelle >istBestandTeilVon> "FiktivesBlatt (ohne) Eigentuemer" 216 217 // dann andere "dienende" Buchungsstellen 218 // sh=herrschend sd=dienend 219 // ax_buchungsstelle >zu> ax_buchungsstelle (des gleichen Blattes) 220 // ax_buchungsstelle >an> ax_buchungsstelle (anderes Blatt, z.B Erbbaurecht an) 221 222 // Mit "UNION" um die FÀlle mit JOIN ÃŒber die Arrays "an" und "zu" unterscheiden zu können 223 $sql="SELECT uni.*, wb.beschreibung AS bart FROM " 224 ."(SELECT sda.gml_id, sda.buchungsart, sda.laufendenummer AS lfd, sda.beschreibungdesumfangsderbuchung AS udb, sda.nummerimaufteilungsplan AS nrap, sda.beschreibungdessondereigentums AS sond, 'an' as anzu " 225 ."FROM ax_buchungsstelle sha JOIN ax_buchungsstelle sda ON sda.gml_id=ANY(sha.an) " 226 ."WHERE sha.gml_id= $1 AND sha.endet IS NULL AND sda.endet IS NULL " 227 ."UNION SELECT sdz.gml_id, sdz.buchungsart, sdz.laufendenummer AS lfd, sdz.beschreibungdesumfangsderbuchung AS udb, sdz.nummerimaufteilungsplan AS nrap, sdz.beschreibungdessondereigentums AS sond, 'zu' as anzu " 228 ."FROM ax_buchungsstelle shz JOIN ax_buchungsstelle sdz ON sdz.gml_id=ANY(shz.zu) " 229 ."WHERE shz.gml_id= $1 AND shz.endet IS NULL AND sdz.endet IS NULL " 230 .") AS uni LEFT JOIN ax_buchungsart_buchungsstelle wb ON uni.buchungsart = wb.wert " 231 ."ORDER BY uni.lfd;"; 232 // Testfall suchen: SELECT gml_id, zu, durch FROM ax_buchungsstelle WHERE NOT zu IS NULL OR NOT durch IS NULL; 233 // Die Relationen "zu" und "durch" kommen in der Praxis nicht vor. 234 235 $v=array($gml_bs); // gml_id der "herrschenden" Buchungs-Stelle 236 $resan=pg_prepare("", $sql); // Suche nach "dienender" Buchungsstelle 237 $resan=pg_execute("", $v); 238 if (!$resan) { 239 echo "\n<p class='err'>Fehler bei 'andere Buchungsstelle'.</p>"; 240 if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities(str_replace("$1", "'".$gml_bs."'", $sql), ENT_QUOTES, "UTF-8")."</p>";} 239 if ($bartkey <= 1102) { // (aufgeteiltes) GrundstÃŒck 240 241 $zeianz = bnw_fsdaten($gml_bs, true); // FlurstÃŒcksdaten zur direkten Buchungsstelle 242 if ($zeianz === 0) {echo "\n<tr class='".$trclass."'>\n\t<td></td>\n\t<td colspan='7'><p class='warn'>Keine Flurstücke im berechtigten Bereich.</p></td>\n\t<td></td>\n</tr>";} 243 244 } else { // herrschende Buchung 245 246 bnw_bszeile_h(); // Die herrschende Buchung, aus Global 247 248 $altlfdnr=$lfdnr; 249 250 if ($row["nrap"] != "") { // Nr im Auft.Plan 251 echo "\n<tr>\n\t<td colspan=3></td><td class='nrap' colspan=4>Nummer <span class='wichtig'>".$row["nrap"]."</span> im Aufteilungsplan.</td><td></td>\n</tr>"; 241 252 } 242 253 243 $a=0; // count 244 $altbvnr=""; // Gruppenwechsel 245 while($rowan= pg_fetch_assoc($resan)) { 246 $lfdnran=$rowan["lfd"]; // BVNR an 247 $gml_bsan=$rowan["gml_id"]; // id der buchungsstelle an 248 $baan=$rowan["bart"]; // Buchungsart an, entschluesselt 249 $anzu=$rowan["anzu"]; // Welche Relation? Recht an oder Recht zu ? 250 251 // dienende Buchungsstelle 252 $sql ="SELECT b.gml_id, b.land, b.bezirk, b.buchungsblattnummermitbuchstabenerweiterung AS blatt, b.blattart, wb.beschreibung AS blattartv, z.bezeichnung AS beznam " 253 ."FROM ax_buchungsblatt b JOIN ax_buchungsstelle s ON b.gml_id=s.istbestandteilvon " 254 ."LEFT JOIN ax_buchungsblattbezirk z ON b.land=z.land AND b.bezirk=z.bezirk " 255 ."LEFT JOIN ax_blattart_buchungsblatt wb ON b.blattart = wb.wert " 256 ."WHERE s.gml_id= $1 AND b.endet IS NULL AND s.endet IS NULL AND z.endet IS NULL ORDER BY b.land, b.bezirk, b.buchungsblattnummermitbuchstabenerweiterung;"; 257 $v=array($gml_bsan); 258 $fbres=pg_prepare("", $sql); 259 $fbres=pg_execute("", $v); 260 if (!$fbres) { 261 echo "\n<p class='err'>Fehler bei fiktivem Blatt.</p>"; 262 if ($debug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities( str_replace("$1", "'".$gml_bsan."'", $sql), ENT_QUOTES, "UTF-8")."</p>";} 263 } 264 $b=0; 265 while($fbrow = pg_fetch_assoc($fbres)) { // genau 1 266 $fbgml=$fbrow["gml_id"]; 267 $fbland=$fbrow["land"]; 268 $fbbez=$fbrow["bezirk"]; 269 $beznam=$fbrow["beznam"]; 270 $fbblatt=ltrim($fbrow["blatt"], "0"); 271 $fbbartkey=$fbrow["blattart"]; // Key 272 $fbbart=$fbrow["blattartv"]; // Value 273 $b++; 274 } 275 if ($b != 1) { // Ãberwachen: genau 1? 276 echo "\n<p class='err'>Anzahl fiktive Blätter zu anderer Buchungstelle = ".$b."</p>"; 277 } 278 // Grundbuchdaten zur dienenden Buchungsstelle 279 echo "\n<tr class='".$trclass."'>" 280 ."\n\t<td id='bvnr".$lfdnr."'>"; // Sp.1 Erbbau BVNR, Sprungmarke 281 if($bvnr === $altbvnr) { // gleiches Grundstueck 282 echo " "; // dann Anzeige unterdruecken 283 } else { 284 // echo "<a id='bvnr".$lfdnr."'></a>" // Sprungmarke 285 echo "<span class='wichtig'>".$bvnr."</span>"; 286 $altbvnr = $bvnr; // Gruppenwechsel merken 287 } 288 echo "</td>" 289 ."\n\t<td class='dien'>"; // Sp.2 Buchung 290 if ($showkey) {echo "<span class='key'>".$row["buchungsart"]."</span> ";} 291 echo $bart." an</td>" 292 ."\n\t<td class='dien'>".$anteil."</td>" // Sp.3 Anteil 293 ."\n\t<td class='dien' title='Grundbuch-Bezirk'>"; // Sp.4 Gemarkg., hier Bezirk 294 if ($showkey) {echo "<span class='key'>".$fbbez."</span> ";} 295 echo htmlentities($beznam, ENT_QUOTES, "UTF-8") 296 ."</td>"; 297 echo "\n\t<td class='dien' title='".$fbbart."'>".$fbblatt."</td>" // Sp. 5 Blatt 298 ."\n\t<td class='dien' title='Bestandsverzeichnis-Nummer'>".str_pad($lfdnran, 4, "0", STR_PAD_LEFT)."</td>" // Sp.6 BVNR 299 ."\n\t<td class='dien' title='Buchungsart'>"; // Sp.7 Buchungsart 300 if ($showkey) {echo "<span class='key'>".$rowan["buchungsart"]."</span> ";} 301 echo $baan." " 302 ."</td>" 303 ."\n\t<td>" // Sp.8 Link ("an" oder "zu"?) 304 ."\n\t\t<p class='nwlink noprint'>".$anzu; // Recht "an" oder "zu" 305 306 // Buchung 307 // +++ <a gsnachw 308 309 // Bestand 310 if ($showkey) {echo " <span class='key'>".$fbbartkey."</span>";} // Blatt-Art SchlÃŒssel 311 echo "\n\t\t\t<a href='alkisbestnw.php?gkz=".$gkz."&gmlid=".$fbgml; 312 if ($showkey) {echo "&showkey=j";} 313 echo "#bvnr".$lfdnran // Sprungmarke auf der Seite 314 ."' title='Zum Grundbuchnachweis des dienenden Blattes'>"; 315 echo $fbbart // Blatt-Art entschlÃŒsselt 316 ." <img src='ico/GBBlatt_link.png' width='16' height='16' alt=''></a>"; 317 318 echo "\n\t\t</p>" 319 ."\n\t</td>" 320 ."\n</tr>"; 321 322 // Flurstuecksdaten zur dienenden Buchungsstelle 323 // Buchungsart wird nur in erster Zeile ausgegeben, hier leer 324 $aj = bnw_fsdaten($lfdnran, $gml_bsan, "", $anteil, false, "", ""); // return=Anz.FS 325 $fscnt=$fscnt + $aj; 326 if ($rowan["nrap"] != "") { 327 echo "\n<tr>" 328 ."\n\t<td class='sond' colspan=8>Nr. im Aufteilungsplan: ".$rowan["nrap"]."</td>" 329 ."\n</tr>"; 330 } 331 if ($rowan["sond"] != "") { 332 echo "\n<tr>" 333 ."\n\t<td class='sond' colspan=8>Verbunden mit dem Sondereigentum an: ".htmlentities($rowan["sond"], ENT_QUOTES, "UTF-8")."</td>" 334 ."\n</tr>"; 335 } 336 $a++; 254 if ($row["sond"] != "") { // Sondereigentumsbeschreibung 255 echo "\n<tr>\n\t<td></td><td class='sond' colspan=6 title='Sondereigentums-Beschreibung'>Verbunden mit dem Sondereigentum an: ".$row["sond"]."</td><td></td>\n</tr>"; 337 256 } 338 if ($a === 0) { 339 echo "\n<tr class='".$trclass."'>" 340 ."\n\t<td><span class='wichtig'>".$bvnr."</span></td>" 341 ."\n\t<td colspan=7><p class='warn'>Keine Flurstücke zu Buchung ".$bvnr." im berechtigten Bereich.</p></td>" 342 ."\n</tr>"; 343 } 344 } 345 $i++; 346 if ($row["nrap"] != "") { // Nr im Auft.Plan 347 echo "\n<tr>" 348 ."\n\t<td class='nrap' colspan=8>Nummer <span class='wichtig'>".$row["nrap"]."</span> im Aufteilungsplan.</td>" 349 ."\n</tr>"; 350 } 351 if ($row["sond"] != "") { // Sondereigentumsbeschreibung 352 echo "\n<tr>" 353 ."\n\t<td class='sond' colspan=8>Verbunden mit dem Sondereigentum an: ".$row["sond"]."</td>" 354 ."\n</tr>"; 355 } // Ende Buchungsstelle/BVNR 356 } // Ende Loop 257 258 $tiefer = bnw_bsdaten($gml_bs, 2); // dienend, recursiv Ebenen 2,3,4 259 260 } 261 } 357 262 echo "\n</table>"; 358 359 if ($i === 0) { 360 echo "\n<p class='err'>Keine Buchung gefunden.</p>"; 361 } else { 362 if ($i > 5 and $fscnt > 5) { // nur wenn nicht auf einen Blick zu erkennen 363 echo "\n<p class='cnt'>".$i." Buchungen mit ".$fscnt." Flurstücken</p>"; 364 } 365 } 366 367 // B e r e c h t i g t e Buchungsblaetter mit Recht an/zu dem aktuellen (fiktiven?) Blatt 263 if ($i === 0) {echo "\n<p class='err'>Keine Buchung gefunden.</p>";} 264 pg_free_result($res); 265 266 // B e r e c h t i g t e BuchungsblÀtter mit Recht an dem aktuellen (fiktiven?) Blatt 368 267 369 268 // bf sf sb bb … … 374 273 FROM ax_buchungsstelle sf JOIN ax_buchungsstelle sb ON (sf.gml_id=ANY(sb.an) OR sf.gml_id=ANY(sb.zu)) 375 274 JOIN ax_buchungsblatt bb ON bb.gml_id=sb.istbestandteilvon 376 LEFT JOIN ax_buchungsblattbezirk bz ON bb.land=bz.land AND bb.bezirk=bz.bezirk 377 LEFT JOIN ax_dienststelle d ON bz.land=d.land AND bz.gehoertzu_stelle=d.stelle 378 LEFT JOIN ax_blattart_buchungsblatt wa ON bb.blattart = wa.wert275 LEFT JOIN ax_buchungsblattbezirk bz ON bb.land=bz.land AND bb.bezirk=bz.bezirk ".UnqKatAmt("bb","bz") 276 ."LEFT JOIN ax_dienststelle d ON bz.land=d.land AND bz.gehoertzu_stelle=d.stelle ".UnqKatAmt("bz","d") 277 ."LEFT JOIN ax_blattart_buchungsblatt wa ON bb.blattart = wa.wert 379 278 LEFT JOIN ax_buchungsart_buchungsstelle wb ON sb.buchungsart = wb.wert 380 279 LEFT JOIN ax_behoerde wd ON d.stellenart = wd.wert … … 387 286 if (!$resb) { 388 287 echo "\n<p class='err'>Fehler bei 'Berechtigte Blätter.</p>"; 389 if ($d ebug > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities(str_replace("$1", "'".$gmlid."'", $sql), ENT_QUOTES, "UTF-8")."</p>";}288 if ($dbg > 2) {echo "\n<p class='dbg'>SQL=<br>".htmlentities(str_replace("$1", "'".$gmlid."'", $sql), ENT_QUOTES, "UTF-8")."</p>";} 390 289 } 391 290 $b=0; // count: Buchungen / BlÀtter … … 421 320 $zpaar=!$zpaar; 422 321 423 echo "\n<tr class='".$trclass."'>"; // Der Teil "berechtigte GrundbÃŒcher" ist sortiert wie oberer Teil "FlurstÃŒcke"322 echo "\n<tr class='".$trclass."'>"; // Der Teil "berechtigte GrundbÃŒcher" ist nach BVNR sortiert wie oberer Teil "FlurstÃŒcke" 424 323 echo "\n\t<td><span class='wichtig'>".$anlfdnr0."</span></td>" 425 324 ."\n\t<td>"; // Amtsgericht,Grundbuchamt … … 440 339 ."\n\t<td>" 441 340 ."\n\t\t<p class='nwlink noprint'>"; 341 442 342 // Bestand 443 343 if ($showkey) {echo "<span class='key'>".$blart."</span> ";} 444 344 echo "\n\t\t\t<a href='alkisbestnw.php?gkz=".$gkz."&gmlid=".$gml_b; 445 345 if ($showkey) {echo "&showkey=j";} 446 echo "#bvnr".$lfdnr."' title='Nachweis des berechtigten Blattes an einer Buchung auf ".$blattart."'>".$rowb["blattartv"]; // "an" ggf. durch "zu" ersetzen?346 echo "#bvnr".$lfdnr."' title='Nachweis des berechtigten Blattes an einer Buchung auf ".$blattart."'>".$rowb["blattartv"]; 447 347 echo " \n\t\t\t<img src='ico/GBBlatt_link.png' width='16' height='16' alt=''></a>"; 448 348 echo "\n\t\t</p>" … … 461 361 } 462 362 } 463 464 echo "\n<div class='buttonbereich noprint'><hr>" 465 ."\n\t<a title='zurück' href='javascript:history.back()'><img src='ico/zurueck.png' width='16' height='16' alt='zurück'></a> " 466 ."\n\t<a title='Drucken' href='javascript:window.print()'><img src='ico/print.png' width='16' height='16' alt='Drucken'></a> "; 363 pg_free_result($resb); 364 365 echo "\n<div class='buttonbereich noprint'>\n<hr>" 366 ."\n\t<a title='zurück' href='javascript:history.back()'><img src='ico/zurueck.png' width='16' height='16' alt='zurück'></a> "; 367 if ($PrntBtn==true){echo "\n\t<a title='Drucken' href='javascript:window.print()'><img src='ico/print.png' width='16' height='16' alt='Drucken'></a> ";} 467 368 if ($blattkey == 5000) { // Nicht bei "fiktives Blatt" 468 369 echo "\n\t<img src='ico/download_gb_no.png' width='32' height='16' alt='Export' title='Für ein fiktives Blatt ohne Eigentümer ist ein CSV-Export nicht sinnvoll.'>";
Note: See TracChangeset
for help on using the changeset viewer.