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

PHP & Base de données Discussion :

Importation dans table MySQL [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 60
    Par défaut Importation dans table MySQL
    Bonjour!!

    Voici mon probleme : j'ai un fichier php d'import de plusieurs fichiers différents : un fichier 'PAC_détail.csv', 'rubrique.csv' et un fichier .txt.

    Voici mon code :

    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
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    <?php
     
    switch($_POST['action']) {
      case "ajouter":  
      $serveur = "localhost";
      $user = "root";
      $pwd = "";
      $bdd = "cartes";
     
    	mysql_connect($serveur, $user, $pwd) or die('Impossible de se connecter au serveur');
    	mysql_select_db($bdd) or die('Impossible de sélectionner la base de données');
     
    	$fichier=$_FILES['fichier']['name'];
    	move_uploaded_file($_FILES['fichier']['tmp_name'],"../cartes/test/".$fichier);
     
    	$fp = fopen('../cartes/test/'.$fichier,'r'); //lecture du fichier
    	while (!feof($fp)){ //on parcourt toutes les lignes
    		$ligne=fgets($fp); // lecture du contenu de la ligne
    		$sqltest="INSERT INTO test (numero,carte) values ('$numero','$ligne')";
    		$resql=mysql_query($sqltest);
    	};
     
    	$sql2=("select * from test");
    	$resql2=mysql_query($sql2);
     
    	if(mysql_error()){
    			print "Erreur dans la base de données : ".mysql_error();
    			print "<br>Importation stoppée.";
    			exit();
        }; 
    	echo "<font face=\"verdana\" size=2><center><br align=center><br><br>Importation terminée.	<br><br><br><br><br><br><br><br>
    			<a href = http://localhost/cartes/importTXTbdd.php align=center>Retour sur la page d'accueil d'import</a></center></font>"; 
     
    	while($ligne=mysql_fetch_array($resql2)){
    		$pac=substr($ligne['carte'],0,6);
    		$carte=substr($ligne['carte'],6,3);
    		$matricule=substr($ligne['carte'],9,8); 
    		$rubrique=substr($ligne['carte'],18,4);
    		$rubriqueplus=substr($ligne['carte'],21,1);
    		$resteinfos=substr($ligne['carte'],22,65);
    		$monetaire=substr($ligne['carte'],87,1);
    		$jjdateTraitement=substr($ligne['carte'],95,2);
    		$mmdateTraitement=substr($ligne['carte'],97,2);
    		$aaaadateTraitement=substr($ligne['carte'],99,4);
    		$jjdateSaisie=substr($ligne['carte'],104,2);
    		$mmdateSaisie=substr($ligne['carte'],106,2);
    		$aaaadateSaisie=substr($ligne['carte'],108,4);
    		$jjdateEffet=substr($ligne['carte'],118,2);
    		$mmdateEffet=substr($ligne['carte'],120,2);
    		$aaaadateEffet=substr($ligne['carte'],122,4);
    		$hhheureSaisie=substr($ligne['carte'],112,2);
    		$mnheureSaisie=substr($ligne['carte'],114,2);
    		$ssheureSaisie=substr($ligne['carte'],116,2);
    		$tt=substr($ligne['carte'],126,2);
    		$rubriquetotal=$rubrique.$rubriqueplus;
     
    		$result=mysql_query("INSERT INTO carte (numero,pac,carte,matricule,rubrique,rubriqueplus,resteinfos,monetaire,jjdateTraitement,mmdateTraitement,aaaadateTraitement,jjdateSaisie,mmdateSaisie,aaaadateSaisie,jjdateEffet,mmdateEffet,aaaadateEffet,hhheureSaisie,mnheureSaisie,ssheureSaisie,tt) VALUES('$numero','$pac','$carte','$matricule','$rubrique','$rubriqueplus','$resteinfos','$monetaire','$jjdateTraitement','$mmdateTraitement','$aaaadateTraitement','$jjdateSaisie','$mmdateSaisie','$aaaadateSaisie','$jjdateEffet','$mmdateEffet','$aaaadateEffet','$hhheureSaisie','$mnheureSaisie','$ssheureSaisie','$tt')");
     
    		$resqlrub=mysql_query("insert into rubrique (id,rubrique,rubriqueplus,rubriquetotal) value ('$id','$rubrique','$rubriqueplus','$rubriquetotal')");
     
    	};
     
    	$sql_Insertion_PAC="LOAD DATA LOCAL INFILE 'C:\\\wamp\\\www\\\\cartes\\\\PAC_détail.csv'";
    	$sql_Insertion_PAC.="INTO TABLE `pac` FIELDS TERMINATED BY ';' LINES TERMINATED BY '\r\n' ";
    	$resql_Insertion_PAC= mysql_query($sql_Insertion_PAC); 
     
    	$sql_Insertion_rubrique="LOAD DATA LOCAL INFILE 'C:\\\wamp\\\www\\\\cartes\\\\rubriques.csv'";
    	$sql_Insertion_rubrique.="INTO TABLE `librubrique` FIELDS TERMINATED BY ';' LINES TERMINATED BY '\r\n' ";
    	$resql_Insertion_rubrique= mysql_query($sql_Insertion_rubrique); 
     
    	$sqlefftest="Truncate table test";
    	$ressqlefftest =  mysql_query($sqlefftest);
     
    	$sqldateImport="select * from dateImport";
    	$resqldateImport=mysql_query($sqldateImport);	
     
    	$moisImport=$_POST['moisImport'];
    	$anneeImport=$_POST['anneeImport'];
    	$moisannee=$moisImport.$anneeImport;
     
    	$sqlcopiecarte="CREATE TABLE $moisannee SELECT * FROM carte";
    	$ressqlcopiecarte =  mysql_query($sqlcopiecarte);
     
    	if($replace=$_POST['replace']){
    		$sqlcopiecarte2="insert into $moisannee select * from carte";
    		$resqlcopiecarte2=mysql_query($sqlcopiecarte2);
    	}
    	else{
    		$sqlcopiecarte="CREATE TABLE $moisannee SELECT * FROM carte";
    		$ressqlcopiecarte =  mysql_query($sqlcopiecarte);
    	};
     
    	$sqlefflignenull="DELETE FROM $moisannee WHERE pac = ''";
    	$ressqlefflignenull =  mysql_query($sqlefflignenull);
     
    	$sqlefflignenull="DELETE FROM rubrique WHERE rubrique= ''";
    	$ressqlefflignenull =  mysql_query($sqlefflignenull);
     
    	$sqleffcarte="Truncate table carte";
    	$ressqleffcarte =  mysql_query($sqleffcarte);
     
    	$sqleffdateImport="Truncate table dateImport";
    	$ressqleffdateImport=mysql_query($sqleffdateImport);	
     
    	fclose($fp);
     
    	mysql_close();
    	break;
    	default: 
    ?>
     
    <html>
    <body>
    <font face="verdana">
    <form name='form' method='post' action='' enctype='multipart/form-data'>
        <table border='0' cellspacing='0' cellpadding='3' align="center">
    	<tr>
        <td><font face="verdana" size=2><center>Fichier 'PAC_détail.csv' à charger dans la base de donnée :</td> 
        <td> <input type="file" name="fichierpac"></center></font> </td> 
        </tr>
    	<tr>
        <td><font face="verdana" size=2><center>Fichier 'rubrique.csv' à charger dans la base de donnée :</td> 
        <td> <input type="file" name="fichierrub"></center></font> </td> 
        </tr> 
    	<tr>
        <td><font face="verdana" size=2><center>Fichier '.txt' à charger dans la base de donnée :</td> 
        <td> <input type="file" name="fichier"></center></font> </td> 
        </tr>
    	<tr>
    	<select name="moisImport">
    		<option value="janvier">Janvier</option>
    		<option value="fevrier">Février</option>
    		<option value="mars">Mars</option>
    		<option value="avril">Avril</option>
    		<option value="mai">Mai</option>
    		<option value="juin">Juin</option>
    		<option value="juillet">Juillet</option>
    		<option value="aout" selected>Août</option>
    		<option value="septembre">Septembre</option>
    		<option value="octobre">Octobre</option>
    		<option value="novembre">Novembre</option>
    		<option value="decembre">Décembre</option>
    	</select>
    	<select name="anneeImport">
    		<option value="2007">2007</option>
    		<option value="2008">2008</option>
    		<option value="2009">2009</option>
    		<option value="2010">2010</option>
    		<option value="2011">2011</option>
    		<option value="2012">2012</option>
    		<option value="2013">2013</option>
    		<option value="2014">2014</option>
    		<option value="2015">2015</option>
    	</select>
    	<a href="http://localhost/cartes/accueil.php">Retour à la page d'accueil</a>
    	</tr>
    	<br><br>
        <tr>
        <td><input type='checkbox' name='replace' value='replace'>Table déjà créer</td>  
        <td> <input type="submit" name="submit" value="Charger"> </td> 
        </tr>
    	<tr><td>
        <input type="hidden" name="action" value="ajouter"> </td></tr>
      </table>
     
    </form> 
    </font>
    </body> 
    </html>
    <?php } ?>
    Le probleme est qu'il m'importe à chaque fois le fichier 'rubrique.csv' dans ma table librubrique de ma bdd dès que je refais un import d'un fichier .txt uniquement...ce qui ne me va pas j'ai besoin qu'une seule fois dans ma bdd les libellés des rubriques...

    Voici mon fichier de creation de table :

    Code SQL : 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
    CREATE TABLE pac (
      checke varchar(1),
      pac varchar(10),   
      client varchar(150),
      segment_origine varchar(2),
      portef varchar(2),  
      responsable_PortefeuilleDA varchar(75),
      RE varchar(75),
      Agence_Ch varchar(5), 
      Agence_Ch_BO varchar(2),  
      Agence_Ca varchar(5),
      Mod_zpp varchar(6),
      nb_bulletins varchar(6),
      PRIMARY KEY  (pac),
        KEY pac (pac))
      TYPE=MyISAM;
     
    create table requete (
      id int(100) NOT NULL auto_increment,
      pac varchar(10),
      client varchar(150),  
      carte varchar(3),
      matricule varchar(8),
      rubrique varchar(4),
      rubriqueplus varchar(1),
      resteinfos varchar(65),
      monetaire varchar(1),
      jjdateTraitement varchar(2),
      mmdateTraitement varchar(2),
      aaaadateTraitement varchar(4),
      jjdateSaisie varchar(2),
      mmdateSaisie varchar(2),
      aaaadateSaisie varchar(4),
      jjdateEffet varchar(2),
      mmdateEffet varchar(2),
      aaaadateEffet varchar(4),
      hhheureSaisie varchar(2),
      mnheureSaisie varchar(2),
      ssheureSaisie varchar(2), 
      PRIMARY KEY  (id),
      KEY id (id))
    TYPE=MyISAM;
     
    CREATE TABLE carte (
      numero int(100) NOT NULL auto_increment,
      pac varchar(10),
      carte varchar(3),
      matricule varchar(8),
      rubrique varchar(4),
      rubriqueplus varchar(1),
      resteinfos varchar(65),
      monetaire varchar(1),
      jjdateTraitement varchar(2),
      mmdateTraitement varchar(2),
      aaaadateTraitement varchar(4),
      jjdateSaisie varchar(2),
      mmdateSaisie varchar(2),
      aaaadateSaisie varchar(4),
      jjdateEffet varchar(2),
      mmdateEffet varchar(2),
      aaaadateEffet varchar(4),
      hhheureSaisie varchar(2),
      mnheureSaisie varchar(2),
      ssheureSaisie varchar(2),
      orig varchar(1),
      TT varchar(2),
      PRIMARY KEY  (numero),
        KEY numero (numero))
      TYPE=MyISAM;
     
      CREATE TABLE test (
      numero int(100) NOT NULL auto_increment,
      carte varchar(130),
      PRIMARY KEY  (numero),
        KEY numero (numero))
      TYPE=MyISAM;
     
      CREATE TABLE dateImport (
      numeroImport int(100) NOT NULL auto_increment,
      moisImport varchar(10),
      anneeImport varchar(4),
      PRIMARY KEY  (numeroImport),
        KEY numeroImport (numeroImport))
      TYPE=MyISAM;
     
      create table rubrique (
    	id int(100) NOT NULL auto_increment,
    	rubrique varchar(4),
    	rubriqueplus varchar(1),
    	rubriquetotal varchar(5),
    	PRIMARY KEY  (id),
    		KEY id (id))
      TYPE=MyISAM;
     
      create table librubrique (
      	id int(100) NOT NULL auto_increment,
    	rubrique varchar(4),
    	plage varchar(1),
    	execute_apres varchar(4),
    	libelle varchar(70),
    	typerub	varchar(1),
      	PRIMARY KEY  (id),
    		KEY id (id))
      TYPE=MyISAM;

    Est ce que quelqu'un voit ou j'ai pu faire une erreur...?

    Merci d'avance

    laeti

  2. #2
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2005
    Messages
    357
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2005
    Messages : 357
    Par défaut
    Salut,
    en relisant ton code tu verras tout de suite pourquoi.

    Maintenant il s'agit ici d'une erreur de concept.
    Si ta table de rubrique ne doit être remplie qu'une fois, tu lance la requête à la main et basta. Ou alors tu fais deux processus différents : un pour remplir tes rubriques et un pour remplir avec ton fichier.txt

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 60
    Par défaut
    Ce que je ne comprend pas c'est que pour l'import de 'PAC_détail.csv' il me l'importe une seule fois meme apres, alors que 'rubriques.csv' non... pourtant dans mon script ils sont l'un apres l'autre et pas dans une boucle... c'est pour ca que je ne comprend pas...

  4. #4
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2005
    Messages
    357
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2005
    Messages : 357
    Par défaut
    Tu viens de le dire toi même, les 'load data' sont l'un après l'autre, en séquence, ils sont donc systématiquement exécutés. Pose des témoins pour vérifier par où passe ton code et tu pourras suivre son fonctionnement.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 60
    Par défaut
    ok donc on ne peut pas faire suivre 2 'load data' qui concerne deux fichier et deux tables différentes... mais ce que je ne comprend pas c'est pourquoi il ne me répète que l'importation du fichier 'rubrique.csv' et pas les deux... bon je vais essayer de modifier tout mon fichier...

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

Discussions similaires

  1. Importation fichier articles dans table MySQL
    Par Eleanor dans le forum Requêtes
    Réponses: 31
    Dernier message: 19/06/2012, 16h42
  2. Recherche dans table MYSQL
    Par cerede2000 dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 18/01/2007, 13h31
  3. [MySQL] Stocker résultats des cases à cocher dans table Mysql
    Par yadou dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 20/11/2006, 23h26
  4. comment formater un champs dans table mysql
    Par rollly dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 24/04/2006, 14h31
  5. suppréssion élément dans table Mysql
    Par miram dans le forum Administration
    Réponses: 4
    Dernier message: 10/02/2006, 10h51

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