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

Langage PHP Discussion :

fichier csv + base de donnée


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 114
    Par défaut fichier csv + base de donnée
    Bonsoir,

    je souhaiterais faire la chose suivante mais je suis bloqué par deux étapes dans la finalisation. Je dispose d'un fichier .csv comportant des lignes du type :

    date;ville;periode;commentaires;
    date;ville;periode;commentaires;
    ...

    Mes questions sont les suivantes :

    - La fonction fgetscsv permet d'extraire les données mais elles donnent également les lignes blanches. Comment s'en affranchir lorsqu'on affiche les résultats de fgetscsv ? Avec file, je n'ai pas ce problème.

    je souhaiterais envoyer les données dans une base mais je voudrais vérifier auparavant que par exemple la date ou encore la ville n'existe pas déjà dans la base. En d'autres termes, comment insérer ces données dans la base sans avoir de doublons ? C'est à dire si on a par exemple :

    12/03/2104;Paris;matin;joli;
    12/03/2104;Paris;soir;Nuit noire;

    Merci d'avance pour vos contributions, je n'ai pas mis de code car je souhaite des pistes de réflexion et non pas du code tout pret.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Pour les lignes vides, tu peux simplement contrôler leur retour de fgetcsv pour chaque ligne.
    Pour l'unicité, met un index sur ta base de données si tu dois avoir des éléments uniques.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 114
    Par défaut
    Merci pour ces pistes mais concernant les identifiants uniques comment le spécifier via une requête php au moment de l'INSERT INTO pour enregistrer les valeurs dans la base de données ?

    Merci encore

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    S'il y a un index UNIQUE sur tes couples de valeurs tu ne peux pas avoir de doublons ; tu peux alors faire un INSERT IGNORE INTO qui ignorera les requêtes de doublons.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 114
    Par défaut
    La fonctions suivante doit me permettre de lire le fichier csv en s'affranchissant des sauts de lignes :

    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
     
    function read_csv($filename)    
    {
        if($file=fopen($filename,'r'))
        {
            while ($line=fgetcsv($file,1024,';'))
                   {
                       if (!(is_null($line)))
                       {
                           $data[]=$line;
                       }
                   }
            return $data;
        }
    }
    J'obtiens le résultat suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Array ( [0] => Array ( [0] => 2013-12-5 [1] => Paris [2] => matin [3] => ensoleillé [4] => 1 [5] => 5 [6] => 8 [7] => Temps ensoleillé mais frais etc.  [8] => ) [1] => Array ( [0] => ) [2] => Array ( [0] => 2013-12-5 [1] => Paris [2] => après-midi [3] => pluvieux [4] => 2 [5] => 9 [6] => 11 [7] => Pluie fine est attendue etc.  [8] => ) [3] => Array ( [0] => ) [4] => Array ( [0] => 2013-12-5 [1] => Paris [2] => nuit [3] => nuageux [4] => 4 [5] => 9 [6] => 11 [7] => Temps couvert etc.  [8] => ) [5] => Array ( [0] => ) [6] => Array ( [0] => 2013-12-6 [1] => Paris [2] => matin [3] => brumeux [4] => 3 [5] => 12 [6] => 13 [7] => Temps brumeux etc.  [8] => ) [7] => Array ( [0] => ) [8] => Array ( [0] => 2013-12-6 [1] => Paris [2] => après-midi [3] => ensoleillé [4] => 1 [5] => 14 [6] => 15 [7] => Temps ensoleillé etc.  [8] => ) [9] => Array ( [0] => ) [10] => Array ( [0] => 2013-12-6 [1] => Paris [2] => nuit [3] => nuageux [4] => 4 [5] => 9 [6] => 11 [7] => Temps nuageux etc.  [8] => ) [11] => Array ( [0] => ) [12] => Array ( [0] => ) [13] => Array ( [0] => ) [14] => Array ( [0] => ) [15] => Array ( [0] => ) )
    mais je dois avouer sécher lorsqu'il s'agit pour envoyer ces données dans la base car on constate que plusieurs données sont similaires et je ne veux pas de doublons.

    De plus, par la suite, une fois que les données seront dans la base de données sera-t-il possible de les réafficher de manière ordonnée ? Comment faire disparaitre le champ [8] qui est vide ?

    Merci encore

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Je te l'ai déjà dit 2 fois : il faut mettre un index UNIQUE sur les colonnes que tu veux uniques.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

Discussions similaires

  1. fichier CSV modification des données.
    Par suya95 dans le forum Excel
    Réponses: 8
    Dernier message: 26/07/2006, 12h22
  2. [Conception] Lier des fichiers à une base de données
    Par sandytarit dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 29/06/2006, 20h25
  3. aide pour lire le contenu d'un fichier de base de donnée
    Par hichamo dans le forum Décisions SGBD
    Réponses: 5
    Dernier message: 11/05/2006, 10h01
  4. [Conception] upload de fichiers et base de données
    Par Corben dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 14/10/2005, 09h10
  5. Fichier de base de données
    Par Nout dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 14/08/2004, 00h28

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