Hallöchen!
Kurze Erklärung:
Ich bekomme eine CSV die Produktdaten enthält und mit denen muss halt ein Update oder ein Insert der Daten in die DB durchgeführt werden.
Für Testzwecke beschränke ich mich erstmal auf ein Update der ek_preise.
Ich habe bereits den Schritt fertig, in dem die CSV ausgewählt wird und auf dem Server gespeichert. Der Pfad auf dem Server wird in der Session gespeichert. So kann man die Datei holaden, sich den Inhalt angucken und dann sagen -> in die DB damit.
Der letzte Schritt funktioniert nicht. Und ich weiß einfach nicht warum.
Ich bin halt noch nicht sehr geübt in PHP. Bzw. bisher, wenn PHP, eher rein mit CMS und Webseiten zu tun gehabt.
Mein Quellcode:
Ich bekomme nur Dauerschleifen oder Fehlermeldungen wie:
Vor allem die Dauerschleife verstehe ich gar nicht...
Edit: Das replace von Punkt und Komma deswegen, weil die Preise mit Kommas getrennt sind, aber die DB will Punkte...
Kurze Erklärung:
Ich bekomme eine CSV die Produktdaten enthält und mit denen muss halt ein Update oder ein Insert der Daten in die DB durchgeführt werden.
Für Testzwecke beschränke ich mich erstmal auf ein Update der ek_preise.
Ich habe bereits den Schritt fertig, in dem die CSV ausgewählt wird und auf dem Server gespeichert. Der Pfad auf dem Server wird in der Session gespeichert. So kann man die Datei holaden, sich den Inhalt angucken und dann sagen -> in die DB damit.
Der letzte Schritt funktioniert nicht. Und ich weiß einfach nicht warum.
Ich bin halt noch nicht sehr geübt in PHP. Bzw. bisher, wenn PHP, eher rein mit CMS und Webseiten zu tun gehabt.
Mein Quellcode:
PHP:
public function csvUpload(){
try{
$ausgabe = '';
$pfad = $_SESSION['datei'];
$fp = fopen($pfad,'r');
$rows = 0;
$data = fgetcsv ($fp, 1000, ";");
array_shift($data);
$data2 = str_replace(",",".",$data[1]);
while ( $data2 !== FALSE ){
$pdoparams = array(
':ekpreis' => $data2[1],
':artnr' => $data2[0]
);
$sql = "UPDATE products SET ek_preis = :ekpreis WHERE products_model2 = :artnr";
$stmt = MyDB::getInstance()->prepare($sql);
$stmt->execute($pdoparams);
$rows++;
//for($c=0;$c<count($data);$c++) {}
}
$ausgabe = 'Anfrage ausgeführt. '.$rows.' Datensätze wurden aktualisiert';
fclose($fp);
}catch(Exception $e){
$ausgabe = 'Datei konnte nicht eingelesen werden!';
}
return $ausgabe;
}
Ich bekomme nur Dauerschleifen oder Fehlermeldungen wie:
Notice: Undefined variable: data2 in C:\xampp\htdocs\csv_handle.php on line 15
Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\csv_handle.php on line 15
Notice: Undefined variable: data2 in C:\xampp\htdocs\csv_handle.php on line 18
Vor allem die Dauerschleife verstehe ich gar nicht...
Edit: Das replace von Punkt und Komma deswegen, weil die Preise mit Kommas getrennt sind, aber die DB will Punkte...