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] recup donnee a partir d excel vers BDD- ligne vide


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 93
    Points : 45
    Points
    45
    Par défaut [CSV] recup donnee a partir d excel vers BDD- ligne vide
    Bonjour, je souhaiterais copier dans une base de donnee, le contenu d un document CVS. Or ce document peut aleatoirement comporter une/des ligne(s) vide(s) et egalement des champs note UNKNOWN. J aimerais ignorer les lignes vide et pour les champs UNKNOWN simplement enregistrer un champ vide dans ma base de donnee.

    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
       //file reading
       $filename = "data.csv"; //ligne 16 dans mon document
       $ligns = file($filename);
     
       $file_size = sizeof($ligns);
       $current_lign = 0;
       $current_position = $current_lign / $file_size;
     
       foreach ($ligns as $lign)
       {
    	//empty raw in cvs file
    	if ($lign != 0) {
     
    		list($na_1, $na_2, $na_3) = explode(",", $lign);
    	}
       	else
    	{
    		echo "ligne vide";
    	}
    reponse du navigateur:

    Erreur de syntaxe près de ')' à la ligne 16
    merci de votre aide

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Il ne te manquerait pas l'accolade fermante du foreach ?

    Et au passage, il existe la fonction fgetcsv pour lalecture des fichiers csv qui fait un paquet de choses toute seule...

  3. #3
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 93
    Points : 45
    Points
    45
    Par défaut
    Merci,
    en fait l accolade, n 'est pas ici, mais elle est bien dans mon programme.
    Mon code fonctionne bien sauf en cas de ligne vide, et en cas champs special ...

    je vais jeter un coup d oeil a la fonction.. si d autres ont des idees. !!!

  4. #4
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 210
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 210
    Points : 8 437
    Points
    8 437
    Billets dans le blog
    17
    Par défaut
    Il nous faudrait un cas pratique !

  5. #5
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 93
    Points : 45
    Points
    45
    Par défaut
    ok, desole, voila un typique fichier cvs:
    8/31/2008 15:53 0.00003 4.96818 2.45487 249.00608 0.00003 -79.99641 -40 0 24 186
    //ligne vide
    8/31/2008 15:54 0.00008 4.96834 2.86541 254.17166 0.00006 -79.9991 -39.99955 0 24 186
    7/7/2008 1:05 0.00006 4.97386 2.53441 32.23688 0.00003 -80 -40 0 20 255 10 223 0
    //ligne vide
    7/7/2008 1:10 0.00001 4.97357 2.47645 42.57166 0.00002 -79.99979 -39.9998 0 20 266 9
    ...
    2/26/2009 15:45 0.00011 0 1.13144 328.54208 0.00003 -79.9991 -40 0 UNKNOWN 185
    2/26/2009 15:46 0.00003 0.00006 2.01765 318.49163 0.00003 -80 -40 0 UNKNOWN 185
    2/26/2009 15:47 0.00008 0.00014 1.60908 315.22933 0 -80 -39.99955 0 26 185
    2/26/2009 15:48 0.00003 0.00006 1.97466 315.14096 0.00008 -80 -40 0 26 185
    2/26/2009 15:49 0.00008 0.00011 1.32056 316.40557 0.00003 -80 -39.99955 0 26 185
    2/26/2009 15:50 0.00008 0.00006 2.01913 315.69921 0.00011 -80 -40 0 UNKNOWN 185

  6. #6
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 210
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 210
    Points : 8 437
    Points
    8 437
    Billets dans le blog
    17
    Par défaut
    Euh...
    Dans ton script tu fais un explode( ) sur les , et ici je ne vois pas une seule virgule.
    Tes lignes vides contiennent-elles réellement "//ligne vide" ou "..." ??
    Donne-nous un script fonctionnel nous permettant de constater les défauts et de t'aider à les corriger.

    Ceci dit file( ) accepte un argument FILE_SKIP_EMPTY_LINES qui permettrait déjà peut-être de régler un de tes soucis
    http://fr.php.net/file

Discussions similaires

  1. Fichier excel vers bdd (cas particulier)
    Par Sha-ka dans le forum Requêtes
    Réponses: 3
    Dernier message: 12/03/2008, 20h01
  2. pb requete excel vers BDD
    Par Jean-Matt dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 08/11/2005, 16h42
  3. [VBA]Requete Excel vers BDD Acces
    Par Emcy dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 08/11/2005, 09h51

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