*/ /* display help */ if ($_POST["ok"]=="Hilfe") { echo "
Die erste Zeile enthält keine Feldnamen der Daten.
"; echo "Die Datenfelder haben eine feste Breite.

"; echo "Die Daten können hier bezogen werden:
"; echo ""; echo "http://www.bundesbank.de/zahlungsverkehr/zahlungsverkehr_bankleitzahlen_download.php"; exit(0); } else if ($_POST) { function ende($nr) { echo "Abbruch: $nr
"; echo "Fehlende oder falsche Daten."; exit(1); } function l2u($str) { return iconv("ISO-8859-1", "UTF-8",$str); } require ("import_lib.php"); if (!$_SESSION["db"]) { $conffile="../config/authentication.pl"; if (!is_file($conffile)) { ende(4); } if (!anmelden()) ende(5); } /* get DB instance */ $db=$_SESSION["db"]; $test=$_POST["test"]; clearstatcache (); /* no data? */ if (empty($_FILES["Datei"]["name"])) ende (2); /* copy file */ if (!move_uploaded_file($_FILES["Datei"]["tmp_name"],"blz.txt")) { print_r($_FILES); echo $_FILES["Datei"]["tmp_name"]; echo "Upload von Datei fehlerhaft."; echo $_FILES["Datei"]["error"], "
"; ende (2); } /* check if file is really there */ if (!file_exists("blz.txt")) ende(3); $sqlins="INSERT INTO blz_data (blz,fuehrend,bezeichnung,plz,ort,kurzbez,pan,bic,pzbm,nummer,aekz,bl,folgeblz) "; $sqlins.="VALUES ('%s','%s','%s','%s','%s','%s','%s','%s','%s',%d,'%s','%s','%s')"; $teststr="%s%s%s%s%s%s%s"; $teststr.="%s%s%d%s%s%s\n"; $sqldel="delete from blz_data"; $ok="true"; $cnt=0; $f=fopen("blz.txt","r"); if ($test) echo "Testdurchlauf
\n"; $i=0; $start=time(); $rs = $db->getAll("SELECT current_setting('server_encoding')"); $srvencoding = $rs[0]['current_setting']; $rs = $db->getAll("SELECT current_setting('client_encoding')"); $cliencoding = $rs[0]['current_setting']; echo "SRV: $srvencoding - - CLI: $cliencoding
"; if ($f) { //Cliententcoding auf Latin: if (!$test) { $rc=$db->query("BEGIN"); if ($cliencoding=="UTF8") $db->query("SET CLIENT_ENCODING TO 'latin-9'"); }; if (!$test) $rc=$db->query($sqldel); while (($zeile=fgets($f,256)) != FALSE) { $cnt++; if (!$test){ //Datenfile ist immer Latin!! //zwei Möglichkeiten der Zeichenwandlung. Was ist besser?? //Client nicht umgestellt, Zeichen wandeln /*$sql=sprintf($sqlins,substr($zeile,0,8),substr($zeile,8,1),l2u(substr($zeile,9,58)),substr($zeile,67,5), l2u(substr($zeile,72,35)),l2u(substr($zeile,107,27)),substr($zeile,134,5),substr($zeile,139,11), substr($zeile,150,2),substr($zeile,152,6),substr($zeile,158,1),substr($zeile,159,1), substr($zeile,160,8));*/ //Client umgestellt + und auch bei nicht UTF-Client: $sql=sprintf($sqlins,substr($zeile,0,8),substr($zeile,8,1),substr($zeile,9,58),substr($zeile,67,5), substr($zeile,72,35),substr($zeile,107,27),substr($zeile,134,5),substr($zeile,139,11), substr($zeile,150,2),substr($zeile,152,6),substr($zeile,158,1),substr($zeile,159,1), substr($zeile,160,8)); $rc=$db->query($sql); if(DB::isError($rc)) { echo $sql."
";
					echo $rc->getMessage()."

"; $ok=false; break; } if ($cnt % 10 == 0) { if ($cnt % 1000 == 0) { $x=time()-$start; echo sprintf("%dsec %6d
",$x,$cnt); } else if ($cnt % 100 == 0) { echo "!"; } else { echo '.'; } flush(); } } else { echo sprintf($teststr,substr($zeile,0,8),substr($zeile,8,1),l2u(substr($zeile,9,58)),substr($zeile,67,5), l2u(substr($zeile,72,35)),l2u(substr($zeile,107,27)),substr($zeile,134,5),substr($zeile,139,11), substr($zeile,150,2),substr($zeile,152,6),substr($zeile,158,1),substr($zeile,159,1), substr($zeile,160,8)); $rc=true; } if (!$rc) { $ok=false; break; } $i++; } if ($ok) { if (!$test) $rc=$db->query("COMMIT"); echo "
$i Daten erfolgreich importierti
"; if ($cliencoding=="UTF8") $db->query("SET CLIENT_ENCODING TO 'UTF8'"); $stop=time(); echo $stop-$start." Sekunden"; } else { if (!$test) $rc=$db->query("ROLLBACK"); echo "Fehler in Zeile: ".$i."
"; echo $sql."
"; ende(6); } } else { ende(4); } echo "

Fertig. $i Banken importiert."; } else { ?>

BLZ-Import für die ERP


Die erste Zeile enthält keine Feldnamen der Daten.
Die Datenfelder haben eine feste Breite.

Die Daten können hier bezogen werden:
http://www.bundesbank.de/zahlungsverkehr/zahlungsverkehr_bankleitzahlen_download.php

Das File vorher nicht auf UTF8 wandeln!

Achtung!! Die bestehenden BLZ-Daten werden zunächst gelöscht.

Testja
Daten