-
Ipmort database
Buongiorno a Tutti
sono a chiedervi un aiuto per lo sviluppo di uno script che mi permetta di creare una nuova tabella sul mio database in base ad una importazione con i parametri che trovate nello screen di seguito
http://prntscr.com/q2xnr6
ovvero Campi terminati con:
Campi terminati con: ;
Campi limitati da: ;
Campi prefissati con:;
si: La prima linea del file contiene i nomi dei campi della tabella (se quest'opzione non é attivata, la prima linea diventerá parte dei dati)
mi potete aiutare?
-
A grandi linee devi
- creare la tabella usando una query
- leggere il file CSV, ignorando la prima riga
- per ogni riga del CSV, calcolare quali sono i singoli campi (verosimilmente esplodendo sul carattere ";")
- per ogni riga così elaborata, inserire i vari campi nella tabella tramite una query
Con quale/i punto/i hai difficoltà?
-
Con il 2° e 3° punto
e sopratutto la sostituzione con i ";" come da screen allegato al post
-
Per il terzo punto puoi usare fgetcsv specificando ";" come delimitatore. Il risultato sarà un vettore contenente i singoli campi.
Per il secondo punto, fai la stessa cosa ignorando semplicemente la riga letta.
-
saresti così gentile da farmi un esempio di codice?
sono ancora agli inizi :(
-
Nella documentazione di fgetcsv trovi già un valido esempio, qui riadattato:
Codice PHP:
<?php
$row = 0;
$handle = fopen("test.csv", "r");
while (($data = fgetcsv($handle, 0, ";")) !== FALSE) {
$row++;
if ($row == 1) {
continue;
}
$num = count($data);
echo "<p> $num fields in line $row: <br /></p>\n";
for ($c=0; $c < $num; $c++) {
echo $data[$c] . "<br />\n";
}
}
fclose($handle);
-
ed a questa pagina io potrei "trasferire" il mio file csv tramite form da una prima pagina giusto?
-
-
ho provato ad usare lo script che mi dici tu
usando il seguente codice:
pagina "1" (selezione file):
Codice PHP:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Documento senza titolo</title>
</head>
<body>
<form action="2.php" method="post" enctype="multipart/form-data">
<input type="file" name="upload">
<input type="submit" name="up" value="Upload file">
</form>
</body>
</html>
Pagina "2":
Codice PHP:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Documento senza titolo</title>
</head>
<body>
<?php
echo "nome file: ".$_FILES["upload"]["name"]."<hr>";
$row = 0;
$handle = fopen("test.csv", "r");
while (($data = fgetcsv($handle, 0, ";")) !== FALSE) {
$row++;
if ($row == 1) {
continue;
}
$num = count($data);
echo "<p> $num fields in line $row: <br /></p>\n";
for ($c=0; $c < $num; $c++) {
echo $data[$c] . "<br />\n";
}
}
fclose($handle);
?>
</body>
</html>
però non riesce a leggere il file...dove sbaglio?
puoi testare il tutto al seguente link:
http://inverntario.altervista.org/prova/1.php
il file csv che sto caricando è il seguente:
http://inverntario.altervista.org/prova/test.csv
-
Guardando l'output della pagina sembra che il file venga letto correttamente.
-
ok, ma da questo script come posso estrapolare i dati per generare la quary di inserimento nel db?
-
All'interno del ciclo while hai accesso al vettore $data che contiene i quattro campi di ciascuna riga.