Le code suivant permet de lire un fichier .csv et d’insérer les données dans une table Mysql.
Les colonnes du fichier .csv doivent correspondre aux champs de la talbe Mysql.

Fonction de lecture de fichier .csv en PHP

En entrée de la fonction, on passe le nom du fichier .csv ainsi que le format du séparateur des données dans ce fichier.
En sortie de la fonction on obtient un tableau contenant les données du fichier .csv.

<?php
function lire_csv($nom_fichier, $separateur =";"){
    $row = 0;
    $donnee = array();    
    $f = fopen ($nom_fichier,"r");
    $taille = filesize($nom_fichier)+1;
    while ($donnee = fgetcsv($f, $taille, $separateur)) {
        $result[$row] = $donnee;
        $row++;
    }
    fclose ($f);
    return $result;
}
?>

Fonction préparant les requêtes d’insertion de données .csv dans base Mysql

En entrée l’on passe les données csv (fonction précédente) et le nom de la table Mysql qui doit être remplie.
En sortie on obtient la liste des requêtes d’insertion dans la base de données.

<?php
function requete_insert($donnees_csv, $table){
    $insert = array();
    $i = 0;      
    while (list($key, $val) = @each($donnees_csv)){
/*On ajoute une valeur vide ' ' en début pour le champs d'auto-incrémentation  s'il existe, sinon enlever cette valeur*/
           if ($i>0){
            $insert[$i] = "INSERT into ".$table." VALUES(' ',".$id_user.",'"     
            $insert[$i] .= implode("','", $val);
            $insert[$i] .= "')";                      
   }$i++;
        }       
    return $insert;
}
?>

Lecture du fichier .csv et insertion des données dans la base MySQL

Lancement de la lecture du fichier nom_de_mon_fichier.csv et insertion des données dans la table Mysql nom_de_ma_table_sql

<?php
  $fichier=nom_de_mon_fichier.csv
  $nom_table = "nom_de_ma_table_sql";
  $donnees = lire_csv($fichier);
  $requetes= requete_insert($donnees, "$nom_table");
  foreach($requetes as $requete)
  {
    $result = mysql_query($requete) or die('Erreur SQL !'. $requete.'<br />'.mysql_error());
  }
?>
0 réponses

Laisser un commentaire

Participez-vous à la discussion?
N'hésitez pas à contribuer!

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.