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 :

[CSV] Trouver et coder un algo pour un traitement à partir de fichier CSV


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    1 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 080
    Par défaut [CSV] Trouver et coder un algo pour un traitement à partir de fichier CSV
    Bonjour,

    Je recherche un algo pour faire un traitement sur un fichier CSV :



    J'ai déjà réfléchi à un algo que je vous explique avec un schéma. Je ne sais pas si celui ci est le plus adapter, mais c'est une piste :



    1. Prendre les données de la colonne « CODE_DIRECTION » et la mettre dans la colonne « name ».
    2. Prendre les données de la colonne « CODE_DIRECTION » et la mettre dans la colonne « completename ».
    3. Prendre les données de la colonne « DIRECTION » et la mettre dans la colonne « comments ».
    4. Déterminer le « level » : ici 1 car c’est la 1er passe.
    5. Prendre les données de la colonne « CODE_SERVICE » et la mettre dans la colonne « name ».
    6. Prendre les données de la colonne « name » du level 1 pour les copiées dans completename
    7. Puis, prendre les données de la colonne « SERVICE » et les concaténées dans la colonne « completename ».
    8. Prendre les données de la colonne « SERVICE » et la mettre dans la colonne « comments ».
    9. Déterminer le « level » : ici 2 car c’est la 2eme passe.
    10. Prendre les données de la colonne « CODE_GROUPE » et la mettre dans la colonne « name ».
    11. Prendre les données de la colonne « name » du level 1 pour les copiées dans completename
    12. Prendre les données de la colonne « name » du level 2 pour les concaténées dans completename
    13. Puis, prendre les données de la colonne « CODE_GROUPE » et les concaténées dans la colonne « completename ».
    14. Prendre les données de la colonne « GROUPE » et la mettre dans la colonne « comments ».
    15. Déterminer le « level » : ici 3 car c’est la 3eme passe.


    Le problème de cet algo c’est que je peux avoir des redondances. Il me faudra ceci pour que mon traitement de fichier soit exact :



    Je ne suis pas très bon en algo, je pense donc que ce genre de traitement est assez compliqué.

    Pourriez vous m'aider à coder en PHP l'algo permettant de faire ce traitement ?

    Je vous remercie bcp, j'ai besoin de vous pour ce gros problème auquel je réfléchie depuis hier...

  2. #2
    Membre éprouvé
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    1 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 080
    Par défaut
    bon j'ai codé un debut de l'algo :

    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
    48
    49
    50
    51
    52
    53
    <?php 
     
    // fonction qui permet de faire un array avec les nom de directions présent dans le fichier CSV
    function tabDirection()
    {
    	$file = "fichiers_csv/employeakf.csv";
    	$taille = 1024;
    	$delimiteur = ";";
    	/* ouverture en lecture */
    	if($fp = fopen($file,"r")) {
    	/* extraction d'une ligne */
     
    		$dataDirection = array();
    		$comparaison = array();
    		$dataDirectionSansDoublons = array();
     
    		while ($ligne = fgetcsv($fp, $taille, $delimiteur)) 
    		{						
    			if(!empty($ligne[9]) && !empty($ligne[10])) //Si on à une ligne vide dans le CSV on ne l'inclut pas dans l'array
    			{
    				$dataDirection[] = array($ligne[9],$ligne[10]);
    				$comparaison[] = $ligne[9].$ligne[10];
    			}
    		}
     
    		$comparaison = array_unique($comparaison); //permet de supprimer les doublons
     
    		foreach ($comparaison as $cleComparaison => $valComparaison) 
    		{
    			$dataDirectionSansDoublons[] = $dataDirection[$cleComparaison]; // création d'un array sans doublons
    		}
     
    		return $dataDirectionSansDoublons; // retour du tableau des dirrection
     
    		fclose ($fp);
    	} else {
    		echo "Ouverture impossible.";
    	}	
    }
     
    // affichage du tableau direction
     
    	for($i=0;$i<count($tabDirection);$i++)
    	{
    		echo $tabDirection[$i][0]; //Ligne & colonne
    		echo ';';
    		echo $tabDirection[$i][1]; //Ligne & colonne
    		echo '<br>';
    	}
     
     
        /* fermeture fichier */
    ?>
    Pour le moment j'ai les éléments pour réaliser l'étape 1,2,3.

    je cherche comment mettre ces données dans notre tableau général.

    Si vous savez comment on fait... (les array fonctionne en colonne et non en ligne, ce qui rend plus difficile l'insertion des données)

  3. #3
    Membre éprouvé
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    1 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 080
    Par défaut
    Bon,j'ai le début du script.

    Pour le moment je créer mon Array général avec mes données concernant les directions.

    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
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    <?php 
     
    // fonction qui permet de faire un array avec les directions
    function tabDirection()
    {
    	$file = "fichiers_csv/employeakf.csv";
    	$taille = 1024;
    	$delimiteur = ";";
    	/* ouverture en lecture */
    	if($fp = fopen($file,"r")) {
    	/* extraction d'une ligne */
     
    		$dataDirection = array();
    		$comparaison = array();
    		$dataDirectionSansDoublons = array();
     
    		while ($ligne = fgetcsv($fp, $taille, $delimiteur)) 
    		{						
    			if(!empty($ligne[9]) && !empty($ligne[10]))
    			{
    				$dataDirection[] = array($ligne[9],$ligne[10]);
    				$comparaison[] = $ligne[9].$ligne[10];
    			}
    		}
     
    		$comparaison = array_unique($comparaison);
     
    		foreach ($comparaison as $cleComparaison => $valComparaison) 
    		{
    			$dataDirectionSansDoublons[] = $dataDirection[$cleComparaison];
    		}
     
    		return $dataDirectionSansDoublons;
     
    		fclose ($fp);
    	} else {
    		echo "Ouverture impossible.";
    	}	
    }
     
    function tabGLPILocations()
    {
    	$tabGLPILocations = array();
    	$tabGLPILocations[] = array('ID','FK_entities','name','parentID','completename','comments','level');
     
    	// Insertion des données sur les directions dans le tableau général
    	$tabDirection = tabDirection(); // Array des nom de directions d'autoliv
    	for($i=0;$i<count($tabDirection);$i++)
    	{
    		$tabGLPILocations[] = array($i,
    					    '0',
                                                 $tabDirection[$i][0] /*Ligne & colonne : CODE_DIRECTION > name & comptename*/,
    					    '0',
    					    $tabDirection[$i][0] /*Ligne & colonne : CODE_DIRECTION > name & comptename*/,
    					    $tabDirection[$i][1] /*Ligne & colonne : DIRECTION > comments*/,
    					    '1'
    					    );
    	}
     
    	for($i=0;$i<count($tabGLPILocations);$i++)
    	{
    		echo $tabGLPILocations[$i][0]; //Ligne & colonne
    		echo ';';
    		echo $tabGLPILocations[$i][1]; //Ligne & colonne
    		echo ';';
    		echo $tabGLPILocations[$i][2]; //Ligne & colonne
    		echo ';';
    		echo $tabGLPILocations[$i][3]; //Ligne & colonne
    		echo ';';
    		echo $tabGLPILocations[$i][4]; //Ligne & colonne
    		echo ';';
    		echo $tabGLPILocations[$i][5]; //Ligne & colonne
    		echo ';';
    		echo $tabGLPILocations[$i][6]; //Ligne & colonne
    		echo '<br>';
    	}
    }	
     
    	tabGLPILocations();
    ?>
    résultat :



    Je dois faire une autre fonction pour avoir les données du level 2. Par contre ici, je ne sais pas encore comment je vais faire les relation entre le level 1 et 2...

  4. #4
    Membre éprouvé
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    1 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 080
    Par défaut
    J'avance dans mon travail !!

    Pour le moment j'arrive à faire les étapes 1,2,3,4,5,6,7,8,9 :

    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
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    <?php 
     
    // fonction qui permet de faire un array avec les directions
    function tabDirection()
    {
    	$file = "fichiers_csv/employeakf.csv";
    	$taille = 1024;
    	$delimiteur = ";";
    	/* ouverture en lecture */
    	if($fp = fopen($file,"r")) {
    	/* extraction d'une ligne */
     
    		$dataDirection = array();
    		$comparaison = array();
    		$dataDirectionSansDoublons = array();
     
    		while ($ligne = fgetcsv($fp, $taille, $delimiteur)) 
    		{						
    			if(!empty($ligne[9]) && !empty($ligne[10]))
    			{
    				$dataDirection[] = array($ligne[9],$ligne[10]);
    				$comparaison[] = $ligne[9].$ligne[10];
    			}
    		}
     
    		$comparaison = array_unique($comparaison);
     
    		foreach ($comparaison as $cleComparaison => $valComparaison) 
    		{
    			$dataDirectionSansDoublons[] = $dataDirection[$cleComparaison];
    		}
     
    		return $dataDirectionSansDoublons;
     
    		fclose ($fp);
    	} else {
    		echo "Ouverture impossible.";
    	}	
    }
     
    // fonction qui permet de faire un array avec les services
    function tabService()
    {
    	$file = "fichiers_csv/employeakf.csv";
    	$taille = 1024;
    	$delimiteur = ";";
    	/* ouverture en lecture */
    	if($fp = fopen($file,"r")) {
    	/* extraction d'une ligne */
     
    		$dataService = array();
    		$comparaison = array();
    		$dataServiceSansDoublons = array();
     
    		while ($ligne = fgetcsv($fp, $taille, $delimiteur)) 
    		{						
    			if(!empty($ligne[7]) && !empty($ligne[8]) && !empty($ligne[9]))
    			{
    				$dataService[] = array($ligne[7],$ligne[8],$ligne[9]);
    				$comparaison[] = $ligne[7].$ligne[8].$ligne[9];
    			}
    		}
     
    		$comparaison = array_unique($comparaison);
     
    		foreach ($comparaison as $cleComparaison => $valComparaison) 
    		{
    			$dataServiceSansDoublons[] = $dataService[$cleComparaison];
    		}
     
    		return $dataServiceSansDoublons;
     
    		fclose ($fp);
    	} else {
    		echo "Ouverture impossible.";
    	}	
    }
     
    function tabGLPILocations()
    {
    	$tabGLPILocations = array();
    	$tabGLPILocations[] = array('ID','FK_entities','name','parentID','completename','comments','level');
     
    	// Insertion des données sur les directions dans le tableau général
     
    	// Insertion des données sur les directions
    	$tabDirection = tabDirection(); // Array des nom de directions
    	$id = 0; // Déclaration de l'ID de l'Array général
    	for($i=0;$i<count($tabDirection);$i++)
    	{
    		$tabGLPILocations[] = array($id,
    									'0',
    									$tabDirection[$i][0] /* Ligne & colonne : CODE_DIRECTION > name & comptename */,
    									'0',
    									$tabDirection[$i][0] /* Ligne & colonne : CODE_DIRECTION > name & comptename */,
    									$tabDirection[$i][1] /* Ligne & colonne : DIRECTION > comments */,
    									'1'
    									);
    		$id++;
    	}
     
    	// Insertion des données sur les services
    	$tabService = tabService(); // Array des nom de Services
    	for($i=0;$i<count($tabService);$i++)
    	{
    		$tabGLPILocations[] = array($id,
    									'0',
    									$tabService[$i][0] /* Ligne & colonne : CODE_SERVICE > name & comptename */,
    									'0',
    									$tabService[$i][2].' > '.$tabService[$i][0] /* Ligne & colonne : CODE_SERVICE > name & comptename */,
    									$tabService[$i][1] /* Ligne & colonne : SERVICE > comments */,
    									'2'
    									);
    		$id++;
    	}
     
    	// Affichage de l'array général
    	for($i=0;$i<count($tabGLPILocations);$i++)
    	{
    		echo $tabGLPILocations[$i][0]; //Ligne & colonne
    		echo ';';
    		echo $tabGLPILocations[$i][1]; //Ligne & colonne
    		echo ';';
    		echo $tabGLPILocations[$i][2]; //Ligne & colonne
    		echo ';';
    		echo $tabGLPILocations[$i][3]; //Ligne & colonne
    		echo ';';
    		echo $tabGLPILocations[$i][4]; //Ligne & colonne
    		echo ';';
    		echo $tabGLPILocations[$i][5]; //Ligne & colonne
    		echo ';';
    		echo $tabGLPILocations[$i][6]; //Ligne & colonne
    		echo '<br>';
    	}
    }	
     
    	tabGLPILocations();
    ?>
    Résultat :



    La les choses se corse ! Comment déterminer IDparent...

  5. #5
    Membre éprouvé
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    1 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 080
    Par défaut
    Bon le script est presque fini !

    Je réalise toutes les insertions de données dans l'array général.

    J'ai plus qu'à déterminé les IDparents.

    Pour cela j'ai vraiment besoin de vous, car je ne sais pas comment faire !

  6. #6
    Membre éprouvé
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    1 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 080
    Par défaut
    bon fini !

    pour trouvé id parents, je fais au préalable un autre array avec les id ensuite je fais une recherche dans cet array pour trouvé ld'id parent !

    merci qui ? merci Arnaud !


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

Discussions similaires

  1. Pour importer les données en fichier CSV, toujours une erreur
    Par wangying dans le forum Développement de jobs
    Réponses: 2
    Dernier message: 16/12/2011, 14h38
  2. [AC-2010] [débutant] Code pour automatiser l'import de fichiers csv
    Par Jul38 dans le forum VBA Access
    Réponses: 12
    Dernier message: 16/12/2011, 08h49
  3. script pour extraire ville d'un fichier csv
    Par asprogramer dans le forum VBScript
    Réponses: 0
    Dernier message: 22/07/2011, 10h13
  4. Réponses: 1
    Dernier message: 11/07/2011, 16h01
  5. Réponses: 1
    Dernier message: 07/06/2007, 11h16

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