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 :

[CSV] Lecture "incorrecte" due aux nombres décimaux


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 41
    Points : 31
    Points
    31
    Par défaut [CSV] Lecture "incorrecte" due aux nombres décimaux
    Bonjour à tous,

    Je suis entrain d'essayer de charger des données dans Oracle à partir d'un fichier .CSV via PHP,
    Voici la fonction qui est chargée de faire la séparation des champs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function split_words($string){ 
     $retour = array(); 
      $delimiteurs = ';'; 
      $tok = strtok($string, ";"); 
      while (strlen(join(" ", $retour)) != strlen($string)) { 
      array_push($retour, $tok); 
      $tok = strtok ($delimiteurs); 
      } 
      return $retour ; 
    }
    APrès l'upload du fichier Excel
    Je fais une lecture de ce dernier dans un tableau afin d'extraire les elements

    VOici quelques bribes du 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
    $fichier = "data/".$file_name;
    $fic = fopen($fichier, 'rb');
     
    for ($ligne = fgetcsv($fic, 1024); !feof($fic); $ligne = fgetcsv($fic, 1024)) 
    {
     
      $j = sizeof($ligne);
      for ($i = 0; $i < $j; $i++) {
           $tb[] = $ligne[$i];
     
        }  }
    $maxi = count($tb);
     
    for ($i = 0; $i < $maxi; $i++) {  // lister les elts du premier tableau
     
    $elts = $tb[$i] ;
    $tb_decoup = split_words($elts);   //  decoupage de la chaine 
    $max = count($tb_decoup);
     
    if ($file_name == 'fich.csv') {
     
     $query_update ="insert into table_teste values('$tb_decoup[0]',
    '$tb_decoup[1]') "; 
     
     $stm_upd = ociparse ($connect, $query_update);
    		  ociexecute($stm_upd);
    		  }
    Jusque là tout va bien, mais le problème survient quand je fais l'insertion d'une valeur qui contient une virgule (99,97% par exple), dans ce cas il me fait une séparation même au niveau du 99 97%

    Je débute un peu avec PHP et je n'arrive pas à trouver comment regler ça

  2. #2
    Membre éprouvé
    Avatar de goldkey
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    802
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 802
    Points : 1 084
    Points
    1 084
    Par défaut
    Il me semble avoir deja eu ce probleme, et pour le contourner j'avais simplement remplacer la virgule par un point pour le séparateur décimal.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 41
    Points : 31
    Points
    31
    Par défaut
    Merci pour votre réponse ,
    Voilà ce que j'ai essayé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ($ligne = fgetcsv($fic, 1024,"\n");
    à la place de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ($ligne = fgetcsv($fic, 1024);
    Je ne sais pas encore ce que ça va donner !!!

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

Discussions similaires

  1. [MySQL] Supprimer les erreurs de syntaxe dues aux quotes
    Par gotenks dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 25/01/2006, 16h10

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