Servus !
Ich habe von unserem Großhändler eine CSV die bei denen auf dem FTP Account liegt. Diese beinhaltet alle Relevanten Daten zu den Artikeln, die diese anbieten. Darunter natürlich auch den Preis. Warum auch immer, ist dieser mit einem Komma getrennt und schlimmer noch, die Tausender Bereiche mit einem Punkt.
z.b. 2.130,99
Um damit aber anständig arbeiten zu können, wäre es Hilfreich, diese Zahl schon beim Einlesen in die Datenbank zu ändern. Im Moment ist mein Preisfeld ein String. Zum rechnen total umständlich.
Ich nehme einfach mal ein Beispiel aus meiner Cronjob Datei, die schon vorhandene Preisliste aktualisiert, wo aber das selbe Problem gegeben ist. (hek = Preis)
Wie kann ich es schon beim eintragen in die Datenbank erreichen, das meine Zahlen richtig formatiert werden. Wenn ich in der Datenbank bereits das Feld als DOUBLE eingerichtet habe, muss die Änderrung zwangsläufig schon vorher passieren. Die über 10 MB große CSV Datei aber zu ändern kommt nicht in Frage. (Habe nur 30 Sek. Zeit für mein Cronjob)
LG Terra
Ich habe von unserem Großhändler eine CSV die bei denen auf dem FTP Account liegt. Diese beinhaltet alle Relevanten Daten zu den Artikeln, die diese anbieten. Darunter natürlich auch den Preis. Warum auch immer, ist dieser mit einem Komma getrennt und schlimmer noch, die Tausender Bereiche mit einem Punkt.
z.b. 2.130,99
Um damit aber anständig arbeiten zu können, wäre es Hilfreich, diese Zahl schon beim Einlesen in die Datenbank zu ändern. Im Moment ist mein Preisfeld ein String. Zum rechnen total umständlich.
Ich nehme einfach mal ein Beispiel aus meiner Cronjob Datei, die schon vorhandene Preisliste aktualisiert, wo aber das selbe Problem gegeben ist. (hek = Preis)
PHP-Code:
$source='ftp://...........liste.csv';
$uploadfile=$_SERVER['DOCUMENT_ROOT'].'/tmp/'.basename($source);
file_put_contents($uploadfile,file_get_contents($source)); //läd Datei auf den Server
$query_one = $DB->query("
TRUNCATE TABLE kc_shop_artikel_tmp
"); //leert Tabelle
$query_two = $DB->query("
LOAD DATA LOCAL INFILE '$uploadfile'
REPLACE INTO TABLE kc_shop_artikel_tmp
FIELDS TERMINATED BY '\t' IGNORE 1
LINES (artnr, hersteller_nr, bestand, hek)
"); //läd Datei in Datenbank
$query_three = $DB->query("
UPDATE $TABLE_ARTIKEL s LEFT JOIN kc_shop_artikel_tmp c
USING(artnr) SET s.bestand=c.bestand, s.hek=c.hek
"); //Updatet alle Änderrungen in Artikel-DB
unlink ($uploadfile); //löscht Temp-Datei
LG Terra

Kommentar