IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Importer des fichiers .CSV dans BDD automatiquement


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 36
    Points : 23
    Points
    23
    Par défaut Importer des fichiers .CSV dans BDD automatiquement
    Bonjour,

    Je cherche à importer des fichiers .CSV (créés par un programme, le nom du fichier est toujours unique et saisi par l'utilisateur du programme) directement dans ma base MySQL, sans intervention supplémentaire de l'utilisateur.

    Seulement, je ne vois pas comment les importer dans une BDD sans intervention de l'utilisateur, et non plus comment lui faire importer plusieurs nouveaux fichiers depuis la dernière importation sans prendre en compte ceux déjà présent dans la base.


    Je suis tombé sur cette fonction en cherchant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    <?php
    	if(isset($_FILES['csv']))
    	{ 
    		 $dossier = 'upload/';
    		 $fichier = basename($_FILES['csv']['name']);
    		 if(move_uploaded_file($_FILES['csv']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
    		 {
    			  echo "Upload du fichier effectué avec succès !";
    		 }
    		 else //Sinon (la fonction renvoie FALSE).
    		 {
    			  echo "Echec de l\'upload !";
    		 }
    	}
     
    	echo "<br>Chemin du fichier : upload/".$_FILES['csv']['name']."<br><br>Resultat Import SQL : <br>";
     
    	mysql_connect('localhost', 'root', '');
    	mysql_select_db('xls_db');
    	mysql_query("SET NAMES UTF8");
     
    	//Le chemin d'acces a ton fichier sur le serveur
    	$fichier = fopen("upload/".$_FILES['csv']['name'], "r");
     
    	//tant qu'on est pas a la fin du fichier :
    	while (!feof($fichier))
    	{
    	// On recupere toute la ligne
    	$uneLigne = addslashes(fgets($fichier));
    	//On met dans un tableau les differentes valeurs trouvés (ici séparées par un ';')
    	$tableauValeurs = explode(';', $uneLigne);
    	// On crée la requete pour inserer les donner (ici il y a 12 champs donc de [0] a [11])
    	$sql="INSERT IGNORE INTO histo VALUES ('".$tableauValeurs[0]."', '".$tableauValeurs[1]."', '".$tableauValeurs[2]."', '".$tableauValeurs[3]."', '".$tableauValeurs[4]."', '".$tableauValeurs[5]."', '".$tableauValeurs[6]."', '".$tableauValeurs[7]."')";
     
    	$req=mysql_query($sql)or die (mysql_error());
    	// la ligne est finie donc on passe a la ligne suivante (boucle)
    	}
    	//vérification et envoi d'une réponse à l'utilisateur
    	if ($req)
    	{
    	echo "<h2>Ajout dans la base de données effectué avec succès</h2>";
    	}
    	else
    	{
    	echo "Echec dans l'ajout dans la base de données";
    	}
    ?>
    Elle me permettrait de demander à l'utilisateur de sélectionner 1 fichier csv et de l'importer, hors je dois en importer plusieurs sans que l'utilisateur n'ai besoin de les importer manuellement.

    Autre piste sur laquelle je me questionne :

    - Création d'un programme qui se chargerais d'importer les fichiers csv.
    Le programme serait exécuté par taches planifiés depuis le serveur tout les jours à une certaine heure.

    Mais je pense qu'il y a plus simple comme solution.
    Si quelqu'un à une idée comment procéder, je lui en serait très reconnaissant.

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Si le fichier est déjà sur le serveur, tu peux éliminer la partie qui fait l'importation et lire directement le fichier, éventuellement avec un bout de code avant pour connaitre le nom du fichier à importer.
    Si tu as plusieurs fichiers à lire, il suffit de faire une boucle sur la liste des noms de fichier.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 36
    Points : 23
    Points
    23
    Par défaut
    Merci pour ta réponse,

    Les fichiers sont bien enregistrés sur le serveur.

    J'ai oublié de préciser que le contenu des fichiers devra être visible sous forme de tableau et que l'utilisateur doit avoir la possibilité de restreindre l'affichage par un critère de recherche.

    Est-il possible de réaliser cela en passant par une boucle de lecture ?
    Je comprend très bien ton idée mais je ne sais pas comment gérer la restriction avec cette méthode.

Discussions similaires

  1. Importer des données depuis des fichiers csv dans MySQL
    Par nrpfc dans le forum SQL Procédural
    Réponses: 24
    Dernier message: 09/10/2012, 16h53
  2. Importation des fichiers csv dans postgresql
    Par georex dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 16/04/2012, 11h51
  3. Importer des fichiers CSV dans SQL Server avec SSIS
    Par nathantahiti dans le forum SSIS
    Réponses: 4
    Dernier message: 02/08/2011, 16h09
  4. importer des fichiers csv dans sql server
    Par nathantahiti dans le forum MS SQL Server
    Réponses: 10
    Dernier message: 22/07/2011, 12h02
  5. [MySQL] importer des données .csv dans BDD MySql
    Par priscillia dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 15/06/2007, 09h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo