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 :

Découpage d'un fichier .txt puis insertion dans base mysql [Oracle]


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 60
    Points : 30
    Points
    30
    Par défaut Découpage d'un fichier .txt puis insertion dans base mysql
    Voila la situation : J'ai un fichier .txt (qui fait plus de 200Mo pour info) dont voici quelques lignes (c'est la même syntaxe tout le long du fichier et chaque ligne contient 128 caractères)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    87215070958850783  6810000003463                                         -C01          E       00122006 1412200619155701122006TT
    87215070958850783  6810000005897                                         +C01          E       00122006 1412200619165901122006TT
    87215070958850783  6810000005914                                         -C01          E       00122006 1412200619173801122006TT
    Je souhaite pouvoir découper chaque ligne en plusieurs morceaux (identique/ de même longueur pour chaque ligne) puis insérer chaque découpe dans des colonnes différentes dans une table mysql...

    Est ce que quelqu'un aurait une idée de comment faire....?

    Merci d'avance pour votre aide

    Laeti

  2. #2
    Membre expérimenté
    Avatar de jbrasselet
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mars 2006
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 022
    Points : 1 413
    Points
    1 413
    Par défaut
    Tes colonnes semblent formattées avec une longueur précise
    Si cette longueur reste la même quelque soit ton fichier tu peux utiliser la fonction subtr.

    Ensuite tu fais tes requêtes SQL pour insrére les données obtenues en base.
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai.

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 60
    Points : 30
    Points
    30
    Par défaut
    Oui j'ai vu un peu cette fonction mais j'ai un peu de mal pour l'utiliser (je suis débutante dans le domaine)... d'ailleurs tu as oublié le "s" (subStr)... C'est pas spécifique à Oracle...? Parce que je ne l'utilise pas je me sers juste d'un serveur wamp5....

    Je vais aussi avoir le problème pour qu'il lise le fichier .txt via php avec cette fonction [je sais comment extraire des données dans une chaine de caractère préciser avant (par exemple extraire d'un numero INSEE donné le code postale...) mais pour un fichier comment on fait...?avec des variables...?]

    Merci

  4. #4
    Membre expérimenté
    Avatar de jbrasselet
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mars 2006
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 022
    Points : 1 413
    Points
    1 413
    Par défaut
    Ce qu'il faut que tu fasses.
    C'est déjà ouvrir ton fichier en PHP.

    Ensuite il faudra que tu parcoures les lignes

    Lorsque tu auras ta ligne dans une variable $ligne par exemple, tu pourras alors extraire tes infos avec un script du style:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $variable1 = substr($ligne,0,19); (si je me suis pas trompé en comptant)
    $variable2 = substr($ligne,20,54);
    etc...
    où tu auras substr(variable, début, longueur)

    Tu auras alors toutes tes variables. Le mieux est ensuite d'utiliser la fonction trim dessus afin de supprimer les espaces superflus.
    Et là tu fais ta requête SQL permettant d'insérer les données en base.
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai.

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 60
    Points : 30
    Points
    30
    Par défaut
    Citation Envoyé par jbrasselet
    Tu auras alors toutes tes variables. Le mieux est ensuite d'utiliser la fonction trim dessus afin de supprimer les espaces superflus.
    Je ne connais pas cette fonction... Je vais regarder ce soir chez moi...

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 60
    Points : 30
    Points
    30
    Par défaut
    Bon problème toujours pas résolu

    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
     
     
    <?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
    		$carte=substr($ligne,7,3);
    		$matricule=substr($ligne,10,8); 
    		$infos=substr($ligne,18,69);
    		$monetaire=substr($ligne,88,1);
    		$dateTraitement=substr($ligne,96,8);
    		$dateSaisie=substr($ligne,105,8);
    		$heureSaisie=substr($ligne,113,6);
    		$dateEffet=substr($ligne,119,8);
    		$tt=substr($ligne,127,2);
    		$result=mysql_query('INSERT INTO carte VALUES(\'$pac\',\'$carte\',\'$matricule\',\'$infos\',\'$monetaire\',\'$dateTraitement\',\'$dateSaisie\',\'$heureSaisie\',\'$dateEffet\',\'$tt\')'); 
    	}
    	fclose($fp);
    	mysql_close($serveur, $user, $pwd);
    	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 .txt à charger dans la base de donnée :</td> 
        <td> <input type="file" name="fichier"></center></font> </td> 
        </tr><br><br>
        <tr>
        <td></td>  
        <td> <input type="submit" name="submit" value="Charger"> </td> 
        </tr>
    	<tr><td>
        <input type="hidden" name="action" value="ajouter"> </td></tr>
     	<p></p><font face="verdana" size=2><center>
    	<a href = 'http://localhost/cartes/Accueil.php' align=center>Retour sur la page d'accueil</a> </center></font>  </table>
     
    </form> 
    </font>
    </body> 
    </html>
    <?php } ?>
    En vous remerciant de votre aide...

    Laeti

  7. #7
    Membre expérimenté
    Avatar de jbrasselet
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mars 2006
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 022
    Points : 1 413
    Points
    1 413
    Par défaut
    Tu as quoi comme erreur?
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai.

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 60
    Points : 30
    Points
    30
    Par défaut
    Voila ce qu'il me met comme erreur :

    Warning: fopen(../cartes/test/.$fichier) [function.fopen]: failed to open stream: No such file or directory in C:\wamp\www\cartes\importTXTbdd_test.php on line 16

    Warning: feof(): supplied argument is not a valid stream resource in C:\wamp\www\cartes\importTXTbdd_test.php on line 17

    Warning: fgets(): supplied argument is not a valid stream resource in C:\wamp\www\cartes\importTXTbdd_test.php on line 18
    Il copie bien le fichier vers le dossier mais j'ai (encore et toujours) une erreur avec l'ouverture de fichier, j'ai essayer un peu dans tous les sens et aussi plusieurs methodes d'ouverture de fichiers mais rien ne marche...

  9. #9
    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,

    Une erreur sur cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $fp = fopen('../cartes/RE/test/.$fichier','r');
    A remplacer par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $fp = fopen('../cartes/RE/test/' . $fichier,'r');
    Et ici :
    le point est en trop :
    Pour que les variables soient interprètées dans la requête, celle-ci doit être en cadrées par des guillemets doubles :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $result=mysql_query("INSERT INTO carte VALUES(\'$pac\',\'$carte\',\'$matricule\',\'$infos\',\'$monetaire\',\'$dateTraitement\',\'$dateSaisie\',\'$heureSaisie\',\'$dateEffet\',\'$tt\')");
    ou bien tu fais des concaténations :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Exemple :
    $result=mysql_query('INSERT INTO carte VALUES(\'' . $pac . '\',...)');

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 60
    Points : 30
    Points
    30
    Par défaut
    Merci, j'ai fais les modifs , voici le nouveau 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
     
    <?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
    		$carte=substr($ligne,7,3);
    		$matricule=substr($ligne,10,8); 
    		$infos=substr($ligne,18,69);
    		$monetaire=substr($ligne,88,1);
    		$dateTraitement=substr($ligne,96,8);
    		$dateSaisie=substr($ligne,105,8);
    		$heureSaisie=substr($ligne,113,6);
    		$dateEffet=substr($ligne,119,8);
    		$tt=substr($ligne,127,2);
    		$result=mysql_query("INSERT INTO carte VALUES(\'$pac\',\'$carte\',\'$matricule\',\'$infos\',\'$monetaire\',\'$dateTraitement\',\'$dateSaisie\',\'$heureSaisie\',\'$dateEffet\',\'$tt\')"); 
    	}
    	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 .txt à charger dans la base de donnée :</td> 
        <td> <input type="file" name="fichier"></center></font> </td> 
        </tr><br><br>
        <tr>
        <td></td>  
        <td> <input type="submit" name="submit" value="Charger"> </td> 
        </tr>
    	<tr><td>
        <input type="hidden" name="action" value="ajouter"> </td></tr>
     	<p></p><font face="verdana" size=2><center>
    	<a href = 'http://localhost/cartes/Accueil.php' align=center>Retour sur la page d'accueil</a> </center></font>  </table>
     
    </form> 
    </font>
    </body> 
    </html>
    <?php } ?>
    Il ne me met plus d'erreur (il m'affiche une page blanche avec dans l'url le nom de ma page .php d'import) mais il n'insere toujours pas dans la bdd mes chaines de caracteres....

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 60
    Points : 30
    Points
    30
    Par défaut
    Apres des modifs et tout pleins d'essais, voici mon nouveau 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
     
     
    <?php
     
    switch($_POST['action']) {
      case "ajouter":  
      $serveur = "localhost";
      $user = "root";
      $pwd = "";
      $bdd = "testcartes";
     
    	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);
    	$lignecarte='carte';	
     
    	while($ligne=mysql_fetch_array($resql2)){
    		$carte=substr($lignecarte,7,3);
    		$matricule=substr($lignecarte,10,8); 
    		$infos=substr($lignecarte,18,69);
    		$monetaire=substr($lignecarte,88,1);
    		$dateTraitement=substr($lignecarte,96,8);
    		$dateSaisie=substr($lignecarte,105,8);
    		$heureSaisie=substr($lignecarte,113,6);
    		$dateEffet=substr($lignecarte,119,8);
    		$tt=substr($lignecarte,127,2);
     
    		echo"test";
     
    		$result=mysql_query("INSERT INTO carte (numero,pac,carte,matricule,infos,monetaire,dateTraitement,dateSaisie,heureSaisie,dateEffet,tt) VALUES($numero,$pac,$carte,$matricule,$infos,$monetaire,$dateTraitement,$dateSaisie,$heureSaisie,$dateEffet,$tt)"); 
    		};
    	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 .txt à charger dans la base de donnée :</td> 
        <td> <input type="file" name="fichier"></center></font> </td> 
        </tr><br><br>
        <tr>
        <td></td>  
        <td> <input type="submit" name="submit" value="Charger"> </td> 
        </tr>
    	<tr><td>
        <input type="hidden" name="action" value="ajouter"> </td></tr>
     	<p></p><font face="verdana" size=2><center>
    	<a href = 'http://localhost/cartes/Accueil.php' align=center>Retour sur la page d'accueil</a> </center></font>  </table>
     
    </form> 
    </font>
    </body> 
    </html>
    <?php } ?>
    Pour résumer le code:
    L'utilisateur importe le fichier texte, celui-ci est copié vers un dossier special, ensuite on insert une a une les lignes entieres du fichier .txt (dont la forme a été donné précédemment, fait 128 caracteres en tout normalement, mais qu'une fois inserer dans la base de donnée il m'enleve tout les espaces automatiquement => quelqu'un sait comment le forcer à les garder (c'est assez important pour la suite...)??)
    Une fois inseré dans la base de donnée sous une seule colonne, je souhaite "découper" chaque ligne et inserer chaque bout dans une colonne distincte d'une autre table de la meme base de donnée...

    Le probleme est :
    Quand je lance le code : il me copie bien le fichier dans le bon repertoire, il m'insere bien chaque ligne dans la table designé, mais c'est tout!! Je n'arrive pas à "decouper" les lignes comme je veux, je suis completement bloqué et je ne peux pas avancer dans mon projet sans ca...

    Merci de votre aide....

    Laeti

  12. #12
    Membre expérimenté
    Avatar de jbrasselet
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mars 2006
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 022
    Points : 1 413
    Points
    1 413
    Par défaut
    Comment ça tu n'arrives pas à découper tes lignes?
    Quel est le souci exact? Tes substr ne marchent pas?
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai.

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 60
    Points : 30
    Points
    30
    Par défaut
    il rentre dans le while (quand je fais un echo "test" il me l'affiche) et quand je fais un echo $carte,$matricule,$infos par exemple il m'affiche ",," donc oui je suppose que mes substr ne fonctionne pas, et donc il ne m'insere rien dans ma table

  14. #14
    Membre expérimenté
    Avatar de jbrasselet
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mars 2006
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 022
    Points : 1 413
    Points
    1 413
    Par défaut
    tu fais un substr sur $lignecarte alors que tu lui as donné la valeur carte juste avant.
    Il est normal qu'il ne trouve rien!

    Pourquoi cette affectation?
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai.

  15. #15
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 60
    Points : 30
    Points
    30
    Par défaut
    je remet tout avec $ligne et (meme avant modifs) maintenant il me met des lignes dans ma table carte (celle où je veux inserer les bout de caracteres decouper de ma chaine entiere) mais tout est vide!! il m'increment juste (au bon nombre de ligne) le numero...

    voici le code de mes tables :

    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
    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 carte (
      numero int(100) NOT NULL auto_increment,
      pac varchar(10),   
      carte varchar(3),
      matricule varchar(8),
      infos varchar(40),
      monetaire varchar(1),
      orig varchar(1),
      dateTraitement varchar(8),
      dateSaisie varchar(8),
      heureSaisie varchar(8),
      dateEffet varchar(8),
      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;
    Bout du code modifié :

    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
    switch($_POST['action']) {
      case "ajouter":  
      $serveur = "localhost";
      $user = "root";
      $pwd = "";
      $bdd = "testcartes";
     
    	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);
     
    	while($ligne=mysql_fetch_array($resql2)){
    		$carte=substr($ligne,7,3);
    		$matricule=substr($ligne,10,8); 
    		$infos=substr($ligne,18,69);
    		$monetaire=substr($ligne,88,1);
    		$dateTraitement=substr($ligne,96,8);
    		$dateSaisie=substr($ligne,105,8);
    		$heureSaisie=substr($ligne,113,6);
    		$dateEffet=substr($ligne,119,8);
    		$tt=substr($ligne,127,2);
     
    		echo"test<br>";
     
    		$result=mysql_query("INSERT INTO carte (numero,pac,carte,matricule,infos,monetaire,dateTraitement,dateSaisie,heureSaisie,dateEffet,tt) VALUES('$numero','$pac','$carte','$matricule','$infos','$monetaire','$dateTraitement','$dateSaisie','$heureSaisie','$dateEffet','$tt')"); 
    		};
    	fclose($fp);
    	mysql_close();
    	break;

  16. #16
    Membre expérimenté
    Avatar de jbrasselet
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mars 2006
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 022
    Points : 1 413
    Points
    1 413
    Par défaut
    au lieu de faire un echo "test"; fais un echo $ligne voir si tu as bien quelque chose dans ta variable
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai.

  17. #17
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 60
    Points : 30
    Points
    30
    Par défaut
    Alors en faisant un echo "$ligne" dans le while apres les fonctions substr, il me met "Array" ... Je ne sais pas ce que ca signifie...

  18. #18
    Membre expérimenté
    Avatar de jbrasselet
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mars 2006
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 022
    Points : 1 413
    Points
    1 413
    Par défaut
    Cela veut dire que ta variable ligne est un tableau avec en première colonne ton premier champ de ta table test, en seconde colonne ton deuxième champ, etc.

    Donc au temps pour moi, il faut faire un echo de $ligne['carte'] ce sera mieux
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai.

  19. #19
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 60
    Points : 30
    Points
    30
    Par défaut
    alors en faisant un echo $ligne['carte']; il m'affiche les 3 lignes contenues dans mon fichier .txt (qui est celui inseré dans la bdd test)

  20. #20
    Membre expérimenté
    Avatar de jbrasselet
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mars 2006
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 022
    Points : 1 413
    Points
    1 413
    Par défaut
    il faut donc que tu fasses tes substr sur $ligne['carte']

    ça devrait résoudre ton problème je pense
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 2
    Dernier message: 14/03/2011, 09h33
  2. Réponses: 2
    Dernier message: 11/03/2011, 18h06
  3. [MySQL] Fonction de date pour insertion dans base MySQL
    Par jubourbon dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 27/06/2010, 16h27
  4. [Batch] Lecture fichier puis ecriture dans base MySQL
    Par debo41 dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 05/08/2009, 18h18
  5. Réponses: 9
    Dernier message: 02/06/2009, 15h37

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