- Home
- Categorie
- Coding e Sistemistica
- PHP
- Operazioni con file CSV tramite PHP. Lettura + modifica + scrittura
-
Operazioni con file CSV tramite PHP. Lettura + modifica + scrittura
Salve a tutti
ho la necessità di leggere un file da cvs , modificarlo e scriverlo successivamente.Sono riuscito a prendere un file csv e stamparlo a video
Successivamente sono riuscito anche a fare delle modifiche al file ( creazione condizioni , concatena e operazioni algebriche)
Fin qui tutto benemi blocco invece ora nel salvare questo file?
come si fa?stampando a video il file, questo viene di per se messo in tabelle
per farlo ritornare in csv come posso fare?ho visto questa funzione ma come posso applicarla al mio file cvs?
[PHP]<?php
$list = array (
array('aaa', 'bbb', 'ccc', 'dddd'),
array('123', '456', '789'),
array('"aaa"', '"bbb"')
);
$fp = fopen('file.csv', 'w');
foreach ($list as $fields) {
fputcsv($fp, $fields);
}
fclose($fp);
?>[/PHP]grazie del vostro aiuto
-
Ciao
questa è già di per se la funzione di salvataggio del csv.
Attraverso il foreach stai attraversando il tuo array, riga per riga, e lo stai salvando nel file.
-
grazie per la risposta
il mio file csv lo apro a video cosi e riesco anche a fare tutte le modifiche[PHP]
<?php
print "<table border=1 width=90% >";
$fd= fopen ("file.csv", "r");
$x=0;
while (!feof ($fd))
{
$riga=fgets($fd, 4096);
if($riga!="")
{
$arr=split("|", $riga);
print "<tr>";
print "<td>".$arr[0]."</td>";
print "<td>".$arr[1]."</td>";
print "<td>".$arr[2]."</td>";
print "<td>".$arr[3]."</td>";
print "<td>".$arr[4]."</td>";
print "</tr>";
$x++;
}
}
print "";
fclose($fd);
?>
[/PHP]ma come posso farlo risalvare in csv il file?
grazieeee
-
Ciao
io proverei così:<?[php](http://www.giorgiotave.it/wikigt/os/PHP) print "<table border=1 width=90% >"; $fd= fopen ("file.csv", "r"); $destinazione = fopen('destinazione.csv', 'w'); $x=0; while (!feof ($fd)) { $riga=fgets($fd, 4096); if($riga!="") { $arr=split("\|", $riga); print "<tr>"; print "<td>".$arr[0]."</td>"; print "<td>".$arr[1]."</td>"; print "<td>".$arr[2]."</td>"; print "<td>".$arr[3]."</td>"; print "<td>".$arr[4]."</td>"; print "</tr>"; $x++; } fputcsv($destinazione, $arr); } print ""; fclose($fd); flcose($destinazione); ?>
-
Grazie mille
finalmente ho fatto un passo in avanti e riesco ora a sbloccarmi
ti volevo chiedere come faccio ad inserire un valore modificato nell'array?
a video lo vedo ma non me la salva nel filead esempio la 5 colonna la voglio moltiplicare per 100
e faccio questa cosa ma nonostante la vedo a video non la vedo nel file salvato.
il valore deve essere poi inserito nell'array vero?
come faccio?grazieeee
[PHP]
<?php print "<table border=1 width=90% >";
$fd= fopen ("file.csv", "r");
$destinazione = fopen('destinazione.csv', 'w');
$x=0;
while (!feof ($fd))
{
$riga=fgets($fd, 4096);
if($riga!="")
{
$arr=split("|", $riga);
$a= $arr[4] * 100;
print "<tr>";
print "<td>".$arr[0]."</td>";
print "<td>".$arr[1]."</td>";
print "<td>".$arr[2]."</td>";
print "<td>".$arr[3]."</td>";
print "<td>".$a."</td>";
print "</tr>";
$x++;
}
fputcsv($destinazione, $arr);
}
print "";
fclose($fd);
flcose($destinazione);
?>
[/PHP]
-
esatto
potresti ricostruire un nuovo array con i valori modificati e salvare quello nel file.
-
ce l'ho fatta
ho semplicemente variato:
$arr[3]= $arr[3] * 100;ti chiedo un ultima cosa.
il file di partenza file.csv ha come separatore il ; ma il file salvato destinazione.csv ha come separatore la ,
come posso dare anche alla destinazione il ; come separatore?<?php print "<table border=1 width=90% >"; $fd= fopen ("file.csv", "r"); $destinazione = fopen('destinazione.csv', 'w'); $x=0; while (!feof ($fd)) { $riga=fgets($fd, 4096); if($riga!="") { $arr=split(";", $riga); **$arr[3]= $arr[3] * 100;** print "<tr>"; print "<td>".$arr[0]."</td>"; print "<td>".$arr[1]."</td>"; print "<td>".$arr[2]."</td>"; print "<td>".$arr[3]."</td>"; print "</tr>"; $x++; } fputcsv($destinazione, $arr); } print ""; fclose($fd); flcose($destinazione); ?>
-
aggiornamento
ce l'ho fatta a salvare con il delimitatore ;
semplicemente inserendolo nel fputcsv
cosi...
fputcsv($destinazione, $arr, $delimiter = ';');grazie ancora di cuore!!
-
Ragazzi scusatemi se apro nuovamente la discussione.
Lo script php funziona a meraviglia ma mi occorre una piccolissima modifica
Nel file cvs salvato mi occorre che sia presente una nuova intestazione di colonne.
Come posso crearla?Grazie ancora
-
in che senso una nuova intestazione? devi sostituire la precedente?
-
In pratica mi occorre che il nuovo file cvs generato abbia un titolo di colonne nuovo anche perchè in alcuni casi le colonne create sono nuove e mi occorre scrivere per tutte le nuove colonne un titolo per facilitarne poi l'uso.
-
Se devi solo cambiare l'intestazione delle colonne potresti aggiungere la nuova intestazione prima del primo giro di lettura del file. Inizi con l'intestazione e successivamente accodi il file letto come stai già facendo, può andare o sono sulla strada sbagliata?
-
riesco solo a stampare i titoli di colonne a video ma non a salvarlo
ho modificato cosi il file
e riesco solo a vederle nel file a video ma nel csv di destinazione che si salva non appaiono..<?php print "<table border=1 width=90% >";$fd= fopen ("file.csv", "r"); $destinazione = fopen('destinazione.csv', 'w'); // Intestazione Tabella print "<tr>"; print "<td>COLONNA 1</td>"; print "<td>COLONNA 2</td>"; print "<td>COLONNA 3</td>"; print "<td>COLONNA 4</td>"; print "</tr>"; $x=0; while (!feof ($fd)) { $riga=fgets($fd, 4096); if($riga!="") { $arr=split(";", $riga); $arr[3]= $arr[3] * 100; print "<tr>"; print "<td>".$arr[0]."</td>"; print "<td>".$arr[1]."</td>"; print "<td>".$arr[2]."</td>"; print "<td>".$arr[3]."</td>"; print "</tr>"; $x++; } fputcsv($destinazione, $arr); } print ""; fclose($fd); flcose($destinazione); ?>