Précédent   Forum des professionnels en informatique > PHP > Langage > Fichiers
Fichiers Forum d'entraide sur les fichiers avec PHP. Avant de poster -> FAQ fichiers et Sources fichiers
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/12/2007, 11h16   #1
Candidat au titre de Membre du Club
 
Inscription : novembre 2006
Messages : 41
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : novembre 2006
Messages : 41
Points : 13
Points : 13
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 :
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 :
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
Lust14 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/12/2007, 09h47   #2
Membre émérite
 
Avatar de goldkey
 
Inscription : mars 2003
Messages : 795
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : mars 2003
Messages : 795
Points : 842
Points : 842
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.
goldkey est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2008, 11h15   #3
Candidat au titre de Membre du Club
 
Inscription : novembre 2006
Messages : 41
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : novembre 2006
Messages : 41
Points : 13
Points : 13
Merci pour votre réponse ,
Voilà ce que j'ai essayé :

Code :
 ($ligne = fgetcsv($fic, 1024,"\n");
à la place de
Code :
 ($ligne = fgetcsv($fic, 1024);
Je ne sais pas encore ce que ça va donner !!!
Lust14 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h46.


 
 
 
 
Partenaires

Hébergement Web