*/
/* 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.