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 :

Importation fichier 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 Importation fichier CSV
    Voici le fonctionnement.

    Parcours d'un fichier csv
    upload sur le serveur
    traitement sur le fichier avec insertion dans la base de donnée

    Tous ça marche mais ce que veux l'utilisateur
    c'est que pendant l'ajout on va verifier si il y a une doublon parmi les donnés dans dans la liste et comparer dans la base de donnée.
    Si on trouve un doublon, on le supprime depuis le fichier csv mais pas dans la base.
    Si c'est le traitement inverse il n' ya aucun probleme.

    Ce que je veux savoir c'est comment supprime t-on un ligne dans un fichier csv.
    Le ligne qui contient le doublon et déjà identifier

    merci à tous

  2. #2
    Membre éclairé Avatar de metagoto
    Profil pro
    Hobbyist programmateur
    Inscrit en
    Juin 2009
    Messages
    646
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Hobbyist programmateur

    Informations forums :
    Inscription : Juin 2009
    Messages : 646
    Points : 845
    Points
    845
    Par défaut
    Le plus simple c'est probablement de charger le fichier dans un array avec file()
    Puis tu vires les lignes désirées (avec unset($array[index]))
    Finalement tu sauvegardes le tableau dans ton fichier avec file_put_contents()
    implode() te permet de concaténer toutes les lignes du tableaux en une chaine de text (pour la sauvagarde)

  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 à quoi ressemble le code j'ai pas tout mis mais vous pouvez déjà voir a peu près le fonctionnement :

    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
    <?
    if ($btnIMPORTATION!="")
    {	
    			if ($Destination!="")
    			{	
     
     
    					$explodeNom=explode(".",$Destination);
    					$nbExplodeNom=count($explodeNom)-1;
     
    					if (strtolower($explodeNom[$nbExplodeNom])!="csv") 
    					{
    						print "Extension inconnue";
     
    					}	
    					elseif (is_uploaded_file($_FILES['fichier']['tmp_name'])) 
    					{
    						if (move_uploaded_file($_FILES['fichier']['tmp_name'],$cheminDest.$dossierDest.$Destination)) 
    						{
    							$name_fichier=$Destination;
     
     
    							$Ligne=0;
     
    							$traitement=true;
     
     
    						  $rep_open = chdir($dossierDest);
    						  if (file_exists($name_fichier)) // Si le fichier existe, on l'ouvre
    						  {        
    							  $fp = fopen($name_fichier,  "r");
    								while (!feof($fp))  // On parcours le fichier
    								{
    									$ligne = fgets($fp,4096);  // On se déplace d'une ligne
    									$liste = explode(";",str_replace('"','',$ligne));  // Champs séparés par ;
     
    								// ici important
    									$col1 = htmlentities(trim($liste[0]),ENT_QUOTES); 
    									$col2 = htmlentities(strtoupper(trim($liste[1])),ENT_QUOTES); 
    									$col3 = htmlentities(trim($liste[2]),ENT_QUOTES); 
    									$col4 = htmlentities(trim($liste[3]),ENT_QUOTES); 
    									$col5 = htmlentities(trim($liste[4]),ENT_QUOTES); 
     
     
     
     
     
    										if($Ligne==0) // si ligne de noms des champs
    										{ 
    													$var=" style=\"font-weight: bold;\"";			
     
    													if($col1=='A' and $col2=='B' and  $col3=='C' 
    													and $col4=='D'  and $col5=='D')
    													{ // bon ordre/nom des champs ?
    														$color="#FFFFFF";
    														$req=$col1.",t".$col2.",t".$col3.",t".$col4.",t".$col5."";
    														//echo $req."<br>";
    														$traitement=true;
     
    													}else{
     
    														$traitement=false;
    													}
    										}else{
    											$var="";
     
    										}
     
     
    										if($Ligne!=0)
    										{
    													$mail=trim($col5);
    													$req="select id from table where infMAIL=\"".$mail."\"";
    													$res=mysql_query($req);
    													if (mysql_num_rows($res)>0) {
     
    														//Ici je connais la ligne qui a le doublon dans le fichier csv donc ici ke traitement ??
    														print "doulons ligne".$Ligne;
     
     
    													}
    										}			
     
    									//le reste du code	
    									//Insertion dans la base
    									//gestion des erreurs			
    									}
     
    							}
     
    					}
     
    			}					
     
    	  }
     
    }
     
    ?>
    et j'ai touver ce script sur le net qui me semble utile mais je ne pas comment l'utiliser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    //fonction permettant de modifier une ligne dans un fichier
    function modif_var($msg, $li, $nom)
    {
    $array = file($nom);
    $array[$li] = "$msg";
     
    $fo = fopen ("$nom", "r+b");
    for ($l=0;$l<sizeof($array);$l++)
    { 
    fwrite($fo, (trim($array[$l])." n"));
    }
    fclose ($fo);
    }

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Points : 1 357
    Points
    1 357
    Par défaut
    Bonjour,

    Va voir là : http://dev.mysql.com/doc/refman/5.0/fr/load-data.html et regarde l'option "ignore".

Discussions similaires

  1. Import fichier CSV
    Par oki972 dans le forum SQLite
    Réponses: 5
    Dernier message: 08/10/2007, 20h58
  2. [Pb Importation fichier CSV]
    Par Jeremie_Vi dans le forum Access
    Réponses: 2
    Dernier message: 04/05/2007, 06h54
  3. Importation fichier CSV Excel
    Par @lex(is) dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 22/06/2006, 02h16
  4. Update de plusieurs tables, import fichier csv sql loader
    Par fusuke dans le forum SQL*Loader
    Réponses: 2
    Dernier message: 18/05/2006, 15h08
  5. Réponses: 9
    Dernier message: 31/01/2006, 22h42

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