Ciao a tutti, premetto di essere un principiante quindi scusate se scrivo qualche assurdità..
Ho un piccolo problema con l'importazione di un file CSV in MySQL tramite php, il file è così composto;
KERT;Stabilizzatore 180-270V 5,5 KVA;Art. con magazzino;ACCESSORI;ALIMENTATORI;pz;22; 1.400,00;;;;;;;;;;;;;;; 905,63;;;0;0;;1;1;0;0;0;0;0,49;28/12/2021;28/12/2021;28/10/2021;28/10/2021;16/11/2021; 905,63; 905,63; 1.400,00;Esaurito;
questa è una riga del csv.
Il codice per l'importazione è il seguente
Codice PHP:
public function import() {
$fieldseparator = ";";
$lineseparator = "\n";
$lines = 0;
$linearray = array();
$csv_file = $_FILES['fileToUpload']['tmp_name'];
$csvcontent = fread($file,$size);
fclose($file);
$stmt = $this->db->prepare("TRUNCATE TABLE tab_prodotti");
$stmt->execute();
foreach(explode($lineseparator,$csvcontent) as $line) {
$lines++;
if($lines>1) {
// PULISCO LE SINGOLE RIGHE
$line = trim($line," \t");
$line = str_replace("\r","",$line);
$line = str_replace("'","\'",$line);
$line = str_replace('"',"",$line);
$line = str_replace(",", ".", $line);
// FILTRO DEI NUMERI TOGLIENDO IL PUNTO E SOSTITUENDO LA VIRGOLA CON IL PUNTO
$linenumber = str_replace(".", "", $line);
$linenumber = str_replace(",", ".", $line);
$linenumbers = explode($fieldseparator,$linenumber);
//EXPLODE DELLA STRINGA
$linearray = explode($fieldseparator,$line);
$linemysql = implode("','",$linearray);
$codice = trim($linecodice[0]);
$descrizione = trim($linearray[1]);
$um = trim($linearray[5]);
$listino_1 = trim($linenumbers[7]);
$prezzo_fornitore = trim($linenumbers[22]);
if($codice!="" && $descrizione!="") {
$stmt = $this->db->prepare("INSERT INTO tab_prodotti (codice, descrizione, um, listino_1, prezzo_fornitore) VALUES (?, ?, ?, ?, ?)");
$stmt->bind_param('sssdd', $codice, $descrizione, $um, $listino_1, $prezzo_fornitore);
$stmt->execute();
}
funziona tutto perfettamente, ad eccezione del fatto che se trova un importo superiore a 999,99 dovrebbe rimuovere il punto e trasformare la virgola in un punto, ma non lo fa. Quindi mi trasforma 1.400,00 in 1.40.
Spero che qualcuno possa aiutarmi a capire cosa sbaglio. grazie!