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 fichier [PHP 5.0]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 21
    Par défaut [CSV] Lecture fichier
    Bonjour tout le monde !

    Donc voila j'explique mon problème, je suis actuellement en train de travaillé sur un programme développé en php (je le reprend pour y ajouté des fonctionnalité).
    La fonctionnalité qui me pose problème est l'ouverture d'un fichier .txt qui est en fait rangé comme un csv avec une tabulation pour séparer les champs.

    J'ai un souci au niveau de la lecture du fichier, j'ai une erreur :
    Warning: fgets(): supplied argument is not a valid stream resource in C:\wamp\www\GEAC-Test\Scripts\PHP\import_SIFFA.php on line 22

    et une autre :
    Warning: fclose(): supplied argument is not a valid stream resource in C:\wamp\www\GEAC-Test\Scripts\PHP\import_SIFFA.php on line 79

    Je me sert du formulaire suivant pour récupérer le fichier situer sur le même disque que le programme (mais pas même emplacement)
    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
    <script type="text/javascript">
     
    	function import_SIFFA(){
    		fichierSIFFA = document.getElementsByName("fichierSIFFA")[0].value;
    		document.location.replace("mod_normal.php?btn=importSIFFA&fichierSIFFA="+fichierSIFFA);
    		}
     
    </script>
     
    <table border="0" width="80%" align="center">
    		<tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr>
    		<tr>
    			<td colspan="2">
    				<center><b>Importation du fichier SIFFA dans la base de données</b></center>
    			</td>
    		</tr>
    		<tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr>
    		<tr>
    			<td colspan="2" align="center" style="border-bottom:groove"><br /><br /> Souhaitez-vous mettre à jour les catégories de tout les licenciés ?
    			</td>
    		</tr>
     
    		</tr>
    	</table>
    	</br>
     
    	<center>Fichier a envoyer : <input type="file" name="fichierSIFFA" size="30"/></center>
    	</br>
     
    	<center><input type="button" name="btnimportSIFFA" value="   Importer les données   "onclick="import_SIFFA()"/></center>
    Pour lire le fichier, je me sert du code suivant qui n'est pas fini, je préfére avancer doucement en étant sur de 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
    <?php
     
    //=========================
    // Traitement des donnees
    //=========================
     
    //recupere le nom du fichier
    $fichier=$_FILES['fichierSIFFA']['name'];
    $fichier=$_FILES['fichierSIFFA']['tmp_name'];
     
    // ouverture du fichier en lecture
    $fp = fopen("$fichier","r"); 
    $ligne = fgets($fp,350);    
    fclose($fichier);
    ?>
    Si quelqu'un pouvait m'aider assez rapidement sa serai vraiment sympa -_-
    Je bloque dessus depuis un moment est mon niveau n'est pas trop élevé ...

    PS : et si parla même occasion quelqu'un sait quel paramètre il faut mettre dans la fonction explode pour dire que le séparateur est une tabulation sa m'arrangerai aussi ...

  2. #2
    Membre éprouvé
    Homme Profil pro
    Lycéen
    Inscrit en
    Décembre 2008
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Décembre 2008
    Messages : 106
    Par défaut
    Essaye un file_exists($fichier) pour voir.

  3. #3
    Expert confirmé
    Avatar de 12monkeys
    Homme Profil pro
    Webmaster
    Inscrit en
    Novembre 2006
    Messages
    4 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2006
    Messages : 4 093
    Par défaut
    Bonsoir

    Je pense que ton erreur vient du fait que $fichier ne contient que le nom du fichier et non son chemin :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $fichier=$_FILES['fichierSIFFA']['name'];
    $fichier=$_FILES['fichierSIFFA']['tmp_name'];
    Le fichier se trouve au même endroit que le script ?

    Au passage pourquoi utiliser deux fois $fichier vu que la seconde déclaration écrase la première ?

    La tabulation c'est \t

    Fais ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $vari = "ed ij ezo de 	 osd jskd kj";
     
    $varia = explode("\t", $vari);
     
    var_dump($varia);

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 21
    Par défaut
    Non malheureusement le script et le fichier ne se trouve pas au même endroit donc il faudrait que je puisse récupérer le chemin et non juste le nom.

    Pour l'exploitation du fichier en lui même je sais comment procédé, vu que je doit rentré le contenu dans une Base de données Access (pourquoi ils ont voulu sa ? -_-) je doit faire du ligne par ligne. Donc le var_dump ne m'est que moyennement utile non ?

    Donc a priori il faudrait juste que je puisse récupérer le chemin du fichier au lieu de son nom.

  5. #5
    Expert confirmé
    Avatar de 12monkeys
    Homme Profil pro
    Webmaster
    Inscrit en
    Novembre 2006
    Messages
    4 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2006
    Messages : 4 093
    Par défaut
    Citation Envoyé par ApocalypseDuck Voir le message
    Non malheureusement le script et le fichier ne se trouve pas au même endroit donc il faudrait que je puisse récupérer le chemin et non juste le nom.

    Donc a priori il faudrait juste que je puisse récupérer le chemin du fichier au lieu de son nom.
    Oui c'est ça... Tu peut savoir avec la directive upload_tmp_dir quel est ce chemin...

    Citation Envoyé par ApocalypseDuck Voir le message
    Donc le var_dump ne m'est que moyennement utile non ?
    Mon code était juste un exemple pour te montrer que explode avec "\t" fonctionne...

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 21
    Par défaut
    Bon j'ai été voir ce fameux upload_tmp_dir, j'ai placé le fichier concerné dans le chemin indiqué et j'ai toujours les deux même warnings.
    J'ai essayé de faire l'explode de la première ligne et de l'afficher avec var_dump mais je n'obtiens qu'un : array(1) { [0]=> string(0) "" }

    Donc la je vois vraiment pas, on dirait que sa vient du fgets sa m'énerve.

  7. #7
    Expert confirmé
    Avatar de 12monkeys
    Homme Profil pro
    Webmaster
    Inscrit en
    Novembre 2006
    Messages
    4 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2006
    Messages : 4 093
    Par défaut
    As tu essayé file_exists conseillé par lucas74 ?

    Une question : traite tu ton fichier dans le même script que celui de l'upload ? parce que à la fin de l'exécution du script d'upload le fichier dans le répertoire temporaire est détruit : http://php.developpez.com/faq/index....ichiers_upload et http://www.php.net/manual/fr/feature...ost-method.php

    Le fichier sera automatiquement effacé du fichier temporaire à la fin du script, s'il n'a pas été déplacé ou renommé.
    D'ailleurs j'essayerais à ta place de le déplacer à un endroit "définitif" après l'upload, et de le traiter ensuite...

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

Discussions similaires

  1. Lecture fichier .csv par colonne
    Par BRAUKRIS dans le forum Langage
    Réponses: 3
    Dernier message: 05/10/2007, 14h08
  2. Lecture fichier CSV
    Par Iphelias dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 14/06/2007, 21h58
  3. [CSV] Lecture de fichier "volumineux"
    Par damaskinos dans le forum Langage
    Réponses: 8
    Dernier message: 12/06/2007, 11h22
  4. lecture fichier .csv
    Par wiss20000 dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 06/06/2007, 20h48
  5. [CSV] lecture dans un fichier
    Par romain.barraud dans le forum Langage
    Réponses: 1
    Dernier message: 20/04/2007, 19h53

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