importare file csv mysql

ONE313

Utente Attivo
10 Set 2016
37
2
8
Ciao a tutti, non riesco a caricare un file csv su db attraverso php.
Il problema è che non mi carica i dati o se me li carica non esplode bene il file e mi inserisce i dati tutti nello stesso campo.
ho provato con questo codice php
Codice:
<?php 
$connect = mysqli_connect("localhost", "root", "", "testing");
if(isset($_POST["submit"]))
{
 if($_FILES['file']['name'])
 {
  $filename = explode(".", $_FILES['file']['name']);
  if($filename[1] == 'csv')
  {
   $handle = fopen($_FILES['file']['tmp_name'], "r");
   while($data = fgetcsv($handle))
   {
    $item1 = mysqli_real_escape_string($connect, $data[0]); 
                $item2 = mysqli_real_escape_string($connect, $data[1]);
                $query = "INSERT into excel(excel_name, excel_email) values('$item1','$item2')";
                mysqli_query($connect, $query);
   }
   fclose($handle);
   echo "<script>alert('Import done');</script>";
  }
 }
}
?> 
<!DOCTYPE html> 
<html> 
 <head> 
  <title>Webslesson Tutorial</title>
 </head> 
 <body> 
  <h3 align="center">How to Import Data from CSV File to Mysql using PHP</h3><br />
  <form method="post" enctype="multipart/form-data">
   <div align="center"> 
    <label>Select CSV File:</label>
    <input type="file" name="file" />
    <br />
    <input type="submit" name="submit" value="Import" class="btn btn-info" />
   </div>
  </form>
 </body> 
</html>
 

Allegati

  • db.png
    db.png
    38,9 KB · Visite: 337

macus_adi

Utente Attivo
5 Dic 2017
1.343
91
48
IT/SW
Avrei separato i due file, uno per la view ed uno per il model. Secondo questa logica creando un file di funzioni di appoggio potresti fare in questo modo:
PHP:
$file_info=[];
if(isset($_POST['submit'])){
    $file_info = pathinfo($_FILES['file']['name']);
    $file_info['tmp_name']=$_FILES['file']['tmp_name'];

    (!empty($file_info) && $file_info['extension']=='csv')?start_op($file_info):null;
}
function start_op($file){
    $data=read_file($file['tmp_name']);
    //ipotizzo che nella prima riga ci siano i nomi dei campi del db
    $intestazione=$data[0];
    $dati=array_slice($data,1,count($data)-1);
    $queries=prepare_insert($intestazione,$dati);
    //creo una nuova connessione

    $debug=TRUE;
    if(!$debug){
        $conn=new mysqli('host','user','pass','dbase');
        foreach ($queries as $query){
            try{
                $conn->query($query);
            }catch (Exception $e){
                print_r($e);
            }
        }
    }else print_r($queries);

}
function read_file($file){

    $csv=str_getcsv(file_get_contents($file),"\r\n");
    $rows=[];
    foreach ($csv as $item){
        $rows[]=str_getcsv($item,",");
    }
    return $rows;
}

function prepare_insert($intest=[],$data=[]){
    $my_queries=[];

    foreach ($data as $k=>$v){
        $my_queries[$k]='INSERT INTO TABLE_NAME ('.join(',',$intest).') VALUES (';
        foreach ($v as $kk=>$vv){
            $my_queries[$k].='"'.trim($vv).'",';
        }
        $my_queries[$k]=substr($my_queries[$k],0,strlen($my_queries[$k])-1);
        $my_queries[$k].=');';
    }
    return $my_queries;
}
 
  • Like
Reactions: alessandra86

ONE313

Utente Attivo
10 Set 2016
37
2
8
Ciao ho provato ma non inserisce i dati.

l'index .php

Codice:
<!DOCTYPE html>
<html>
 <head>
  <title>Webslesson Tutorial</title>
 </head>
 <body>
  <h3 align="center">How to Import Data from CSV File to Mysql using PHP</h3><br />
  <form action="config.php" method="post" enctype="multipart/form-data" >
   <div align="center">
    <label>Select CSV File:</label>
    <input type="file" name="file" />
    <br />
    <input type="submit" name="submit" value="Import" class="btn btn-info" />
   </div>
  </form>
 </body>
</html>

il config.php con il codice che che mi hai lasciato.

Codice:
<?php
 $file_info=[];
if(isset($_POST['submit'])){
    $file_info = pathinfo($_FILES['file']['name']);
    $file_info['tmp_name']=$_FILES['file']['tmp_name'];

    (!empty($file_info) && $file_info['extension']=='csv')?start_op($file_info):null;
}
function start_op($file){
    $data=read_file($file['tmp_name']);
    //ipotizzo che nella prima riga ci siano i nomi dei campi del db
    $intestazione=$data[0];
    $dati=array_slice($data,1,count($data)-1);
    $queries=prepare_insert($intestazione,$dati);
    //creo una nuova connessione

    $debug=TRUE;
    if(!$debug){
        $conn=new mysqli('localhost','root','','csv');
        foreach ($queries as $query){
            try{
                $conn->query($query);
            }catch (Exception $e){
                print_r($e);
            }
        }
    }else print_r($queries);

}
function read_file($file){

    $csv=str_getcsv(file_get_contents($file),"\r\n");
    $rows=[];
    foreach ($csv as $item){
        $rows[]=str_getcsv($item,",");
    }
    return $rows;
}

function prepare_insert($intest=[],$data=[]){
    $my_queries=[];

    foreach ($data as $k=>$v){
        $my_queries[$k]='INSERT INTO file ('.join(',',$intest).') VALUES (';
        foreach ($v as $kk=>$vv){
            $my_queries[$k].='"'.trim($vv).'",';
        }
        $my_queries[$k]=substr($my_queries[$k],0,strlen($my_queries[$k])-1);
        $my_queries[$k].=');';
    }
    return $my_queries;
}
?>
 

macus_adi

Utente Attivo
5 Dic 2017
1.343
91
48
IT/SW
$debug=TRUE; if(!$debug){ $conn=new mysqli('localhost','root','','csv'); foreach ($queries as $query){ try{ $conn->query($query); }catch (Exception $e){ print_r($e); } } }else print_r($queries);
Leggi.... DEBUG = TRUE non entra nell'inserimento...... devi settare $debug = FALSE,
Non fare copia e incolla, cerca di capire!
 
Discussioni simili
Autore Titolo Forum Risposte Data
F [PHP] Importare file CSV in HTML PHP 12
M [PHP] Importare file csv su server PHP 0
F [PHP] Importare file CSV in HTML PHP 3
G Cerco script per importare file .xml e .csv. Lavoro retribuito Offerte e Richieste di Lavoro e/o Collaborazione 2
G Importare dati da file csv PHP 0
M Importare correttamente in tabella file CSv con doppi apici MySQL 4
G importare csv file in tabella oracle XE da script php PHP 1
S importare testi da file esterno a grafica photoshop Photoshop 0
Laskot [Javascript] Importare file JSON in local storage Javascript 2
B IMPORTARE FILE .FRM E .IBD CON PHPMYADMIN MySQL 0
asevenx Importare file excel in database mysql PHP 3
otto9due importare file .php tramite .load dove sbaglio?? jQuery 2
C Importare file XML Javascript 1
M Importare dati Xml in un file txt PHP 0
G Importare file txt in word Windows e Software 2
I Importare file txt in database PHP 2
A Importare da un file Xml un link Flash 0
E Importare File su access da web MS Access 2
W Importare parti di file txt nel database PHP 0
I Importare file .eps. Flash 1
F Importare dati da un file txt PHP 3
felino Importare VHS: video in bianco e nero Discussioni Varie 6
A Importare array in mysql PHP 1
Valerio93 Importare database senza backup MySQL 0
R [MySQL] importare tabella cvs MySQL 0
camilia come importare thunderbird in Outlook Windows e Software 1
M Importare - Manipolare Json Array Sviluppo app per Android 2
N [MySQL] Importare un database da MAMP a Remoto MySQL 4
W [WooCommerce] importare Prodotti suddivisi con: Categorie, Prodotti, Attributi E-Commerce 6
T mysql tutorial per importare tabelle access in mysql aiuto MySQL 2
L [Wordpress][HTML]Importare articoli o progetti in pagina html WordPress 0
A [WordPress] Importare immagini in post WordPress 2
G Importare database dentro un contenitore (docker) wordpress Programmazione 1
alessandra86 Importare un xlsx in un database Mysql PHP 2
G importare database mysql dentro un contenitore (docker) PHP 6
utente importare css da pagina html HTML e CSS 1
Primian Importare dati su tabella MySQL MySQL 3
felino Importare i post di Facebook tra gli articoli di Wordpress WordPress 0
booklisa Tema Wordpress importare da demo CMS (Content Management System) 3
E Importare codice html da una pagina tramite php PHP 9
N come importare da dbf a mysql? MySQL 2
P Importare dati da Tessera Sanitaria CNS Programmazione 25
D Importare dati da più files excel in access MS Access 3
L Importare post multipli in wp WordPress 5
neo996sps [PHP] Importare immagini in pagina PHP 0
L Importare e troncare una stringa da url PHP 16
M Importare pagine database pubblico in foglio di calcolo OpenOffice Windows e Software 0
ivarello Importare CSV e compilare le giuste tabelle PHP 2
L importare dati xml a mysql PHP 29
M CSV to MySQL - importare da csv in MySQL MySQL 3

Discussioni simili