Fehler bei der Verbindung zur Datenbank

".$dbname.$dbvers.$gkz); echo << ALKIS-Suche Eigentümer << END; // Einen Link generieren, um nach anderen Personen mit gleichem Familiennamen zu suchen function familiensuche() { global $gkz, $gemeinde, $epsg, $name; if(isset($name)) { // Familiensuche echo "\n
"; echo "\n\t\tFAM "; echo "\n\"".$name."\""; echo "\n
\n
"; } return; } function personendaten() { // Adresse und Geburtsdatum der aktuellen Person ausgeben global $gkz, $gemeinde, $epsg, $name, $person, $blattgml, $auskpath; // $debug $sql ="SELECT p.nachnameoderfirma, p.vorname, p.geburtsdatum, p.namensbestandteil, "; $sql.="a.ort_post, a.postleitzahlpostzustellung AS plz, a.strasse, a.hausnummer "; $sql.="FROM ax_person p LEFT JOIN alkis_beziehungen b ON p.gml_id=b.beziehung_von "; $sql.="LEFT JOIN ax_anschrift a ON a.gml_id=b.beziehung_zu WHERE p.gml_id= $1 ;"; $v=array($person); $res=pg_prepare("", $sql); $res=pg_execute("", $v); if (!$res) {echo "\n

Fehler bei Name

\n";} echo "\n\t\n\t\n\t\t\n\t\t\n\t
"; // Sp. 1: Icon, Link zur Auskunft Person echo "\n\t"; echo "\n\t\tEIG"; echo "\n\t"; echo "\n\t

"; // Sp. 2: Rahmen if ($row = pg_fetch_array($res)) { $namzeil=$row["nachnameoderfirma"].", ".$row["vorname"]; $gebdat=$row["geburtsdatum"]; if ($gebdat != "") {$namzeil.= ", geb. ".$gebdat;} $best=$row["namensbestandteil"]; if ($best != "") {$namzeil.= ", ".$best;} echo htmlentities($namzeil, ENT_QUOTES, "UTF-8"); $namzeil=$row["plz"]." ".$row["ort_post"]; if (trim($namzeil) != "") {echo "\n\t
".htmlentities($namzeil, ENT_QUOTES, "UTF-8");} $namzeil=$row["strasse"]." ".$row["hausnummer"]; if (trim($namzeil) != "") {echo "\n\t
".htmlentities($namzeil, ENT_QUOTES, "UTF-8");} } echo "\n\t

"; return; } function getEigByName() { // 1 // Eigentuemer nach Name(-nsanfang) global $gkz, $gemeinde, $epsg, $name, $person, $gfilter; $linelimit=150; $arr = explode(",", $name); $name0 = trim($arr[0]); $name1 = trim($arr[1]); if(preg_match("/\*/",$name0)){ $match = trim(preg_replace("/\*/i","%", strtoupper($name0))); } else { $match = trim($name0)."%"; } if(preg_match("/\*/",$name1)){ $match1 = trim(preg_replace("/\*/i","%", strtoupper($name1))); } else { $match1 = trim($name1)."%"; } $sql ="SELECT p.nachnameoderfirma, p.vorname, p.gml_id FROM ax_person p "; if ($gfilter > 0) { $sql.="JOIN gemeinde_person g ON p.gml_id = g.person WHERE "; switch ($gfilter) { case 1: // Einzelwert $sql.="g.gemeinde=".$gemeinde." AND "; break; case 2: // Liste $sql.="g.gemeinde in (".$gemeinde.") AND "; break; } } else { $sql.="WHERE "; } if($match1 != '%'){ $sql.="nachnameoderfirma ILIKE $1 AND p.vorname ILIKE $2 "; $sql.="ORDER BY p.nachnameoderfirma, p.vorname LIMIT $3 ;"; $v=array($match, $match1, $linelimit); }else{ $sql.="nachnameoderfirma ILIKE $1 "; $sql.="ORDER BY p.nachnameoderfirma, p.vorname LIMIT $2 ;"; $v=array($match, $linelimit); } $res=pg_prepare("", $sql); $res=pg_execute("", $v); if (!$res) { echo "\n

Fehler bei Eigentümer

"; return; } $cnt = 0; while($row = pg_fetch_array($res)) { $nachname=$row["nachnameoderfirma"]; $vorname=$row["vorname"]; $persongml=$row["gml_id"]; zeile_person ($persongml, $nachname, $vorname); $cnt++; } if($cnt == 0){ echo "\n

Kein Eigentümer gefunden.

"; } elseif($cnt >= $linelimit) { // das Limit war zu knapp echo "\n

... und weitere

"; } elseif($cnt == 1){ // Eindeutig! $person = $persongml; } else { echo "\n

".$cnt." Eigentümer mit '".$name."'

"; // im Limit } return; } function getGBbyPerson() { // 2 // Grundbücher zur gewählten Person // Es wird in dieser Function nicht geprüft, ob die gefundenen Grundbücher auch Flurstücke // haben, die im gefilterten Bereich (Gemeinde) liegen. Es können daher Sackgassen entstehen, // also Grundbücher, die in der nächsten Stufe bei Filterung nicht zu Treffern führen. // Das Joinen bis zum FS unter Berücksichtigung von speziellen Buchungen ist zu aufwändig. // Dann kann entweder das FS gleich mit ausgegeben werden -> getGBuFSbyPerson. // Alternativ würde eine Hilfstabelle benötigt, in der im PostProcessing // das GB-zu-Gemeinde-Verhältnis vorbereitet wird. global $gkz, $gemeinde, $epsg, $name, $person, $blattgml, $debug, $bltbez, $bltblatt, $bltseite; $linelimit=150; familiensuche(); personendaten(); // Suche nach Grundbüchern der Person $sql ="SELECT gb.gml_id AS gml_g, gb.buchungsblattnummermitbuchstabenerweiterung as blatt, b.bezeichnung AS beznam "; $sql.="FROM alkis_beziehungen bpn "; $sql.="JOIN ax_namensnummer n ON bpn.beziehung_von=n.gml_id "; $sql.="JOIN alkis_beziehungen bng ON n.gml_id=bng.beziehung_von "; $sql.="JOIN ax_buchungsblatt gb ON bng.beziehung_zu=gb.gml_id "; $sql.="JOIN ax_buchungsblattbezirk b ON gb.land = b.land AND gb.bezirk = b.bezirk "; $sql.="WHERE bpn.beziehung_zu= $1 AND bpn.beziehungsart='benennt' AND bng.beziehungsart='istBestandteilVon' "; if ($bltbez.$bltblatt != "") { // Blättern, Fortsetzen bei ... $sql.="AND ((b.bezeichnung > '".$bltbez."') "; $sql.="OR (b.bezeichnung = '".$bltbez."' AND gb.buchungsblattnummermitbuchstabenerweiterung > '".$bltblatt."')) "; } $sql.="ORDER BY b.bezeichnung, gb.buchungsblattnummermitbuchstabenerweiterung LIMIT $2 ;"; if ($bltseite == "") { // Seite 1 $bltseite = 1; } else { // Folgeseite echo "\n

Teil ".$bltseite; } $v=array($person, $linelimit); $res=pg_prepare("", $sql); $res=pg_execute("", $v); if (!$res) { echo "\n

Fehler bei Grundbuch

"; return; } $cnt = 0; while($row = pg_fetch_array($res)) { $gml=$row["gml_g"]; $beznam=$row["beznam"]; $blatt=$row["blatt"]; zeile_blatt ($zgbbez, $beznam, $gml, $blatt, false, $person); $cnt++; } if($cnt == 0) { echo "\n

Kein Grundbuch zum Eigentümer

"; } elseif($cnt >= $linelimit) { echo "\n

".$cnt." Grundb. zum Eigent."; $nxtbltbez=urlencode($beznam); $nxtbltblatt=urlencode($blatt); $nxtbltseite=$bltseite + 1; echo "\n - weitere"; echo "

"; } elseif($cnt == 1) { // Eindeutig! $blattgml=$gml; // dann Stufe 3 gleich nachschieben } else { echo "\n

".$cnt." Grundbücher zum Eigentümer

"; } return; } function getFSbyGB($backlink) { // 3 // Flurstücke zum Grundbuch // Zu einem Grundbuch (gml_id als Parameter) werden alle darauf gebuchten Flurstücke gesucht. // Im ersten Schritt sind das direkt gebuchten Flurstücke. // Im zweiten Schritt wird gesucht nach Rechten einer Buchungstelle des durchsuchten Blattes an anderen // Buchungstellen. global $gkz, $gemeinde, $name, $person, $blattgml, $epsg, $gfilter, $debug; if($backlink) { // Erneuter Ansatz bei Person oder GB möglich. // Namen ermitteln $sql ="SELECT nachnameoderfirma, vorname FROM ax_person WHERE gml_id = $1 "; $v=array($person); $res=pg_prepare("", $sql); $res=pg_execute("", $v); if (!$res) {echo "\n

Fehler bei Eigentümer

";} $row = pg_fetch_array($res); // nur eine Zeile $nnam=htmlentities($row["nachnameoderfirma"], ENT_QUOTES, "UTF-8"); $vnam=htmlentities($row["vorname"], ENT_QUOTES, "UTF-8"); echo "\n\t
"; echo "\n\t\tEIG "; echo "\n\t"; echo $nnam.", ".$vnam."
"; echo "
"; // Grundbuch-Daten ermitteln $sql ="SELECT gb.gml_id AS gml_g, gb.buchungsblattnummermitbuchstabenerweiterung as blatt, b.bezirk, b.bezeichnung AS beznam "; $sql.="FROM ax_buchungsblatt gb JOIN ax_buchungsblattbezirk b ON gb.land=b.land AND gb.bezirk=b.bezirk "; $sql.="WHERE gb.gml_id= $1 ;"; $v=array($blattgml); $res=pg_prepare("", $sql); $res=pg_execute("", $v); if (!$res) {echo "\n

Fehler bei Grundbuch

";} $row = pg_fetch_array($res); // eine Zeile $gml=$row["gml_g"]; $bezirk=$row["bezirk"]; $beznam=$row["beznam"]; $blatt=$row["blatt"]; zeile_blatt ($bezirk, $beznam, $blattgml, $blatt, false, $person); } GB_Buchung_FS(200); // Blatt > Grundstück > Flurst. (max. 200)) return; } function getGBuFSbyPerson() { // 2 + 3 // Grundbücher UND Flurstücke zur gewählten Person // // Dies ist die Kombination von Stufe 2 (Grundbücher zur Person) und 3 (Flurstücke zum Grundbuch) // in einem einzelnen Schritt. Wenn auf Gemeinde gefiltert wird, dann können in Stufe 2 (noch ohne Filter) // auch Grundbücher gefunden werden, die dann auf Stufe 3 (mit Filter) keine FS liefern ("Sackgasse"!). // Wenn aber per JOIN "GB -> FS -> Gemarkung -> Gemeinde" geprüft wird, dann können // die Daten ja auch gleich ausgegeben werden. // Für Fälle in denen nicht nach Gemeinde gefiltert wird (z.B. ganzer Kreis) kann weiter // Stufe 2 und 3 nacheinander verwendet werden. Dies ist wahrscheinlich übersichtlicher, // weil "ungefiltert" in "2+3" zu lange Listen entstehen würden, die durchblättert werden müssen. global $gkz, $gemeinde, $epsg, $name, $person, $blattgml, $gfilter, $debug, $bltbez, $bltblatt, $bltbvnr, $bltseite, $bltrecht; $linelimit=80; // als Limit "Anzahl Flurstücke" in den beiden folgenden Abfragen // darf nun etwas knapper sein, weil man jetzt blättern kann familiensuche(); personendaten(); // Wenn das Limit überschritten wurde: zusätzliche Parameter "blt"=Blättern // $bltbez = Bezirk-Name // $bltblatt = BlattMitBuchstabe // $bltbvnr = lfd.Nr der Buchungsstelle // $bltseite = fortlaufende Seiten-Nr // $bltrecht = "nur"/"ohne" liefert nur den abgebrochene Teil der Auflistung // SQL-Bausteine vorbereiten // Direkte Buchungen suchen mit: $sql1 + $sqla1 + $sql2 // Sonderfälle suchen mit: $sql1 + $sqlz + $sqla2 + $sql2 // Baustein: SQL-Anfang fuer beide Varianten $sql1 ="SELECT gb.gml_id AS gml_g, gb.buchungsblattnummermitbuchstabenerweiterung as blatt, b.bezeichnung AS beznam, "; $sql1.="s1.laufendenummer AS lfd, f.gml_id, f.flurnummer, f.zaehler, f.nenner, f.gemeinde, ot.gemarkung, ot.gemarkungsname, "; if($epsg == "25832") { // Transform nicht notwendig $sql1.="st_x(st_centroid(f.wkb_geometry)) AS x, "; $sql1.="st_y(st_centroid(f.wkb_geometry)) AS y "; } else { $sql1.="st_x(st_transform(st_centroid(f.wkb_geometry), ".$epsg.")) AS x, "; $sql1.="st_y(st_transform(st_centroid(f.wkb_geometry), ".$epsg.")) AS y "; } $sql1.="FROM alkis_beziehungen bpn "; $sql1.="JOIN ax_namensnummer nn ON bpn.beziehung_von=nn.gml_id "; $sql1.="JOIN alkis_beziehungen bng ON nn.gml_id=bng.beziehung_von "; $sql1.="JOIN ax_buchungsblatt gb ON bng.beziehung_zu=gb.gml_id "; $sql1.="JOIN alkis_beziehungen vbg ON gb.gml_id=vbg.beziehung_zu "; $sql1.="JOIN ax_buchungsstelle s1 ON vbg.beziehung_von=s1.gml_id "; $sql1.="JOIN ax_buchungsblattbezirk b ON gb.land=b.land AND gb.bezirk=b.bezirk "; // quer-ab // Baustein: Zwischen-JOIN (nur bei zweiter Abfrage) $sqlz ="JOIN alkis_beziehungen vss ON vss.beziehung_von=s1.gml_id "; $sqlz.="JOIN ax_buchungsstelle s2 ON vss.beziehung_zu=s2.gml_id "; // Baustein: Auswahl 1 oder 2 $sqla1 ="JOIN alkis_beziehungen vfb ON s1.gml_id=vfb.beziehung_zu "; $sqla2 ="JOIN alkis_beziehungen vfb ON s2.gml_id=vfb.beziehung_zu "; // Baustein: SQL-Ende fuer beide Varianten $sql2.="JOIN ax_flurstueck f ON vfb.beziehung_von=f.gml_id "; $sql2.="JOIN pp_gemarkung ot ON f.land=ot.land AND f.gemarkungsnummer=ot.gemarkung "; // Ortsteil $sql2.="WHERE bpn.beziehung_zu= $1 AND bpn.beziehungsart='benennt' AND bng.beziehungsart='istBestandteilVon' "; $sql2.="AND vbg.beziehungsart='istBestandteilVon' AND vfb.beziehungsart='istGebucht' "; switch ($gfilter) { // Gemeinde-Filter case 1: // Einzelwert $sql2.="AND ot.gemeinde=".$gemeinde." "; break; case 2: // Liste $sql2.="AND ot.gemeinde in (".$gemeinde.") "; break; } $sql3 ="ORDER BY gb.bezirk, gb.buchungsblattnummermitbuchstabenerweiterung, cast(s1.laufendenummer AS integer), f.gemarkungsnummer, f.flurnummer, f.zaehler, f.nenner LIMIT $2 ;"; // Sortier-Problem: laufendenummer in varchar linksbündig // Die Bausteine in 2 Varianten kombinieren // Blättern mit folgenden Parametern: $bltbez, $bltblatt, $bltbvnr, $bltseite, $bltrecht if ($bltbez.$bltblatt.$bltbvnr != "") { // Blättern, Fortsetzen bei ... $bltwhere ="AND ((b.bezeichnung > '".$bltbez."') "; $bltwhere.="OR (b.bezeichnung = '".$bltbez."' AND gb.buchungsblattnummermitbuchstabenerweiterung > '".$bltblatt."') "; $bltwhere.="OR (b.bezeichnung = '".$bltbez."' AND gb.buchungsblattnummermitbuchstabenerweiterung = '".$bltblatt."' AND cast(s1.laufendenummer AS integer) >= ".$bltbvnr." )) "; } // Flurstücke in der angeblätterten BVNR werden ggf. wiederholt if ($bltseite == "") { // auf Seite 1 beide Teile ausgegeben $bltseite = 1; } else { // Folgegeseite: nur Teil 1 *oder* 2 echo "\n

Teil ".$bltseite." - "; switch ($bltrecht) { case "nur": echo "nur Rechte an .. Buchungen

"; break; case "ohne": echo "nur direkte Buchungen

"; break; default: echo "

"; break; } } // Fälle ohne "Rechte an" if ($bltrecht != "nur") { // "nur"/"ohne" liefert nur den abgebrochene Teil der Auflistung // Blatt Fehler bei Buchung und Flurstück.

"; return; } $zfs1=0; $gwgb=""; while($row = pg_fetch_array($res)) { $gb_gml=$row["gml_g"]; if ($gwgb != $gb_gml) { // Gruppierung Blatt (Grundbuch) $beznam=$row["beznam"]; $blatt=$row["blatt"]; zeile_blatt ($bezirk, $beznam, $gb_gml, $blatt, false, $person); $gwgb = $gb_gml; // Steuerg GW GB $gwbv = ""; // Steuerg GW BVNR } $bvnr=$row["lfd"]; if ($gwbv != $bvnr) { // Gruppierung Buchung (BVNR) $gwbv = $bvnr; zeile_buchung ($bsgml, $bvnr, "", false); } $fs_gml=$row["gml_id"]; $gmkg=$row["gemarkungsname"]; $flur=$row["flurnummer"]; $fskenn=$row["zaehler"]; if ($row["nenner"] != "") {$fskenn.="/".$row["nenner"];} // BruchNr $x=$row["x"]; $y=$row["y"]; zeile_flurstueck ($fs_gml, $fskenn, $x, $y, $gmkg, $flur ); $zfs1++; } if($zfs1 == 0) { if ($bltrecht == "ohne") {echo "\n

Keine direkte Buchung gefunden.

";} } elseif($zfs1 >= $linelimit) { // das Limit war zu knapp, das B l ä t t e r n anbieten echo "\n

".$zfs1." Flurstücke"; $nxtbltbez=urlencode($beznam); $nxtbltblatt=urlencode($blatt); $nxtbltseite=$bltseite + 1; echo "\n - weitere"; echo "

"; } elseif($zfs1 > 1) { // Meldung (Plural) ab 2 echo "\n

".$zfs1." Flurstücke zum Eigentümer

"; // im Limit } } if ($bltrecht == "" and $zfs1 > 0) { // beides echo "
"; // dann Trenner } // Fälle mit "Rechte an" if ($bltrecht != "ohne") { // "nur"/"ohne" liefert nur den abgebrochene Teil der Auflistung // Zweite Abfrage (Variante) aus den Bausteinen zusammen bauen // buchungsStelle2 < an < buchungsStelle1 $sql=$sql1.$sqlz.$sqla2.$sql2.$bltwhere.$sql3; // Rechte an $v=array($person, $linelimit); $res=pg_prepare("", $sql); $res=pg_execute("", $v); if (!$res) { echo "\n

Fehler bei Recht an Buchung.

"; return; } $zfs2=0; $gwgb=""; while($row = pg_fetch_array($res)) { $gb_gml=$row["gml_g"]; if ($gwgb != $gb_gml) { // Gruppierung Blatt (Grundbuch) $beznam=$row["beznam"]; $blatt=$row["blatt"]; zeile_blatt ($bezirk, $beznam, $gb_gml, $blatt, false, $person); $gwgb = $gb_gml; // Steuerg GW GB $gwbv = ""; // Steuerg GW BVNR } $bvnr=$row["lfd"]; if ($gwbv != $bvnr) { // Gruppierung Buchungs (BVNR) $gwbv = $bvnr; zeile_buchung ($bsgml, $bvnr, "", true); // Recht an ... } $fs_gml=$row["gml_id"]; $gmkg=$row["gemarkungsname"]; $flur=$row["flurnummer"]; $fskenn=$row["zaehler"]; if ($row["nenner"] != "") {$fskenn.="/".$row["nenner"];} $x=$row["x"]; $y=$row["y"]; zeile_flurstueck ($fs_gml, $fskenn, $x, $y, $gmkg, $flur); $zfs2++; } if($zfs2 == 0) { if ($zfs1 == 0 or $bltrecht == "nur") { // keine Meldung wenn schon in Teil 1 eine Ausgabe echo "\n

Keine Rechte an Buchungen.

"; } } elseif($zfs2 >= $linelimit) { // das Limit war zu knapp, das B l ä t t e r n anbieten echo "\n

".$zfs2." Rechte an Flurst."; $nxtbltbez=urlencode($beznam); $nxtbltblatt=urlencode($blatt); $nxtbltseite=$bltseite + 1; echo "\n - weitere"; echo "

"; } elseif($zfs2 > 1) { // ab 2 echo "\n

".$zfs2." Rechte an Flurst.

"; // im Limit } } // ENDE Fälle mit "Rechte an" return; } // =========== // Start hier! // =========== // Parameter: // 1. name = Suche nach Namensanfang oder -bestandteil. // 2. person = gml_id der Person -> Suche nach Grundbüchern // 3. gb = gml_id des Grundbuches -> Suche nach Flurstücken if(isset($epsg)) { $epsg = str_replace("EPSG:", "" , $_REQUEST["epsg"]); } else { $epsg=$gui_epsg; // aus Conf } if ($gemeinde == "") { $gfilter = 0; // Gemeinde ungefiltert } elseif(strpos($gemeinde, ",") === false) { $gfilter = 1; // Gemeinde Einzelwert } else { $gfilter = 2; // Gemeinde Filter-Liste } // Quo Vadis? if(isset($blattgml)) { // Flurstücke zum Grundbuch // Das Programm hat sich selbst verlinkt aus einer Liste der GB zu einem Eigentümer. // Wenn Parameter mitgegeben wurden, können diese für einen "Link zurück" verwendet werden. $trans="Flurstücke zum Grundbuch"; getFSbyGB(true); // mit BackLink } elseif(isset($person)) { // Grundbücher zur Person // Das Programm hat sich selbst verlinkt aus einer Liste der Personen zu einer Suchmaske. if ($debug >= 2) {echo "\n

Gemeinde-Filter-Steuerung = '".$gfilter."'

";} // Die Filtereinstellung beeinflusst die Such-Strategie: if ($gfilter == 0) { // Keine Filterung auf "Gemeinde": große Datenmenge $trans="Grundbücher zum Eigentümer"; getGBbyPerson(); // Also schrittweise erst mal Stufe 2 = Grundbücher zur Person suchen. if(isset($blattgml) ) { // Es wurde nur EIN Grundbuch zu der Person gefunden. $trans="1 Blatt zum Eigentümer"; getFSbyGB(false); // Dann dazu auch gleich die Stufe 3 hinterher, aber ohne Backlink. } } else { // mit Filter auf Gemeinde: weniger Daten? $trans="Grundb. und Flurst. zum Eigentümer"; getGBuFSbyPerson(); // Schritte 2+3 gleichzeitig, dabei Gemeinde-Filter auf Stufe 3 } } elseif(isset($name)) { // Suchbegriff aus Form: Suche nach Name $trans="Namensuche \"".$name."\""; getEigByName(); // Suchen nach Namensanfang if(isset($person)) { // genau EIN Treffer zum Namen if ($gfilter == 0) { $trans="Grundbücher zum Namen"; getGBbyPerson(); // Dann gleich das Grundbuch hinterher } else { $trans="Grdb. und Flst. zum Namen"; getGBuFSbyPerson(); // .. oder auch GB + FS } } } elseif ($debug >= 2) { echo "\n

Parameter?

"; // Programmfehler, soll nicht vorkommen } // Titel im Kopf anzeigen echo "\n"; ?>