[PHP] Aggiornare DB tramite UPLOAD file .csv

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
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
 

giancadeejay

Utente Attivo
26 Ott 2010
224
0
16
torino
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:

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
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 ";"
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
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 ')"
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
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
 

giancadeejay

Utente Attivo
26 Ott 2010
224
0
16
torino
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....
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
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
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
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();
?>
 

giancadeejay

Utente Attivo
26 Ott 2010
224
0
16
torino
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:

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
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:

giancadeejay

Utente Attivo
26 Ott 2010
224
0
16
torino
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 ;
 

giancadeejay

Utente Attivo
26 Ott 2010
224
0
16
torino
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
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
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
 

giancadeejay

Utente Attivo
26 Ott 2010
224
0
16
torino
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
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
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
 

giancadeejay

Utente Attivo
26 Ott 2010
224
0
16
torino
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
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
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
Autore Titolo Forum Risposte Data
giancadeejay [PHP] Aggiornare un valore del database tramite form PHP 26
R Aggiornare record mysql con Ajax, jQuery e php Ajax 2
Leshabituelles Non riesco ad aggiornare PHP PHP 0
S aggiornare valore di un elemento xml con php PHP 8
P [PHP] Intercettare ed aggiornare campi di un database PHP 5
C [PHP] scrivere o aggiornare record in tabella PHP 7
T Aggiornare una tabella db richiamando da file php PHP 3
M [Javascript] [PHP] aggiornare pagina ogni ora Javascript 2
S Aggiornare una tabella db richiamando da file php PHP 3
S [PHP]Aggiornare pagina in maniera trasparente... PHP 3
M [PHP] Aggiornare i dati dei record selezionati PHP 3
X come aggiornare codice php? PHP 5
ste80 [PHP] cancellare/aggiornare record DB PHP 24
Metazoo Recuperare variabile php da javascript senza aggiornare pagina PHP 5
giancadeejay Aggiornare tabella db con php PHP 10
L [PHP] Sommare campi e aggiornare tabella PHP 14
N eseguire pagina php senza aggiornare la pagina Ajax 3
M Aggiornare Plesk e PHP su VPS Linux OVH Server Dedicati e VPS 3
M Aggiornare dato sul db con php Ajax 8
M AIUTO--> Devo aggiornare il PHP Linux e Software 0
F Cerco Hosting con VECCHIE versioni di php Hosting 0
Cosina Captcha php PHP 1
S passare un valore da un form a un file .php con metodo post PHP 4
N php msyql PHP 6
N php problemi a visualizzare video PHP 3
A menu a tendina php PHP 1
D protezione cartelle: blocco visualizzazione/scaricamento contenuto, ma abilitazione utilizzo dati da parte di file .php presenti sul sito Web Server 1
F Php date_diff PHP 1
K [PHP] Aggiungere caratteri ad una stringa in base alla lunghezza della stessa PHP 2
C Wp-admin a file php WordPress 5
Lino80 [Retribuito] Cerco programmatore php per modifica/inserimento funzione/valori da un plugin importer wordpress Offerte e Richieste di Lavoro e/o Collaborazione 0
csi Inviare file jpg in locale alla stampante con php PHP 0
M Passaggio variabili array php su un tasto jq PHP 3
E Php aggiornamento tabella PHP 9
G phpmailer e php 8.1 con estensione mysqli PHP 6
M Invio dati database via email php PHP 0
K [php] Problema con inner join PHP 4
K [php]form invio dati PHP 0
P Codifica caratteri speciali mysql php PHP 0
K [PHP] Problema con variabili concatenate. PHP 1
E Stampante termica escpos-php PHP 6
JeiMax Modifica codice php personalizzato PHP 2
G Come modificare un pdf in php PHP 1
U Link a doppio file PHP PHP 0
E PHP & jQuery PHP 8
N Passare array da php a javascript PHP 5
F Applicazione PHP/MySQL per prenotazioni: limitare il numero massimo di posti prenotabili PHP 20
L tipo boolean non funzionante su mariadb (mysql). E codice php 7.4. PHP 0
U PHP creare un file excel dopo ricerca nel DB PHP 0
M PHP/MySQL - Estrarre valori min e max di ogni gruppo PHP 5

Discussioni simili