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 :

Nettoyage de fichier lors de l'export


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Décembre 2008
    Messages
    299
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2008
    Messages : 299
    Par défaut Nettoyage de fichier lors de l'export
    Bonjour,

    J'ai un script d'importation de donnée dans ma base de donnée au format texte avec des séparateurs.

    Mais lors de l'importation je voudrais effectuer quelque traiement afin que les donnée soient correctent en base de donnée

    Le traitement du fichier je le faisait en manuelle aupparavant.

    J'ai essayé de modifier mon script afin que cela soit possible, les donnée s'insèrent bien dans matable avec avec dec cotes ou une partie tronqué.

    Pourriez vous m'aider a résoudre ce petit problème.

    Je voudrais en quelque sorte
    - Remplacer les , par un .
    - Remplacer les "" par un blanc
    - Remplacer les 00:00:00 par un blanc

    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
     
    <?php
    session_start ();
    echo "Utilisateur : ";
    echo $_SESSION['pseudo'];
    echo'<br>';
    ini_set ("error_reporting", "E_ALL & ~E_NOTICE");
    if ($_SESSION['level']==1)
    header('location:../index.php');
    ?>
     
    <?php
    include('../inc/inc_connexion.php');
     
     
     
    set_time_limit(0); 
     
    //Le chemin d'acces a ton fichier sur le serveur 
    $fichier = fopen("facture.txt", "r"); 
     
    //tant qu'on est pas a la fin du fichier : 
    while (!feof($fichier)) 
    { 
    // On recupere toute la ligne 
    $uneLigne = fgets($fichier, 4096); 
     
    // nettoyage du texte
     
    $tableauValeurs = preg_replace(',', '.', $tableauValeur);
    $tableauValeurs = preg_replace('""', '', $tableauValeur);
    $tableauValeurs = preg_replace('€', '', $tableauValeur);
    $tableauValeurs = preg_replace('00:00:00', '', $tableauValeur);
     
    //On met dans un tableau les differentes valeurs trouvés (ici séparées par un ';') 
     
    $tableauValeurs = explode(";", $uneLigne);
     
     
    //*****************************************************************//
    //	déclaration des champs de ma table  facture                         //
    //*****************************************************************//
    $fact_id="";
    $fact_facture=""; // Ma clef primaire
    $fact_intitule="";
    $fact_montant="";
    $fact_session="";
    $fact_date="";
    $fact_echeance="";
    $fact_type="";
    $fact_annee="";
     
    //Pour avoir 20100308 ; 
    $date=implode('-',array_reverse (explode('/',$date)));
     
    //***************************************************************//
    			// On crée la requete pour inserer les donner (ici il y a 14 champs donc de [0] a [8]) 
    			// -> Le 2eme champ c'est la clé primaire
    			$sql = "INSERT INTO facture (fact_id,fact_facture,fact_intitule,fact_montant,fact_session,fact_date,fact_echeance,fact_type,fact_annee) VALUES (
    				'".addslashes($tableauValeurs[0])."', 
    				'".addslashes($tableauValeurs[1])."', 
    				'".addslashes($tableauValeurs[2])."', 
    				'".addslashes($tableauValeurs[3])."', 
    				'".addslashes($tableauValeurs[4])."', 
    				'".addslashes($tableauValeurs[5])."', 
    				'".addslashes($tableauValeurs[6])."',
    				'".addslashes($tableauValeurs[7])."',
    				'".addslashes($tableauValeurs[8])."')";
    			$reqt = mysql_query($sql) or die(mysql_error());
    			}
    			header('location:../reuni/dus_admin.php');
    ?>
    Pour vous aider, ci-joint le format du fichier

    Je vous remercie par avance de votre aide

    Runcafre91

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $tableauValeurs = preg_replace(',', '.', $tableauValeur);
    Tu utilises alternativement $tableauValeur et $tableauValeurs mais aucun des deux n'est de toute facon à ce moment du code.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Décembre 2008
    Messages
    299
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2008
    Messages : 299
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $tableauValeurs = preg_replace(',', '.', $tableauValeur);
    Tu utilises alternativement $tableauValeur et $tableauValeurs mais aucun des deux n'est de toute facon à ce moment du code.
    Bonjour,

    Merci de votre réponse j'ai essaye de voir le pronlème et deplacante et modifiant la parti du code $tableauValeur, mais rien a faire

    J'ai aussi fais un test sur le fichier et les lignes rien ne change

    La je vois pas trop comment proceder

    Merci de votre aide

    Runcafre91

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Montre nous ce que tu as corrigé.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Décembre 2008
    Messages
    299
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2008
    Messages : 299
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Montre nous ce que tu as corrigé.
    Re,

    J'essaye de passé par une fonction afin que le code soit plus propre mais voila j'ai qu'un ligne vide de créé dans ma table

    ci-desous le 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
     
     
    <?php
    session_start ();
    echo "Utilisateur : ";
    echo $_SESSION['pseudo'];
    echo'<br>';
    ini_set ("error_reporting", "E_ALL & ~E_NOTICE");
    if ($_SESSION['level']==1)
    header('location:../index.php');
    ?>
     
    <?php
    include('../inc/inc_connexion.php');
    include('../inc/fonction.php');
     
     
     
    set_time_limit(0); 
     
    //Le chemin d'acces a ton fichier sur le serveur 
    $fichier = fopen("facture.txt", "r"); 
     
    //tant qu'on est pas a la fin du fichier : 
    while (!feof($fichier)) 
    { 
    // On recupere toute la ligne 
    $uneLigne = fgets($fichier, 4096); 
     
     
    //On met dans un tableau les differentes valeurs trouvés (ici séparées par un ';') 
     
    $tableauValeurs = explode(";", $uneLigne);
     
    //***************************************************************//
    			// On crée la requete pour inserer les donner (ici il y a 14 champs donc de [0] a [8]) 
    			// -> Le 2eme champ c'est la clé primaire
     
    			$sql = "INSERT INTO facture (fact_id,fact_facture,fact_intitule,fact_montant,fact_session,fact_date,fact_echeance,fact_type,fact_annee) VALUES (
    				'".nettoyeur(addslashes($tableauValeurs[0]))."', 
    				'".nettoyeur(addslashes($tableauValeurs[1]))."', 
    				'".nettoyeur(addslashes($tableauValeurs[2]))."', 
    				'".nettoyeur(addslashes($tableauValeurs[3]))."', 
    				'".nettoyeur(addslashes($tableauValeurs[4]))."', 
    				'".nettoyeur(addslashes($tableauValeurs[5]))."', 
    				'".nettoyeur(addslashes($tableauValeurs[6]))."',
    				'".nettoyeur(addslashes($tableauValeurs[7]))."',
    				'".nettoyeur(addslashes($tableauValeurs[8]))."')";
    			$reqt = mysql_query($sql) or die(mysql_error());
    			}
    			header('location:../reuni/dus_admin.php');
    ?>
    et la fonction que j'ai créé

    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
     
    ?php
    function nettoyeur($text)
    {
     
    $text = preg_replace(',', '.', $text); 
     
    $text = preg_replace('""', '', $text);
     
    $text = preg_replace('€', '', $text);
     
    $text = preg_replace('00:00:00', '', $text);
     
    }
     
    ?>
     
    Merci de l'aide que vous pourriez m'apporter
     
    Runcafre91

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Il manque un return $text dans ta fonction.

    Tu peux utiliser str_replace() au lieu de preg_replace().
    Ca sera plus rapide et ca te permettre eventuellement d'utiliser des tableaux.

    Sinon c'est mysql_real_escape_string() qu'il faut utiliser pas addslashes()
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

Discussions similaires

  1. [2008R2] Personnaliser le nom du fichier lors de l'export d'un rapport
    Par cana13 dans le forum SSRS
    Réponses: 3
    Dernier message: 12/07/2013, 10h37
  2. integration de fichier lors de l'export
    Par Aurelien Pupier dans le forum Eclipse Platform
    Réponses: 8
    Dernier message: 27/06/2008, 11h38
  3. Réponses: 3
    Dernier message: 14/02/2007, 10h37

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