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 :

lecture ou importation multiple CSV


Sujet :

Langage PHP

  1. #1
    Membre régulier Avatar de stomerfull
    Inscrit en
    Septembre 2005
    Messages
    307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 307
    Points : 122
    Points
    122
    Par défaut lecture ou importation multiple CSV
    Bonjour ,

    J'ai un dossier contenant plusieurs fichier CSV

    Ce que je voudrais faire c'est de parser dynamiquement ces fichiers et sauver les données dans la Mysql après

    est il possible de parcourir le fichier dans le dossier et de les parser après ou l'upload multiple est il une autre solution

    Merci pour votre aide

  2. #2
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    comment ça "parser dynamiquement" ??

  3. #3
    Membre régulier Avatar de stomerfull
    Inscrit en
    Septembre 2005
    Messages
    307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 307
    Points : 122
    Points
    122
    Par défaut
    voici ce que jai fait mais ça marche pas

    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
     
    function importMultiple(){
     
    		    set_time_limit(0);
    	        $content_dir = 'file/'; 
     
    			$files = scandir($content_dir);
    			//echo "<pre>"; print_r($files);
     
    			foreach($files as $file) {
    			        if($file!="." && $file!=".." ) {
     
    					if (($handle = fopen($file, "r")) !== FALSE) {
    						print $handle;
    						while (($data = fgetcsv($handle, 100000, ";")) !== FALSE) {
    						var_dump($data);
    							if (in_array($data[1], $head, false))
    							{
    									dotest($data);
    							}
    							else if ((strlen ($data [1])>0)  )
    							{
    									dotest1($data);
    							}				
    						}
    					   fclose($handle);
    					}
    				}	
    			}
     
    }
    Dans le dossier file/ j'ai plusieur fichier a parser
    erreur :
    warning: fopen(file1.csv) [function.fopen]: failed to open stream: No such file or directory

  4. #4
    Membre régulier Avatar de stomerfull
    Inscrit en
    Septembre 2005
    Messages
    307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 307
    Points : 122
    Points
    122
    Par défaut
    ceci marche

    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
     
    function importMultiple(){
     
    	        $content_dir = 'file/'; 
    			if($handle = opendir($content_dir))
    			{
    				while($file = readdir($handle))
    				{
    					clearstatcache();
    					if(is_file($content_dir.'/'.$file))
    					{
    						if (($handle1 = fopen($content_dir.'/'.$file, "r")) !== FALSE) {
     
    						while (($data = fgetcsv($handle1, 100000, ";")) !== FALSE) {
    							if (in_array($data[1], $head, false))
    							{
    								dotest ($data);
    							}
    							else if ((strlen ($data [1])>0))
    							{
    								dotest1 ($data);
    							}				
    						}
    					  }	
    					}
     
    				}
    				closedir($handle);
    			} 
     
    }
    Encore merci pour votre réponse

  5. #5
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    J'aurais procédé comme suit mais bon...

    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
    function import_csv_files ($dir, $method) {
        try {
            $dir = new DirectoryIterator($dir);
        }
        catch (Exception $e) {
            return false;
        }
     
        foreach ($dir as $fileinfo) {
            if (strtolower($file->getExtension()) !== 'csv')
                continue;
     
            try {
                $file = new SplFileObject($path = $fileinfo->getPath(), 'r');
            }
            catch (Exception $e) {
                DEBUG && trigger_error("Unable to open $path", E_USER_WARNING);
                continue;
            }
     
            while (!$file->feof()) {
                $row = $file->fgetcsv(CSV_DELIMITER, CSV_ENCLOSURE, CSV_ESCAPE);
                if (empty($row)))
                    continue;
     
                $result[$path] = $method($row);
            }
        }
     
        return $path;
    }
     
    $head = (array)"???";
    $res = import_csv_files(dirname(__FILE__) . '/csv/', function ($data) use ($head) {
        if (in_array($data[1], $head, false))
            dotest($data);
        else if (strlen($data[1])>0)
            dotest1($data);
    });

  6. #6
    Membre régulier Avatar de stomerfull
    Inscrit en
    Septembre 2005
    Messages
    307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 307
    Points : 122
    Points
    122
    Par défaut
    Merci pour votre code :-)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Importation] pbm pour importer un ".csv"
    Par javazer dans le forum Outils
    Réponses: 8
    Dernier message: 11/04/2006, 16h06
  2. import fich. CSV - delimitateur ',' - champs contenants ','
    Par nokiariver dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 10/04/2006, 17h26
  3. Réponses: 9
    Dernier message: 31/01/2006, 22h42
  4. [CSV] Imports Excel CSV à reformater
    Par boteha dans le forum Langage
    Réponses: 13
    Dernier message: 23/01/2006, 21h41
  5. Import Excel / CSV
    Par aston_max dans le forum SQL Procédural
    Réponses: 8
    Dernier message: 04/07/2004, 23h31

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