• Home
  • Forum
  • Fare Web
  • PHP

[PHP] Aggiornare DB tramite UPLOAD file .csv

  • Creatore Discussione Creatore Discussione giancadeejay
  • Data di inizio Data di inizio 1 Dic 2016
  • Tag Tag
    csv mysql php
Prec.
  • 1
  • 2
Primo Prec. 2 di 2

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.044
150
63
PR
www.borgo-italia.it
  • 5 Dic 2016
  • #21
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
Clicca per allargare...
è una cosa se invece è
uno 1; uno 2; .... uno52
due 1; due 2; .... due52
ecc.. sino a 6000
Clicca per allargare...
è un'altra
 

giancadeejay

Utente Attivo
26 Ott 2010
224
0
16
torino
  • 5 Dic 2016
  • #22
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: 5 Dic 2016

marino51

Utente Attivo
28 Feb 2013
3.205
207
63
Lombardia
  • 6 Dic 2016
  • #23
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.205
207
63
Lombardia
  • 6 Dic 2016
  • #24
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 ')"
 

giancadeejay

Utente Attivo
26 Ott 2010
224
0
16
torino
  • 6 Dic 2016
  • #25
Ciao e grazie per la tua collaborazione


......ma come faccio la scrittura nel database??
 

marino51

Utente Attivo
28 Feb 2013
3.205
207
63
Lombardia
  • 6 Dic 2016
  • #26
Questo funziona,inserisce i dati perfettamente
Clicca per allargare...
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
  • 6 Dic 2016
  • #27
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....
 

giancadeejay

Utente Attivo
26 Ott 2010
224
0
16
torino
  • 6 Dic 2016
  • #28
Errore nella query : Incorrect integer value: '' for column 'DATO11' at row 1
 

marino51

Utente Attivo
28 Feb 2013
3.205
207
63
Lombardia
  • 6 Dic 2016
  • #29
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.205
207
63
Lombardia
  • 6 Dic 2016
  • #30
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
  • 6 Dic 2016
  • #31
marino51 ha scritto:
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
Clicca per allargare...
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: 6 Dic 2016

marino51

Utente Attivo
28 Feb 2013
3.205
207
63
Lombardia
  • 6 Dic 2016
  • #32
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: 6 Dic 2016

giancadeejay

Utente Attivo
26 Ott 2010
224
0
16
torino
  • 6 Dic 2016
  • #33
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
  • 6 Dic 2016
  • #34
marino51 ha scritto:
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
Clicca per allargare...
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.205
207
63
Lombardia
  • 6 Dic 2016
  • #35
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
  • 6 Dic 2016
  • #36
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
 

marino51

Utente Attivo
28 Feb 2013
3.205
207
63
Lombardia
  • 6 Dic 2016
  • #37
se si ferma, è per un errore nei dati, per esempio,
Data truncated for column 'DATO20' at row 1
Clicca per allargare...
cosa c'è in quella colonna di quella riga ?
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.044
150
63
PR
www.borgo-italia.it
  • 6 Dic 2016
  • #38
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
  • 6 Dic 2016
  • #39
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.044
150
63
PR
www.borgo-italia.it
  • 6 Dic 2016
  • #40
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>";
//....
?>
 
Prec.
  • 1
  • 2
Primo Prec. 2 di 2
Devi accedere o registrarti per poter rispondere.

Discussioni simili

[PHP] Aggiornare un valore del database tramite form
  • giancadeejay
  • 7 Dic 2016
  • PHP
  • 2
Risposte
26
Visite
6K
PHP 9 Dic 2016
giancadeejay
R
Aggiornare record mysql con Ajax, jQuery e php
  • Riccardo Contu
  • 19 Apr 2021
  • Ajax
Risposte
2
Visite
6K
Ajax 19 Apr 2021
Tommy03
Non riesco ad aggiornare PHP
  • Leshabituelles
  • 18 Nov 2019
  • PHP
Risposte
0
Visite
1K
PHP 18 Nov 2019
Leshabituelles
S
aggiornare valore di un elemento xml con php
  • simo94n6
  • 25 Ott 2018
  • PHP
Risposte
8
Visite
3K
PHP 23 Nov 2018
Jonn
P
[PHP] Intercettare ed aggiornare campi di un database
  • piero60
  • 12 Set 2018
  • PHP
Risposte
5
Visite
2K
PHP 4 Ott 2018
macus_adi
C
[PHP] scrivere o aggiornare record in tabella
  • Coby
  • 30 Ago 2018
  • PHP
Risposte
7
Visite
2K
PHP 3 Set 2018
Coby
C
T
Aggiornare una tabella db richiamando da file php
  • TommyDave0291
  • 4 Lug 2018
  • PHP
Risposte
3
Visite
2K
PHP 4 Lug 2018
migo80
M
M
[Javascript] [PHP] aggiornare pagina ogni ora
  • Max61
  • 20 Giu 2018
  • Javascript
Risposte
2
Visite
1K
Javascript 20 Giu 2018
Max61
M
S
Aggiornare una tabella db richiamando da file php
  • simsampi
  • 16 Nov 2017
  • PHP
Risposte
3
Visite
1K
PHP 21 Nov 2017
filomeni
S
[PHP]Aggiornare pagina in maniera trasparente...
  • stefanoxjx
  • 25 Ott 2017
  • PHP
Risposte
3
Visite
2K
PHP 28 Ott 2017
stefanoxjx
S
M
[PHP] Aggiornare i dati dei record selezionati
  • Max61
  • 13 Ott 2017
  • PHP
Risposte
3
Visite
1K
PHP 13 Ott 2017
Sevenjeak
X
come aggiornare codice php?
  • xabax
  • 11 Set 2017
  • PHP
Risposte
5
Visite
2K
PHP 12 Set 2017
Max 1
[PHP] cancellare/aggiornare record DB
  • ste80
  • 5 Lug 2017
  • PHP
  • 2
Risposte
24
Visite
6K
PHP 9 Lug 2017
ste80
Recuperare variabile php da javascript senza aggiornare pagina
  • Metazoo
  • 7 Mar 2017
  • PHP
Risposte
5
Visite
4K
PHP 9 Mar 2017
Ibernato
Aggiornare tabella db con php
  • giancadeejay
  • 8 Gen 2017
  • PHP
Risposte
10
Visite
3K
PHP 9 Gen 2017
giancadeejay
L
[PHP] Sommare campi e aggiornare tabella
  • ltatas
  • 6 Nov 2016
  • PHP
Risposte
14
Visite
5K
PHP 15 Nov 2016
borgo italia
N
eseguire pagina php senza aggiornare la pagina
  • nigiu
  • 22 Apr 2016
  • Ajax
Risposte
3
Visite
5K
Ajax 10 Mag 2016
localhost.nicola
M
Aggiornare Plesk e PHP su VPS Linux OVH
  • m.pittini
  • 24 Feb 2016
  • Server Dedicati e VPS
Risposte
3
Visite
3K
Server Dedicati e VPS 16 Mag 2016
m.pittini
M
M
Aggiornare dato sul db con php
  • Malware
  • 19 Ago 2012
  • Ajax
Risposte
8
Visite
3K
Ajax 19 Ago 2012
Malware
M
M
AIUTO--> Devo aggiornare il PHP
  • Marco Tardelli
  • 11 Giu 2005
  • Linux e Software
Risposte
0
Visite
2K
Linux e Software 11 Giu 2005
Marco Tardelli
M
Condividi:
Facebook X (Twitter) LinkedIn WhatsApp e-mail Condividi Link
  • Home
  • Forum
  • Fare Web
  • PHP
  • Italiano
  • Termini e condizioni d'uso del sito
  • Policy Privacy
  • Aiuto
  • Home
Community platform by XenForo® © 2010-2024 XenForo Ltd. | Traduzione a cura di XenForo Italia
Menu
Accedi

Registrati

  • Home
  • Forum
    • Nuovi Messaggi
    • Cerca...
  • Novità
    • Featured content
    • Nuovi Messaggi
    • Ultime Attività
X

Privacy & Transparency

We use cookies and similar technologies for the following purposes:

  • Personalized ads and content
  • Content measurement and audience insights

Do you accept cookies and these technologies?

X

Privacy & Transparency

We use cookies and similar technologies for the following purposes:

  • Personalized ads and content
  • Content measurement and audience insights

Do you accept cookies and these technologies?