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 de fichier texte avec traitement des caractères spéciaux [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    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
    Points : 103
    Points
    103
    Par défaut Importation de fichier texte avec traitement des caractères spéciaux
    Bonjour,

    J'ai le script suivant qui me permet de tranféré des fichier txt dans ma base de donnée, les importation se passe quasiment bien sauf lorsqu'il y a des carractère spéciaux tel que (' et ""). Pour l'instant afin d'avancer dans mon projet j'ai retirer ces carratère manuellement mis voila cela prend beaucoup de temps.
    Exist-il un moyen de faire ce traitement avant l'import en base de donée
    Voici le script concerné

    Vous remerciant par avance

    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
     
     
    <?php
    include('inc_conexion.php');
    include ('traitement.php');
    //Le chemin d'acces a ton fichier sur le serveur 
    $fichier = fopen("../societe.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 [13]) 
    $sql="INSERT into societe VALUES ('".$tableauValeurs[0]."', '".$tableauValeurs[1]."', '".$tableauValeurs[2]."', '".$tableauValeurs[3]."', '".$tableauValeurs[4]."', '".$tableauValeurs[5]."', '".$tableauValeurs[6]."', '".$tableauValeurs[7]."', '".$tableauValeurs[8]."', '".$tableauValeurs[9]."', '".$tableauValeurs[10]."', '".$tableauValeurs[11]."')"; $req=mysql_query($sql)or die (mysql_error()); 
     
     
    // la ligne est finie donc on passe a la ligne suivante (boucle) 
    } 
    //vérification et envoi d'une réponse à l'utilisateur 
    if ($req) 
    { 
    echo"Ajout dans la base de données effectué avec succès"; 
    } 
    else 
    { 
    echo"Echec dans l'ajout dans la base de données"; 
    } 
     
    ?>
    Merci de l'aide que vous pourriez m'apporter

    Runcafre91

  2. #2
    Membre habitué Avatar de xess91
    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 408
    Points : 193
    Points
    193
    Par défaut
    Avec la fonction addslashes(); et quand tu vas afficher le contenu de ta table dans une page web tu affiches avec stripslashes();

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    addslashes($tableauValeurs[]);

  3. #3
    Membre régulier
    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
    Points : 103
    Points
    103
    Par défaut
    Citation Envoyé par xess91 Voir le message
    Avec la fonction addslashes(); et quand tu vas afficher le contenu de ta table dans une page web tu affiches avec stripslashes();

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    addslashes($tableauValeurs[]);
    Re,

    Merci pour voitre aide, si j'ai bien compris il faudra appliqué addslashes à tous les valeur succeptible d'avoir des carractère spéciaux dans ma requête comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    addslashes($tableauValeurs[5]);
    Merci de me le confirmer avant que je fasse la modification de mes codes

    Runcafre91

  4. #4
    Membre habitué Avatar de xess91
    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 408
    Points : 193
    Points
    193
    Par défaut
    oui exactement et ça va ajouter des antislashes devant les caractères spéciaux comme tu dis.

    donc ça:

    salut c'est xess vive "développez.net".

    ça va devenir ça :

    salut c\'est xess vive \"développez.net\".

    et comme ça cela rentrer dans ta base de données.

  5. #5
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    Il n'y aura par contre pas besoin de stripslashes en sortie, les \ ne seront pas dans la base.

  6. #6
    Membre régulier
    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
    Points : 103
    Points
    103
    Par défaut
    Citation Envoyé par xess91 Voir le message
    oui exactement et ça va ajouter des antislashes devant les caractères spéciaux comme tu dis.

    donc ça:

    salut c'est xess vive "développez.net".

    ça va devenir ça :

    salut c\'est xess vive \"développez.net\".

    et comme ça cela rentrer dans ta base de données.
    Re,

    J'ai fais la modification dans ma requête, mais j'ai une erreur de syntaxe voici le bout de code concerné

    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
     
     
     
    $tableauValeurs = explode(";", $uneLigne); 
     
     
    // On crée la requete pour inserer les donner (ici il y a 14 champs donc de [0] a [13]) 
    $sql="INSERT into facture 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].)"', 
     '".addslashes($tableauValeurs[9].)"', 
     '".addslashes($tableauValeurs[10].)"', 
     '".addslashes($tableauValeurs[11].)"',
     '".addslashes($tableauValeurs[12].)"',
     '".addslashes($tableauValeurs[13].)"')"; 
     
     $req=mysql_query($sql)or die (mysql_error());
    Merci de l'aide que vous pourriez m'apporter

    Runcafre91

  7. #7
    Membre habitué Avatar de xess91
    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 408
    Points : 193
    Points
    193
    Par défaut
    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
     
    $tableauValeurs = explode(";", $uneLigne); 
     
     
    // On crée la requete pour inserer les donner (ici il y a 14 champs donc de [0] a [13]) 
    $sql="INSERT into facture 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])."', 
     '".addslashes($tableauValeurs[9])."', 
     '".addslashes($tableauValeurs[10])."', 
     '".addslashes($tableauValeurs[11])."',
     '".addslashes($tableauValeurs[12])."',
     '".addslashes($tableauValeurs[13])."')"; 
     
     $req=mysql_query($sql)or die (mysql_error());

  8. #8
    Membre régulier
    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
    Points : 103
    Points
    103
    Par défaut
    Citation Envoyé par xess91 Voir le message
    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
     
    $tableauValeurs = explode(";", $uneLigne); 
     
     
    // On crée la requete pour inserer les donner (ici il y a 14 champs donc de [0] a [13]) 
    $sql="INSERT into facture 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])."', 
     '".addslashes($tableauValeurs[9])."', 
     '".addslashes($tableauValeurs[10])."', 
     '".addslashes($tableauValeurs[11])."',
     '".addslashes($tableauValeurs[12])."',
     '".addslashes($tableauValeurs[13])."')"; 
     
     $req=mysql_query($sql)or die (mysql_error());
    Bonsoir,

    Merci de votre aide, je vais m'y mettre sur ce cours.

    C'est des erreur de débutant que j'ai pas fait attention au départ.

    Bonne soirée

    Runcafre91

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

Discussions similaires

  1. [XL-2007] Macro importer un fichier texte avec un chemin relatif
    Par oekoniko dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 06/04/2015, 17h31
  2. soft editeur de fichier plat avec position des caractères
    Par tibofo dans le forum Autres Logiciels
    Réponses: 0
    Dernier message: 03/08/2010, 10h29
  3. [ODBC] Traitement des caractères spéciaux
    Par loulitta dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 19/06/2008, 09h38
  4. Importer un fichier texte avec SQL Express
    Par hannii dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 14/03/2007, 10h26
  5. traitement des caractères spéciaux avec XSLT
    Par Mirgue dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 19/07/2004, 16h57

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