Aggiornare tabella db con php

giancadeejay

Utente Attivo
26 Ott 2010
224
0
16
torino
Ciao a tutti,
Volevo chiedere se c'e' qualcuno che riesce a risolvermi questo problemino.
In pratica tamite pagina.php inesrisco un file che mi popola la mia bella tabella del db.
Uso la funzione INSERT into tabella ma per fare cio' devo prima svuotarla tramite (TRUNCATE).
Mi piacerebbe invece usare la funzione UPDATE ma non riesco a capire come fare..mi documento ma mi sfugge qualcosa.. qualcuno puo' darmi una mano?

pagina.php
Codice:
$file = "ok.csv";

require '../struttura/config.php';
require '../struttura/connect.php';

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

$sql="INSERT INTO mia_tabella (
 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 ( empty($val) ) $val = 0;  // riga da inserire
            $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());
            }
        }
    }
}
            echo "<br><br><br><center><b><h1><font color='white'>FILE DI AGGIORNAMENTO CARICATO CON SUCCESSO !</font></h1></center></b> ";
fclose($handle);

mysql_close();

Grazie a tutti in anticipo
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
ti schematizzo, decommenta e ricommenta i vari var_dump per vedere come si formano i dati
PHP:
<?php
$dati=file('file_csv.csv');//array compostto dalle righe del csv
$nomi_campi=explode(";",$dati[0]);//dalla riga 0 ricavo i nomi DATO1, DATO2....
echo "<pre>";
//var_dump($nomi_campi);
$valore_campi=explode(";",$dati[1]);//ricavo i valori dalla seconda riga
//var_dump($valore_campi);
$setup="";
for($k=0; $k<count($nomi_campi);$k++){//costruisco il SET per l'UPDATE: DATO1='valore' DATO2=...
    $nome = $nomi_campi[$k];
    $valore= $valore_campi[$k];
    $setup.=$nome."='".$valore."',";
}
$lung=strlen($setup)-1;//tolgo l'ultima virgola
$setup=substr($setup,0,$lung);
//var_dump($setup);
$query="UPDATE mia_tabella SET ".$setup;//costruisco la query
var_dump($query);
echo "</pre>";
//e uppo mysql_query($query);
?>
 

giancadeejay

Utente Attivo
26 Ott 2010
224
0
16
torino
ciao
ti schematizzo, decommenta e ricommenta i vari var_dump per vedere come si formano i dati
PHP:
<?php
$dati=file('file_csv.csv');//array compostto dalle righe del csv
$nomi_campi=explode(";",$dati[0]);//dalla riga 0 ricavo i nomi DATO1, DATO2....
echo "<pre>";
//var_dump($nomi_campi);
$valore_campi=explode(";",$dati[1]);//ricavo i valori dalla seconda riga
//var_dump($valore_campi);
$setup="";
for($k=0; $k<count($nomi_campi);$k++){//costruisco il SET per l'UPDATE: DATO1='valore' DATO2=...
    $nome = $nomi_campi[$k];
    $valore= $valore_campi[$k];
    $setup.=$nome."='".$valore."',";
}
$lung=strlen($setup)-1;//tolgo l'ultima virgola
$setup=substr($setup,0,$lung);
//var_dump($setup);
$query="UPDATE mia_tabella SET ".$setup;//costruisco la query
var_dump($query);
echo "</pre>";
//e uppo mysql_query($query);
?>
Ciao Borgo mi restituisce questo??
string(23) "UPDATE completo SET =''"
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
io ho provato con un mio file csv tipo
DATO1;DATO2;DATO3;DATO4;........;DATO50;DATO51;DATO52
1;UGOLONE;1;UGOLONE;MOD2;E3U;3;550000X058390;........;N-AVA.O-BX.1;5;UGOLONE
e funziona cioè crea la query "UPDATE mia_tabella SET DATO1='1', DATO2='UGOLONE'......"
copia il tuo csv su un file txt e allegalo
 

giancadeejay

Utente Attivo
26 Ott 2010
224
0
16
torino
Scusami Borgo ....puoi spiegarmi bene l'ultimo passaggio... io con il mio codice postato eseguo un UPLOAD del file.csv per ottenere l'INSERT into .... ???
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
per fare l'insert devi usare quello che hai fatto tu, per uppare lo script che ti ho postato, questo se non ho capito male, comunque ho alcuni dubbi, anche se forse mi ripeto:
da quello che ho capito tu hai una tabella con 52 campi chiamati DATO1.....DATO52, giusto?
da quello che ho capito tale tabella è composta da un'unico record (riga) (da 52 colonne) giusto?
se è così la prima volta (tabella vuota) fai l'insert e le successive l'update cioè vai ad sempre aggiornare l'unica riga che hai inserto la prima volta.
se non è così, ma ad esempio, se la tabella deve avere piu righe (sempre di 52 colonne) manca un dato importante "l'identificativo del record (riga)" altrimenti come fa php a sapere quale record (riga) deve andare ad uppare
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
ripartiamo da zero, ti schematizzo poi i campi da 1 a 52 e quello che contengono varchar o int o ecc... ci pensi tu
1° caso tabella con tre campi e un unico record (o riga)
DATO1 varchar(50)
DATO2 varchar(50)
DATO3 varchar(50)
e un file csv chiamato uno.csv
DATO1;DATO2;DATO3
pinco;pallo;sempronio
per l'insert
PHP:
<?php
$dati=file('uno.csv');
/*
in $dati[0] trovi DATO1;DATO2;DATO3
in $dati[1] trovi pinco;pallo;sempronio che sono da inserire nella tabella
*/
//trasformi pinco;pallo;sempronio in 'pinco','pallo','sempronio'
$arr=explode(";",$dati[1]);//$arr[0]=>pinco $arr[1]=>pallo $arr[2]=>sempronio
$valori="'".implode("','", $arr)."'";
//e fai l'insert
$ris=mysql_query("INSERT INTO tabella($valori)");
?>
e ti ritrovi con la tabella piena (tabella con tre campi e un unico record (riga)
ora vuoi uppare la tabella usando un altro csv (o con lo stesso ma con i valori diversi)
quindi avrai un altro file csv chiamato es. secondo.csv (o con lo stesso nome)
DATO1;DATO2;DATO3
amelia;sofonisba;befana
e quindi vuoi uppare
PHP:
<?php
$dati=file('secondo.csv');
//e il resto dello script che ti ho postato
?>
al termine dell'upp ti ritrovi con la tabella che contiene
amelia sofonisba befana
pinco;pallo;sempronio spariscono

2° caso sempre tabella con tre compi ma con più record (righe)
la tabella non può essere come quella sopra, ma deve avere l'identificativo del record (riga)
id int(12) autoincrement primarykey
DATO1 varchar(50)
DATO2 varchar(50)
DATO3 varchar(50)
al primo insert (fatto come sopra) ti ritrovi la tabella
1 pinco pallo sempronio
se fai un altro insert
1 pinco pallo sempronio
2 amelia sofonisba befana
ecc.. ad ogni insert si aggiunge un record (riga)
a questo punto per uppare devi anche sapere quale record (riga) devi uppare
sempre usando lo scrip che ti ho postato con alcune modifiche
PHP:
<?php
$id=2;//aggiungere: per es uppare il secondo record
//quello che ti ho postato
//modificando anche la query
//.....
$query="UPDATE tabella SET ".$setup." WHERE id=$id";//costruisco la query
//....
?>
se es ho usato per uppare il seguente csv
DATO1;DATO2;DATO3
bianco;rosso;verdone
la tabella ti risulterà
1 pinco pallo sempronio
2 bianco rosso verdone

ora tutto dipende da quello che vuoi fare, spero comunque di essere stato chiaro
 
Discussioni simili
Autore Titolo Forum Risposte Data
P Aggiornare Tabella con form ma senza Mysql HTML e CSS 0
M Aggiornare grafico con i dati inseriti in tabella PHP 0
otto9due Inserire o aggiornare tabella my sql controllando una coppia di valori PHP 7
L aggiornare 2 campi di una tabella insieme PHP 6
C [PHP] scrivere o aggiornare record in tabella PHP 7
T Aggiornare una tabella db richiamando da file php PHP 3
S Aggiornare una tabella db richiamando da file php PHP 3
L [PHP] Sommare campi e aggiornare tabella PHP 14
P Aggiornare tabella tramite form PHP 17
G Aggiornare colonna tabella automaticamente in MysQl PHP 2
O Aggiornare tabella da altro MDB MS Access 3
M aggiornare il prezzo degli articoli da una seconda tabella MySQL 6
C aggiornare i record di una tabella??(access) MS Access 0
S Aggiornare percorso file collegati MS Access 0
R Aggiornare record mysql con Ajax, jQuery e php Ajax 2
F Leggere e aggiornare dati di campi <input text> su file di test PHP 0
M Aggiornare stesso campo in due tabelle PHP 0
Alex_70 Aggiornare campo da un altro campo PHP 16
M Aggiornare simultaneamente i campi di due tabelle collegate con id PHP 4
Leshabituelles Non riesco ad aggiornare PHP PHP 0
M [Javascript] Aggiornare like totali dopo click Javascript 0
S aggiornare valore di un elemento xml con php PHP 8
P [PHP] Intercettare ed aggiornare campi di un database PHP 5
Q Problema su come far aggiornare i campi su un database Mysql PHP 17
M [Javascript] [PHP] aggiornare pagina ogni ora Javascript 2
B [Javascript] Cambiare classe ed aggiornare relativi eventi Javascript 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
WebDr [ASP] Aggiornare una pagina in un div da un altro div su pagina diversa Classic ASP 3
C Aggiornare App Html5 HTML e CSS 2
D [Javascript] aggiornare numero caratteri se campo già popolato Javascript 5
S [Javascript] Aggiornare solo un DIV una sola volta con un click di un bottone Javascript 9
Metazoo Recuperare variabile php da javascript senza aggiornare pagina PHP 5
Magenta [WordPress] Dati ftp per aggiornare in locale WordPress 10
giancadeejay [PHP] Aggiornare un valore del database tramite form PHP 26
giancadeejay [PHP] Aggiornare DB tramite UPLOAD file .csv PHP 39
F Aggiornare marker su mappa google con una funzione ajax richiamata al cambio di una select Ajax 2
N eseguire pagina php senza aggiornare la pagina Ajax 3
M Aggiornare Plesk e PHP su VPS Linux OVH Server Dedicati e VPS 3
garimpeiro Errore di sintassi si tenta di aggiornare file in formato dbf Programmazione 2
L Script per aggiornare pagina html Javascript 2
G Aggiornare immagine caricata nel DB Classic ASP 1
K mysql aggiornare campo Database 4
Marco_88 Aggiornare elemento DOM jQuery 9
J Aggiornare 2 tabelle PHP 3
R Aggiornare WP e riuscire poi a tornare indietro. WordPress 24
I come aggiornare il codice jQuery 1
P aggiornare div con un clic senza reload Ajax 2

Discussioni simili