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 :

[Tableaux] Manipulation de données dans un Array


Sujet :

Langage PHP

  1. #1
    Membre actif
    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 : 39
    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
    Points : 287
    Points
    287
    Par défaut [Tableaux] Manipulation de données dans un Array
    Bonjour,

    Suite à la lecture d'un fichier CSV, j'enregistre les informations trouvé dans un Array.

    (clé représente la clé de l'Array)

    Clé|ID|nom
    1 |1 |A
    2 |2 |A
    3 |3 |B
    4 |4 |C
    5 |5 |C
    6 |6 |D

    Ensuite, je supprime les doublons du de l'array, le champ "Nom" devant être unique. Je créer donc un autre Array sans doublons :

    Clé|ID|nom
    1 |1 |A
    2 |3 |B
    3 |4 |C
    4 |6 |D

    Mon soucie, pour des raisons futurs dans le script, j'aurai aimé avec la même valeur entre le champ "clé" et "id" :

    Clé|ID|nom
    1 |1 |A
    2 |2 |B
    3 |3 |C
    4 |4 |D

    Je ne sais pas comment mettre à jours le champ ID...

    Merci d'avance pour vos indications.

  2. #2
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Points : 12 572
    Points
    12 572
    Par défaut
    Dans ce cas , tu supprime le champs ID et tu utilise le champs clé de partout ...

  3. #3
    Membre confirmé Avatar de Katachana
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Avril 2007
    Messages : 755
    Points : 503
    Points
    503
    Par défaut
    Est ce que tu as besoin du coup de garder le champ "ID" ?

    Parce que tu pourrais créer un nouveau tableau avec seulement les valeur du champs "nom"

  4. #4
    Membre actif
    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 : 39
    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
    Points : 287
    Points
    287
    Par défaut
    en faite j'ai trouvé comment résoudre mon problème.

    En faite, je créer mon tableau mais dans les ID.

    Je vire les doublons (d'ailleurs je viens de voir que mon algo déconnait un peu...)
    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
    if($fp = fopen($this->file,"r")) 
    {
    // Création du tableau users+profiles
    $dataUsers = array();
     
    // Insertion des uers+profils par défauts
    $dataUsers[] = array('Helpdesk', '', '', '', 'NULL', '', '', 'Helpdesk Injector', 'NULL', 0, 0, 'fr_FR', 20, 0, 'NULL', -1, -1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 0, 0, 0, 1, 0, 1, 0);
    $dataUsers[] = array('glpi', '', '41ece51526515624ff89973668497d00', '', '', '', '', '', 'NULL', 0, 1, 'fr_FR', 20, 1, 'NULL', -1, 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 0, 0, 0, 4, 0, 1, 0);
    $dataUsers[] = array('post-only', '*5683D7F638D6598D057638B1957F194E4CA974FB', '3177926a7314de24680a9938aaa97703', '', '', '', '', '', 'NULL', 0, 0, 'fr_FR', 20, 1, 'NULL', -1, -1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 0, 0, 0, 1, 0, 1, 0);
    $dataUsers[] = array('tech', '*B09F1B2C210DEEA69C662977CC69C6C461965B09', 'd9f9133fb120cd6096870bc2b496805b', '', '', '', '', '', 'NULL', 0, 1, 'fr_FR', 20, 1, 'NULL', -1, -1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 0, 0, 0, 4, 0, 1, 0);
    $dataUsers[] = array('normal', '*F3F91B23FC1DB728B49B1F22DEE3D7A839E10F0E', 'fea087517c26fadd409bd4b9dc642555', '', '', '', '', '', 'NULL', 0, 0, 'fr_FR', 20, 1, 'NULL', -1, -1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 0, 0, 0, 2, 0, 1, 0);
     
     
    $comparaison = array();
    $dataUsersSansDoublons = array();	
     
    while ($ligne = fgetcsv($fp, $this->taille, $this->delimiteur)) 
    {
     
    	if(!empty($ligne[0]) && !empty($ligne[1]))
    	{
    		// Mise en forme des chaines de caractères
    		$ligne[0] = strtoupper(str_replace('-',' ',$ligne[0])); // NOM
    		$ligne[1] = ucwords(str_replace('-',' ',$ligne[1])); // PRENOM
    		$ligne[12] = strtolower($ligne[12]); // EMAIL
     
    		// Pour éviter un bug, si le champs dans le fichier CVS est vide, on les met à blanc
    		if(empty($ligne[2]))
    		{
    			$ligne[2] = '';
    		}
    		if(empty($ligne[5]))
    		{
    			$ligne[5] = '';
    		}
    		if(empty($ligne[12]))
    		{
    			$ligne[12] = '';
    		}
    		if(empty($ligne[13]))
    		{
    			$ligne[13] = '';
    		}
    		if(empty($ligne[14]))
    		{
    			$ligne[14] = '';
    		}
     
    		// Convertion du Service en N° de service
    		$reponse = mysql_query('SELECT ID,name FROM glpi_dropdown_locations WHERE name LIKE "'.$ligne[5].'"'); // Requête SQL
    		while ($donnees = mysql_fetch_array($reponse) )
    		{
    			$ligne[5] = $donnees['ID'];
    		}
     
    		// Insertion des uers+profils du fichier CSV
    		// Définie les séparateur sde nom afin d'avoir un login homogène, sans espaces ou "-"
    		$separateurs = array('-',' ');
    		$dataUsers[] = array(strtoupper(str_replace($separateurs,'.',$ligne[1]).'.'.str_replace($separateurs,'.',$ligne[0])),'',md5(strtolower($ligne[0])),$ligne[12],$ligne[13],$ligne[14],'NULL',$ligne[0],$ligne[1],$ligne[5],0,'fr_FR',20, 1, 'Numéro de matricule : '.$ligne[2], -1, 1,'0000-00-00 00:00:00', '0000-00-00 00:00:00', 0, 0, 0, 1, 1, 1, 0);
    		// Tableau qui va me permettre d'enlever les doublons du tableau dataUsers suivant les critères suivant : Nom, Prénom, adresse email et N° de matricule.
    		$comparaison[] = $ligne[1].$ligne[0].$ligne[12].$ligne[3];
    	}
    }
    // On supprime les doublons possibles
    $comparaison = array_unique($comparaison);
    foreach ($comparaison as $cleComparaison => $valComparaison) 
    {
    	$dataUsersSansDoublons[] = $dataUsers[$cleComparaison];
    }
    }
    fonction pour viré les doublons :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    // On supprime les doublons possibles
    $comparaison = array_unique($comparaison);
    foreach ($comparaison as $cleComparaison => $valComparaison) 
    {
    	$dataUsersSansDoublons[] = $dataUsers[$cleComparaison];
    }
    Puis ensuite, lorsque j'insère les donnée du tableau dans une table mysql, je génère les ID à ce moment. Comme ca je suis sur qu'il son bien ordonné.

    Ce problème est donc réglé, mais si jamais vous avez une idée pour un algo plus éfficage pour supprimer des doublons dans un tableau suivant quelques critères, je suis preneur !

    Merci encore pour votre participation !

  5. #5
    Membre actif
    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 : 39
    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
    Points : 287
    Points
    287
    Par défaut
    Bon laissez tomber, ma fonction fonctionne parfaitement !

    C'est jusque que dans mon fichier CSV j'ai des homonymes et dans ma base je ne doit pas en avoir !

    Vraiment pas pratique !

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

Discussions similaires

  1. [Tableaux] Traitement de données dans un Array
    Par abeh25 dans le forum Langage
    Réponses: 9
    Dernier message: 30/06/2009, 13h57
  2. [Tableaux] Extraction de données dans 'array'
    Par soshin dans le forum Langage
    Réponses: 4
    Dernier message: 23/09/2007, 13h51
  3. [Tableaux] inscrire des données dans MySQL
    Par manciaux dans le forum Langage
    Réponses: 5
    Dernier message: 01/09/2006, 09h43
  4. Réponses: 2
    Dernier message: 02/08/2006, 15h11
  5. [Tableaux] Problème PHP - Recherche dans un Array
    Par daniel_gre dans le forum Langage
    Réponses: 1
    Dernier message: 18/07/2006, 09h10

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