[PHP] Aggiornare DB tramite UPLOAD file .csv

ciao
si, ma non vedo come leggi i dati cioè come ricavi 'record1' ecc... cioè i vari valori che devi inserire, ti mi hai chiesto come mettere virgole e apici, ora per caspirlo devo sapere come è fatto il css perchè se è così
dato 1
dato 2
ecc...sino a 52
è una cosa se invece è
uno 1; uno 2; .... uno52
due 1; due 2; .... due52
ecc.. sino a 6000
è un'altra
 
ecco il mio csv,,,
Codice:
DATO1;DATO2;DATO3;DATO4;DATO5;DATO6;DATO7;DATO8;DATO9;DATO10;DATO11;DATO12;DATO13;DATO14;DATO15;DATO16;DATO17;DATO18;DATO19;DATO20;DATO21;DATO22;DATO23;DATO24;DATO25;DATO26;DATO27;DATO28;DATO29;DATO30;DATO31;DATO32;DATO33;DATO34;DATO35;DATO36;DATO37;DATO38;DATO39;DATO40;DATO41;DATO42;DATO43;DATO44;DATO45;DATO46;DATO47;DATO48;DATO49;DATO50;DATO51;DATO52
1;UGOLONE;1;UGOLONE;MOD2;E3U;3;550000X058390;0X058390;UGOLONE;;N;217174717;27/10/2016;10:03:42;31/10/2016;11:07:34;;;UGOLONE;UGOLONE;1000;ITALY;UGOLONE;UGOLONE;8249;UGOLONE;675;GRIGIO ARDESIA MIC;1187;;0;;;;;;;;;;;;;;;;;;S-VIL.D.006;2;UGOLONE
1;UGOLONE;32;UGOLONE;MOD4;93;4;20000J669855;0J669855;UGOLONE;;N;;21/09/2016;00:00:00;25/11/2016;08:28:20;15/11/2016;05:42:25;UGOLONE;UGOLONE;1000;ITALY;UGOLONE;UGOLONE;1478;UGOLONE;687;BLU;902;;;;;;;1472950;1470795;UGOLONE;18:26:34;Strada;UGOLONE;;;;;;;;N-AVA.O-BX.1;5;UGOLONE
1;UGOLONE;1;UGOLONE;MOD6;E3B;3;50000X057060;0X057060;UGOLONE;;N;217233496;19/09/2016;16:43:19;23/11/2016;16:27:04;;;UGOLONE;UGOLONE;3488;MALTA-AL;UGOLONE;UGOLONE;6068;UGOLONE;268;BIANCO PASTELLO;1171;;0;;;;;1468769;1468769;UGOLONE;13:29:48;Strada;UGOLONE;;;;;;305;UGOLONE;;5;UGOLONE
1;UGOLONE;17;UGOLONE;MOD8;A08;0;F6EK600110568;110568;UGOLONE;;N;;23/08/2016;00:00:00;19/10/2016;10:45:43;;;UGOLONE;UGOLONE;1000;ITALY;UGOLONE;UGOLONE;8246;UGOLONE;162;RED SOLID;1183;;;;;;;;;UGOLONE;;;;;;;;;;;N-AVA.D-BX.5-MA;1;UGOLONE
 
Ultima modifica:
ho ripreso la gestione del csv da un mio script, è simile a quella di Borgo,
vedi se completando lo script ti può risolvere
PHP:
// qui connessione al db

$handle = fopen($file, "r");

$sql="INSERT INTO completo (
 DATO1  ,DATO2  ,DATO3  ,DATO4  ,DATO5  ,DATO6  ,DATO7  ,DATO8  ,DATO9  ,DATO10
,DATO11 ,DATO12 ,DATO13 ,DATO14 ,DATO15 ,DATO16 ,DATO17 ,DATO18 ,DATO19 ,DATO20
,DATO21 ,DATO22 ,DATO23 ,DATO24 ,DATO25 ,DATO26 ,DATO27 ,DATO28 ,DATO29 ,DATO30
,DATO31 ,DATO32 ,DATO33 ,DATO34 ,DATO35 ,DATO36 ,DATO37 ,DATO38 ,DATO39 ,DATO40
,DATO41 ,DATO42 ,DATO43 ,DATO44 ,DATO45 ,DATO46 ,DATO47 ,DATO48 ,DATO49 ,DATO50
,DATO51 ,DATO52
) VALUE (";

while( !feof($handle) )
    {
    $row  = fgets($handle);
    $col  = explode(";", $row);
    $Lcol = count($col);

    $q = $sql;
    $i = 1;
    foreach($col as $key => $val)
        {
        $q . = "'".addslashes($val)."'".( $i<$Lcol ? "," : ")" );
        $i++
        }
// var_dump($q); echo "<br />"; // con un un esempio di 5 righe per vedere la insert

// qui scrittura nel db
    }

fclose($handle);

// qui chiusura db
ps, ovvio che nei valori non può esserci il tag di separazione ";"
 
questo lo script provato con il tuo esempio,
PHP:
<?php
$file = "testo.csv";

// qui connessione al db

$handle = fopen($file, "r");

$sql="INSERT INTO completo (
 DATO1  ,DATO2  ,DATO3  ,DATO4  ,DATO5  ,DATO6  ,DATO7  ,DATO8  ,DATO9  ,DATO10
,DATO11 ,DATO12 ,DATO13 ,DATO14 ,DATO15 ,DATO16 ,DATO17 ,DATO18 ,DATO19 ,DATO20
,DATO21 ,DATO22 ,DATO23 ,DATO24 ,DATO25 ,DATO26 ,DATO27 ,DATO28 ,DATO29 ,DATO30
,DATO31 ,DATO32 ,DATO33 ,DATO34 ,DATO35 ,DATO36 ,DATO37 ,DATO38 ,DATO39 ,DATO40
,DATO41 ,DATO42 ,DATO43 ,DATO44 ,DATO45 ,DATO46 ,DATO47 ,DATO48 ,DATO49 ,DATO50
,DATO51 ,DATO52
) VALUE (";

$Lcol = 0;
while( !feof($handle) )
{
    $row  = fgets($handle);
    $col  = explode(";", $row);

    if ($Lcol == 0) $Lcol = count($col);
    else
    {
        $q = $sql;
        $i = 1;
        foreach($col as $key => $val)
        {
            $q .= "'".addslashes($val)."'".( $i<$Lcol ? "," : ")" );
            $i++;
        }
        if ( $i > $Lcol )
        {
            var_dump($q); echo "<br /> <br />";

            // qui scrittura nel db
        }
    }
}

fclose($handle);

// qui chiusura db
?>
questo il risultato
PHP:
string(804) "INSERT INTO completo ( DATO1 ,DATO2 ,DATO3 ,DATO4 ,DATO5 ,DATO6 ,DATO7 ,DATO8 ,DATO9 ,DATO10 ,DATO11 ,DATO12 ,DATO13 ,DATO14 ,DATO15 ,DATO16 ,DATO17 ,DATO18 ,DATO19 ,DATO20 ,DATO21 ,DATO22 ,DATO23 ,DATO24 ,DATO25 ,DATO26 ,DATO27 ,DATO28 ,DATO29 ,DATO30 ,DATO31 ,DATO32 ,DATO33 ,DATO34 ,DATO35 ,DATO36 ,DATO37 ,DATO38 ,DATO39 ,DATO40 ,DATO41 ,DATO42 ,DATO43 ,DATO44 ,DATO45 ,DATO46 ,DATO47 ,DATO48 ,DATO49 ,DATO50 ,DATO51 ,DATO52 ) VALUE ('1','UGOLONE','1','UGOLONE','MOD2','E3U','3','550000X058390','0X058390','UGOLONE','','N','217174717','27/10/2016','10:03:42','31/10/2016','11:07:34','','','UGOLONE','UGOLONE','1000','ITALY','UGOLONE','UGOLONE','8249','UGOLONE','675','GRIGIO ARDESIA MIC','1187','','0','','','','','','','','','','','','','','','','','','S-VIL.D.006','2','UGOLONE ')"

string(838) "INSERT INTO completo ( DATO1 ,DATO2 ,DATO3 ,DATO4 ,DATO5 ,DATO6 ,DATO7 ,DATO8 ,DATO9 ,DATO10 ,DATO11 ,DATO12 ,DATO13 ,DATO14 ,DATO15 ,DATO16 ,DATO17 ,DATO18 ,DATO19 ,DATO20 ,DATO21 ,DATO22 ,DATO23 ,DATO24 ,DATO25 ,DATO26 ,DATO27 ,DATO28 ,DATO29 ,DATO30 ,DATO31 ,DATO32 ,DATO33 ,DATO34 ,DATO35 ,DATO36 ,DATO37 ,DATO38 ,DATO39 ,DATO40 ,DATO41 ,DATO42 ,DATO43 ,DATO44 ,DATO45 ,DATO46 ,DATO47 ,DATO48 ,DATO49 ,DATO50 ,DATO51 ,DATO52 ) VALUE ('1','UGOLONE','32','UGOLONE','MOD4','93','4','20000J669855','0J669855','UGOLONE','','N','','21/09/2016','00:00:00','25/11/2016','08:28:20','15/11/2016','05:42:25','UGOLONE','UGOLONE','1000','ITALY','UGOLONE','UGOLONE','1478','UGOLONE','687','BLU','902','','','','','','','1472950','1470795','UGOLONE','18:26:34','Strada','UGOLONE','','','','','','','','N-AVA.O-BX.1','5','UGOLONE ')"

string(844) "INSERT INTO completo ( DATO1 ,DATO2 ,DATO3 ,DATO4 ,DATO5 ,DATO6 ,DATO7 ,DATO8 ,DATO9 ,DATO10 ,DATO11 ,DATO12 ,DATO13 ,DATO14 ,DATO15 ,DATO16 ,DATO17 ,DATO18 ,DATO19 ,DATO20 ,DATO21 ,DATO22 ,DATO23 ,DATO24 ,DATO25 ,DATO26 ,DATO27 ,DATO28 ,DATO29 ,DATO30 ,DATO31 ,DATO32 ,DATO33 ,DATO34 ,DATO35 ,DATO36 ,DATO37 ,DATO38 ,DATO39 ,DATO40 ,DATO41 ,DATO42 ,DATO43 ,DATO44 ,DATO45 ,DATO46 ,DATO47 ,DATO48 ,DATO49 ,DATO50 ,DATO51 ,DATO52 ) VALUE ('1','UGOLONE','1','UGOLONE','MOD6','E3B','3','50000X057060','0X057060','UGOLONE','','N','217233496','19/09/2016','16:43:19','23/11/2016','16:27:04','','','UGOLONE','UGOLONE','3488','MALTA-AL','UGOLONE','UGOLONE','6068','UGOLONE','268','BIANCO PASTELLO','1171','','0','','','','','1468769','1468769','UGOLONE','13:29:48','Strada','UGOLONE','','','','','','305','UGOLONE','','5','UGOLONE ')"

string(795) "INSERT INTO completo ( DATO1 ,DATO2 ,DATO3 ,DATO4 ,DATO5 ,DATO6 ,DATO7 ,DATO8 ,DATO9 ,DATO10 ,DATO11 ,DATO12 ,DATO13 ,DATO14 ,DATO15 ,DATO16 ,DATO17 ,DATO18 ,DATO19 ,DATO20 ,DATO21 ,DATO22 ,DATO23 ,DATO24 ,DATO25 ,DATO26 ,DATO27 ,DATO28 ,DATO29 ,DATO30 ,DATO31 ,DATO32 ,DATO33 ,DATO34 ,DATO35 ,DATO36 ,DATO37 ,DATO38 ,DATO39 ,DATO40 ,DATO41 ,DATO42 ,DATO43 ,DATO44 ,DATO45 ,DATO46 ,DATO47 ,DATO48 ,DATO49 ,DATO50 ,DATO51 ,DATO52 ) VALUE ('1','UGOLONE','17','UGOLONE','MOD8','A08','0','F6EK600110568','110568','UGOLONE','','N','','23/08/2016','00:00:00','19/10/2016','10:45:43','','','UGOLONE','UGOLONE','1000','ITALY','UGOLONE','UGOLONE','8246','UGOLONE','162','RED SOLID','1183','','','','','','','','','UGOLONE','','','','','','','','','','','N-AVA.D-BX.5-MA','1','UGOLONE ')"
 
Questo funziona,inserisce i dati perfettamente
quindi ho copiato le righe che interessano il db,

PHP:
// qui connessione al db, sostituisci con

require 'config.php';
require 'connect.php';


// qui scrittura nel db, sostituisci con

$result = mysql_query($q);
if (!$result)
{
   die("Errore nella query $query : " . mysql_error());
}


// qui chiusura db, sostituisci con

mysql_close();

la riga con var_dump puoi commentarla
 
Mi da errore:
Questo lo script completo:
Codice:
<?php
require 'config.php';
require 'connect.php';

$file = "ok.csv";



$handle = fopen($file, "r");

$sql="INSERT INTO completo (
 DATO1  ,DATO2  ,DATO3  ,DATO4  ,DATO5  ,DATO6  ,DATO7  ,DATO8  ,DATO9  ,DATO10
,DATO11 ,DATO12 ,DATO13 ,DATO14 ,DATO15 ,DATO16 ,DATO17 ,DATO18 ,DATO19 ,DATO20
,DATO21 ,DATO22 ,DATO23 ,DATO24 ,DATO25 ,DATO26 ,DATO27 ,DATO28 ,DATO29 ,DATO30
,DATO31 ,DATO32 ,DATO33 ,DATO34 ,DATO35 ,DATO36 ,DATO37 ,DATO38 ,DATO39 ,DATO40
,DATO41 ,DATO42 ,DATO43 ,DATO44 ,DATO45 ,DATO46 ,DATO47 ,DATO48 ,DATO49 ,DATO50
,DATO51 ,DATO52
) VALUE (";

$Lcol = 0;
while( !feof($handle) )
{
    $row  = fgets($handle);
    $col  = explode(";", $row);

    if ($Lcol == 0) $Lcol = count($col);
    else
    {
        $q = $sql;
        $i = 1;
        foreach($col as $key => $val)
        {
            $q .= "'".addslashes($val)."'".( $i<$Lcol ? "," : ")" );
            $i++;
        }
        if ( $i > $Lcol )
        {
            var_dump($q); echo "<br /> <br />";

            // qui scrittura nel db
            $result = mysql_query($q);
if (!$result)
{
   die("Errore nella query $query : " . mysql_error());
}


// qui chiusura db, sostituisci con

mysql_close();
        }
    }
}

fclose($handle);

// qui chiusura db
?>

Ma perche'?Cavolo....
 
ho guardato il tuo primo post ed ho visto che non hai fatto nessuna differenza tra le varie colonne del db, trattandole tutte come stringhe di testo, in realtà alcune sono definite come campi numerici nel db e probabilmente non accettano il valore "null" come invece si trova nell'undicesimo campo della prima riga del tuo esempio

dovresti quindi identificare quali sono le colonne definite come numeri in modo da gestirle correttamente,
attendo post
 
hai posizionato male la chiusura del db, ti riporto lo script completo
PHP:
<?php
$file = "ok.csv";

require 'config.php';
require 'connect.php';

$handle = fopen($file, "r");

$sql="INSERT INTO completo (
 DATO1  ,DATO2  ,DATO3  ,DATO4  ,DATO5  ,DATO6  ,DATO7  ,DATO8  ,DATO9  ,DATO10
,DATO11 ,DATO12 ,DATO13 ,DATO14 ,DATO15 ,DATO16 ,DATO17 ,DATO18 ,DATO19 ,DATO20
,DATO21 ,DATO22 ,DATO23 ,DATO24 ,DATO25 ,DATO26 ,DATO27 ,DATO28 ,DATO29 ,DATO30
,DATO31 ,DATO32 ,DATO33 ,DATO34 ,DATO35 ,DATO36 ,DATO37 ,DATO38 ,DATO39 ,DATO40
,DATO41 ,DATO42 ,DATO43 ,DATO44 ,DATO45 ,DATO46 ,DATO47 ,DATO48 ,DATO49 ,DATO50
,DATO51 ,DATO52
) VALUE (";

$Lcol = 0;
while( !feof($handle) )
{
    $row  = fgets($handle);
    $col  = explode(";", $row);

    if ($Lcol == 0) $Lcol = count($col);
    else
    {
        $q = $sql;
        $i = 1;
        foreach($col as $key => $val)
        {
            $q .= "'".addslashes($val)."'".( $i<$Lcol ? "," : ")" );
            $i++;
        }
        if ( $i > $Lcol )
        {
            // var_dump($q); echo "<br /> <br />";

            $result = mysql_query($q);
            if (!$result)
            {
                die("Errore nella query $query : " . mysql_error());
            }
        }
    }
}

fclose($handle);

mysql_close();
?>
 
ho guardato il tuo primo post ed ho visto che non hai fatto nessuna differenza tra le varie colonne del db, trattandole tutte come stringhe di testo, in realtà alcune sono definite come campi numerici nel db e probabilmente non accettano il valore "null" come invece si trova nell'undicesimo campo della prima riga del tuo esempio

dovresti quindi identificare quali sono le colonne definite come numeri in modo da gestirle correttamente,
attendo post
Si in effetti ci avevo pensato anche io... alcuni valori riportano NULL, ho notato che ti da' errore solo se gli apici risultano vuoti.
Io non sono capace ...ma in pratica ci vorrebbe uno scipt PHP che dicesse:
se in un qualsiasi record trovi appunto ,'NULL',non inserire apici.
L'errore lo da solo se lo racchiude tra i 2 apici.
No posso definire quali siano i campi che vengono resttuiti VUOTI perche' ad ogni aggiornamento del mio file, appunto i NULL cambiano.
Puoi tradurmi tu o chiunque altro tutto questo in PHP?
 
Ultima modifica:
tutto dipende da come sono definiti i campi all'interno del db, se tu riuscissi a stampare le definizioni della tabella "completo", vi sarebbero indicati i campi numerici

è possibile sostituire tutti i null con 0 (zero) indipendentemente dalla colonna, ma ciò potrebbe inserire il valore zero nei campi testo che dovrebbero rimanere "null"

non è possibile eliminare i doppi apici ma è possibile sostituirli con zero (salvo quanto detto sopra)
PHP:
        foreach($col as $key => $val)
        {
            if ( empty($val) ) $val = 0;  // riga da inserire

            $q .= "'".addslashes($val)."'".( $i<$Lcol ? "," : ")" );
con l'elenco dei campi numerici (lista dal db) si può agire in modo mirato.

ps, se vuoi fare una prova, ora il campo sarà '0', può essere che gli apici non disturbino
 
Ultima modifica:
Se ti puo aiutare?..

Codice:
CREATE TABLE IF NOT EXISTS `completo` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `DATO1` int(11) DEFAULT NULL,
  `DATO2` varchar(255) DEFAULT NULL,
  `DATO3` int(11) DEFAULT NULL,
  `DATO4` varchar(255) DEFAULT NULL,
  `DATO5` int(11) DEFAULT NULL,
  `DATO6` varchar(255) DEFAULT NULL,
  `DATO7` int(11) DEFAULT NULL,
  `DATO8` varchar(255) DEFAULT NULL,
  `DATO9` varchar(255) DEFAULT NULL,
  `DATO10` varchar(255) DEFAULT NULL,
  `DATO11` int(11) DEFAULT NULL,
  `DATO12` varchar(255) DEFAULT NULL,
  `DATO13` int(11) DEFAULT NULL,
  `DATO14` varchar(255) DEFAULT NULL,
  `DATO15` varchar(255) DEFAULT NULL,
  `DATO16` varchar(255) DEFAULT NULL,
  `DATO17` varchar(255) DEFAULT NULL,
  `DATO18` varchar(255) DEFAULT NULL,
  `DATO19` varchar(255) DEFAULT NULL,
  `DATO20` int(11) DEFAULT NULL,
  `DATO21` varchar(255) DEFAULT NULL,
  `DATO22` int(11) DEFAULT NULL,
  `DATO23` varchar(255) DEFAULT NULL,
  `DATO24` varchar(255) DEFAULT NULL,
  `DATO25` varchar(255) DEFAULT NULL,
  `DATO26` int(11) DEFAULT NULL,
  `DATO27` varchar(255) DEFAULT NULL,
  `DATO28` int(11) DEFAULT NULL,
  `DATO29` varchar(255) DEFAULT NULL,
  `DATO30` int(11) DEFAULT NULL,
  `DATO31` int(11) DEFAULT NULL,
  `DATO32` int(11) DEFAULT NULL,
  `DATO33` float DEFAULT NULL,
  `DATO34` int(11) DEFAULT NULL,
  `DATO35` int(11) DEFAULT NULL,
  `DATO36` int(11) DEFAULT NULL,
  `DATO37` int(11) DEFAULT NULL,
  `DATO38` int(11) DEFAULT NULL,
  `DATO39` varchar(255) DEFAULT NULL,
  `DATO40` varchar(255) DEFAULT NULL,
  `DATO41` varchar(255) DEFAULT NULL,
  `DATO42` int(11) DEFAULT NULL,
  `DATO43` int(11) DEFAULT NULL,
  `DATO44` int(11) DEFAULT NULL,
  `DATO45` int(11) DEFAULT NULL,
  `DATO46` int(11) DEFAULT NULL,
  `DATO47` int(11) DEFAULT NULL,
  `DATO48` int(11) DEFAULT NULL,
  `DATO49` varchar(255) DEFAULT NULL,
  `DATO50` varchar(255) DEFAULT NULL,
  `DATO51` int(11) DEFAULT NULL,
  `DATO52` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=9 ;
 
tutto dipende da come sono definiti i campi all'interno del db, se tu riuscissi a stampare le definizioni della tabella "completo", vi sarebbero indicati i campi numerici

è possibile sostituire tutti i null con 0 (zero) indipendentemente dalla colonna, ma ciò potrebbe inserire il valore zero nei campi testo che dovrebbero rimanere "null"

non è possibile eliminare i doppi apici ma è possibile sostituirli con zero (salvo quanto detto sopra)
PHP:
        foreach($col as $key => $val)
        {
            if ( empty($val) ) $val = 0;  // riga da inserire

            $q .= "'".addslashes($val)."'".( $i<$Lcol ? "," : ")" );
con l'elenco dei campi numerici (lista dal db) si può agire in modo mirato.

ps, se vuoi fare una prova, ora il campo sarà '0', può essere che gli apici non disturbino
Cosi mi restituisce questo errore ma ha inserito 8 righe..
Errore nella query : Data truncated for column 'DATO20' at row 1
 
ti riposto lo script modificato, ma
controlla il DATO5 non è numerico, ho tolto il "MOD"
per il campo float potrebbero esserci problemi se contiene il punto oppure la virgola o viceversa (dipende dalla configurazione del db)
PHP:
<?php
$file = "ok.csv";

require 'config.php';
require 'connect.php';

$handle = fopen($file, "r");

$numeri =array(1, 3, 5, 7, 11, 13, 20, 22, 26, 28, 30, 31, 32, 33, 34, 35, 36, 37, 38, 42, 43, 44, 45, 46, 47, 48, 51);

$sql="INSERT INTO completo (
 DATO1  ,DATO2  ,DATO3  ,DATO4  ,DATO5  ,DATO6  ,DATO7  ,DATO8  ,DATO9  ,DATO10
,DATO11 ,DATO12 ,DATO13 ,DATO14 ,DATO15 ,DATO16 ,DATO17 ,DATO18 ,DATO19 ,DATO20
,DATO21 ,DATO22 ,DATO23 ,DATO24 ,DATO25 ,DATO26 ,DATO27 ,DATO28 ,DATO29 ,DATO30
,DATO31 ,DATO32 ,DATO33 ,DATO34 ,DATO35 ,DATO36 ,DATO37 ,DATO38 ,DATO39 ,DATO40
,DATO41 ,DATO42 ,DATO43 ,DATO44 ,DATO45 ,DATO46 ,DATO47 ,DATO48 ,DATO49 ,DATO50
,DATO51 ,DATO52
) VALUE (";

$Lcol = 0;
while( !feof($handle) )
{
    $row  = fgets($handle);
    $col  = explode(";", $row);

    if ($Lcol == 0) $Lcol = count($col);
    else
    {
        $q = $sql;
        $i = 1;
        foreach($col as $key => $val)
        {
            if ( $i == 5 ) $val = str_replace("MOD", "", $val);

            if ( !in_array($i, $numeri) ) $val = "'".addslashes($val)."'";
            else  if ( empty($val) )      $val = 0;

            $q .= $val.( $i<$Lcol ? "," : ")" );
            $i++;
        }
        if ( $i > $Lcol )
        {
            var_dump($q); echo "<br /> <br />";

            $result = mysql_query($q);
            if (!$result)
            {
                die("Errore nella query : " . mysql_error() . "<br />" . $query);
            }
        }
    }
}

fclose($handle);

mysql_close();
?>

scusa ho modificato per una dimenticanza
 
inserisce solo 8 righe su 6000...che peccato...ti sto facendo perdere tempo..
in quello prima di modificarlo... 16 righe
Ti confermo pero' che il DATO 5 e' solo numerico
 
ciao
intanto l'errore, se il valore è un numero intero non va messo tra gli apici
comunque ora do un occhio poi spero di saperti dire
faccio una prova con l'esempio di csv che hai postato
 
Un GRAZIEEE GRANDISSIMO a Borgo Italia e Marino51 ...
Dopo aver sostituito in VARCHAR le definizioni del DB posso dire finalmente che ho
RISOLTOO!.
Siete dei grandi entrambi ,Grazie ancora.
Tutte le 6000 righe iserite in TABLE !
Alla prox
 
ciao
prova questo script usando la funzione file che è meglio, ti ho lasciato i var_dump (e i <pre>) per seguire come lavora e se lavora bene, poi se va bene li togli, ho usato lo spezzone di csv che hai postato
prova così poi quardo cosa riesco a fare per gli interi (che però dovrebbe pensarci mysql a fare il cast)
PHP:
<?php
echo "<pre>";
//dati di connessione
$file =file("file_csv.csv");
var_dump($file);
/*ottengo
array(6) {
  [0]=>string(356) "DATO1;DATO2;DATO3;DATO4;DATO5;DATO6;DATO7;DATO8;DATO9;DATO10;DATO11;DATO12;DATO13;DATO14;DATO15;DATO16;DATO17;DATO18;DATO19;DATO20;DATO21;DATO22;DATO23;DATO24;DATO25;DATO26;DATO27;DATO28;DATO29;DATO30;DATO31;DATO32;DATO33;DATO34;DATO35;DATO36;DATO37;DATO38;DATO39;DATO40;DATO41;DATO42;DATO43;DATO44;DATO45;DATO46;DATO47;DATO48;DATO49;DATO50;DATO51;DATO52"
  [1]=>string(244) "1;UGOLONE;1;UGOLONE;MOD2;E3U;3;550000X058390;0X058390;UGOLONE;;N;217174717;27/10/2016;10:03:42;31/10/2016;11:07:34;;;UGOLONE;UGOLONE;1000;ITALY;UGOLONE;UGOLONE;8249;UGOLONE;675;GRIGIO ARDESIA MIC;1187;;0;;;;;;;;;;;;;;;;;;S-VIL.D.006;2;UGOLONE"
  [2]=>string(278) "1;UGOLONE;32;UGOLONE;MOD4;93;4;20000J669855;0J669855;UGOLONE;;N;;21/09/2016;00:00:00;25/11/2016;08:28:20;15/11/2016;05:42:25;UGOLONE;UGOLONE;1000;ITALY;UGOLONE;UGOLONE;1478;UGOLONE;687;BLU;902;;;;;;;1472950;1470795;UGOLONE;18:26:34;Strada;UGOLONE;;;;;;;;N-AVA.O-BX.1;5;UGOLONE"
  [3]=>string(284) "1;UGOLONE;1;UGOLONE;MOD6;E3B;3;50000X057060;0X057060;UGOLONE;;N;217233496;19/09/2016;16:43:19;23/11/2016;16:27:04;;;UGOLONE;UGOLONE;3488;MALTA-AL;UGOLONE;UGOLONE;6068;UGOLONE;268;BIANCO PASTELLO;1171;;0;;;;;1468769;1468769;UGOLONE;13:29:48;Strada;UGOLONE;;;;;;305;UGOLONE;;5;UGOLONE"
  [4]=>string(235) "1;UGOLONE;17;UGOLONE;MOD8;A08;0;F6EK600110568;110568;UGOLONE;;N;;23/08/2016;00:00:00;19/10/2016;10:45:43;;;UGOLONE;UGOLONE;1000;ITALY;UGOLONE;UGOLONE;8246;UGOLONE;162;RED SOLID;1183;;;;;;;;;UGOLONE;;;;;;;;;;;N-AVA.D-BX.5-MA;1;UGOLONE"
}
da quello che ho capito la riga [0] contiene i nono dei campi della tabella GIUSTO?
quindi preparo la parte con i nomi dei campi
*/
$nome_campi=strtr( $file[0], ";" , ",");//cambio il ; in ,
var_dump($nome_campi);
//"DATO1,DATO2,DATO3,DATO4,DATO5,DATO6,DATO7,DATO8,DATO9,DATO10,DATO11,DATO12,DATO13,DATO14,DATO15,DATO16,DATO17,DATO18,DATO19,DATO20,DATO21,DATO22,DATO23,DATO24,DATO25,DATO26,DATO27,DATO28,DATO29,DATO30,DATO31,DATO32,DATO33,DATO34,DATO35,DATO36,DATO37,DATO38,DATO39,DATO40,DATO41,DATO42,DATO43,DATO44,DATO45,DATO46,DATO47,DATO48,DATO49,DATO50,DATO51,DATO52
//preparo la prima parte della query
$q="INSERT INTO completo (".$nome_campi.") VALUE('";
var_dump($q);
//ciclo le altre righe
foreach($file as $chiave => $valore){
    //salto la prima riga $file[0] perchè gia letta
    if($chiave !=0){
        $valore=addslashes($valore);
        $elenco=implode("','",explode(";",$valore));
        //termino la query
        $query=$q.$elenco.")";
        var_dump($query);
        /*qui se il risultato dei var_dump sono quelli che ti servono metti
        $ris=mysqli_query($connessione,$query);
        */   
    }
}
echo "</pre>";
//....
?>
 

Discussioni simili