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 :

lecture avec fread()


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 106
    Points : 50
    Points
    50
    Par défaut lecture avec fread()
    bonjour,

    Je n'arrive pas a lire et afficher les données d'un fichier voici le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
    $nomfich="fichier.txt";
    $fich=fopen($nomfich,"r+");
    $date="bonjour nous sommes le ".date("d.m.Y").", il est ".date("H")."h".date("i")."\n";
    fwrite($fich,$date);
    $taille=filesize($nomfich);
    $cont=fread($fich,$taille);
    echo (strlen($cont)); la je remarque que $cont=0!
    echo ($cont."\n");
    echo("<b><u>".$taille."<u><b>");
    fclose($fich);
    ?>
    j'y arrive juste avec la fonction file_get_contents() mais pas avec fread(), pourquoi?

    Pouvez vous m'aidez svp merci

  2. #2
    Membre averti Avatar de beejeridou
    Homme Profil pro
    Webmaster
    Inscrit en
    Février 2007
    Messages
    280
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Février 2007
    Messages : 280
    Points : 342
    Points
    342
    Par défaut
    Il y a quoi dans ton fichier, avant le fwrite()?

    Tu as une page blanche ou un message d'erreur?

    Essaye peut-etre de changer le "r+" en "a+" ou "w+" ?

    En tous cas ton code à l'air bon pour la lecture, il n'accepte peut etre pas l'ecriture à l'endroit où tu le met...

  3. #3
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    Bonjour,

    Il s'agit peut-être d'un problème de position du pointeur de fichier (placé après le texte ajouté par la fonction fwrite).

    Essaie en ajoutant un rewind entre le fwrite et le fread.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 106
    Points : 50
    Points
    50
    Par défaut rien n'y fait!
    Avec le code suivant ca ne fonctionne pas:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
    $nomfich="fichier2.txt";
    $fich=fopen($nomfich,"w+");
    $contenu="bonjour,eeeeee,yyyyyy,xxxxx";
    fwrite($fich,$contenu);
    $long=filesize($nomfich);
    echo($long);
    j'ai la longueur du fichier égale a zéro c'est pas normal non?

  5. #5
    Membre averti Avatar de beejeridou
    Homme Profil pro
    Webmaster
    Inscrit en
    Février 2007
    Messages
    280
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Février 2007
    Messages : 280
    Points : 342
    Points
    342
    Par défaut
    as tu fais des tests d'affichage en rentrant des valeurs toi même dans le fichiers texte? (donc pas utiliser fwrite() pour le moment) Une fois que cela fonctionnera, on pourra se pencher sur la suite.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 106
    Points : 50
    Points
    50
    Par défaut oui
    quand je met des données directement dans le fichier, cela fonctionne (j'ai une longueur > a 0) a condition que je mette "r+" dans le mode d'ouverture.

    Ce que je ne comprend pas c'est que si je met "w+" cela ne fonctionne plus, ma longueur est egale a 0 pourtant je met bien le contenu apres l'ouverture.

  7. #7
    Membre averti Avatar de beejeridou
    Homme Profil pro
    Webmaster
    Inscrit en
    Février 2007
    Messages
    280
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Février 2007
    Messages : 280
    Points : 342
    Points
    342
    Par défaut
    et si tu essayes juste ce test? c'est juste une insertion...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $file = fopen(test.txt, "w+");
    $insert = fwrite($file, "ceci est un test !");
    $file = fclose($file);

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 106
    Points : 50
    Points
    50
    Par défaut ca marche
    ca met bien le contenu dans le fichier mais je n'arrive pas ensuite a afficher ce contenu dans le navigateur

  9. #9
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    Ce code fonctionne chez moi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $file = fopen('test.txt', 'w+');
    fwrite($file, 'ceci est un test !');
    rewind($file);
    $taille = filesize('test.txt');
    echo fread($file, $taille);
    fclose($file);
    écentuellement, si filesize te renvoie toujours 0, essaie en utilisant clearstatcache avant.

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 106
    Points : 50
    Points
    50
    Par défaut merci eusebe mais...
    ca ne fonctionne pas chez moi ce code, ca me marque:

    Warning: fread() [function.fread]: Length parameter must be greater than 0 in E:\utilitaires\EasyPHP 2.0b1\www\etude_PHP\files.php on line 14

    la ligne 14 étant : echo fread($file, $taille);

    On dirait que fread ne passe pas.

  11. #11
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    Citation Envoyé par salsabouge Voir le message
    ca ne fonctionne pas chez moi ce code, ca me marque:

    Warning: fread() [function.fread]: Length parameter must be greater than 0 in E:\utilitaires\EasyPHP 2.0b1\www\etude_PHP\files.php on line 14

    la ligne 14 étant : echo fread($file, $taille);

    On dirait que fread ne passe pas.
    Parce que filesize('test.txt') renvoie 0... Tu as essayé avec clearstatcache() avant filesize ?

    Si ça ne fonctionne toujours pas, essaie en fermant le pointeur de fichier $file avant utilisation de filesize().

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 106
    Points : 50
    Points
    50
    Par défaut rien a faire.
    Avec le code suivant ca ne marche pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    clearstatcache();
    $file = fopen('test.txt', 'w+');
    fwrite($file, 'ceci est un test !');
    rewind($file);
    $taille = filesize('test.txt');
    echo fread($file, $taille);
    fclose($file);
    j'ai essayé de remplacer rewind($file) par un fseek ($file,1) mais meme ca ca ne marche pas .

  13. #13
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    Bizarre... Et est-ce que tu as besoin de récupérer la taille du fichier dynamiquement ?

    Ou quelque chose comme ça t'irait (si ça fonctionne...) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $fileName = 'test.txt';
    $data = 'ceci est un test !';
    $file = fopen($fileName, 'w+');
    fwrite($file, $data);
    rewind($file);
    $size = strlen($data);
    echo fread($file, $size);
    fclose($file);

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 106
    Points : 50
    Points
    50
    Par défaut dynamiquement
    Et bien j'aurais bien voulu dynamiquement.

    J'apprend en fait ( je ne suis pas encore sur la construction d'un, site) mais le but c'est d'avoir un fichier texte, d'en connaitre le contenu et l'afficher pour traitement ultérieur.

    Y a til des version PHP avec laquelle Fread() ne fonctionne pas?

    merci

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 106
    Points : 50
    Points
    50
    Par défaut ton code précedent fonctionnent
    ca vient du fait que je n'arrive pas a récupérer la taille alors.

  16. #16
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    Citation Envoyé par salsabouge Voir le message
    Et bien j'aurais bien voulu dynamiquement.

    J'apprend en fait ( je ne suis pas encore sur la construction d'un, site) mais le but c'est d'avoir un fichier texte, d'en connaitre le contenu et l'afficher pour traitement ultérieur.

    Y a til des version PHP avec laquelle Fread() ne fonctionne pas?
    Dans ton cas ce n'est pas fread qui pose problème, mais filesize je pense (utilisé juste après fwrite, sans fermeture du fichier).

    Essaie de séparer la création et la lecture du fichier. Si tu crées un fichier toto.txt à la main, et que tu essaies de le lire en php avec les instructions :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $fileName = 'toto.txt';
    $size = filesize($fileName);
    $file = fopen($fileName, 'r');
    echo fread($file, $size);
    fclose($file);
    est-ce que tu arrives à afficher le contenu ?

  17. #17
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 106
    Points : 50
    Points
    50
    Par défaut ok pour la lecture
    Effectivement je n'ai pas de problème concernant la lecture du fichier.

    ca vient de la création alors. du fwrite?

  18. #18
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    Citation Envoyé par salsabouge Voir le message
    Effectivement je n'ai pas de problème concernant la lecture du fichier.

    ca vient de la création alors. du fwrite?
    Non, ni du fwrite ni du filesize, mais de l'utilisation de filesize juste après fwrite. Comme si le fichier était modifié en cache et le cache pas encore appliqué (mais ce n'est qu'une hypothèse, je ne sais pas bien comment fonctionne fwrite).

    Si tu veux vraiment tous faire en un seul script, essaie de fermer le fichier avant d'appeler filesize, peut-être que ça force l'écriture réelle du fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $fileName = 'test.txt';
    $data = 'ceci est un test !';
    $file = fopen($fileName, 'w+');
    fwrite($file, $data);
    fclose($file);
    $size = filesize($fileName);
    $file = fopen($fileName, 'r');
    echo fread($file, $size);
    fclose($file);

  19. #19
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 106
    Points : 50
    Points
    50
    Par défaut ok merci!
    La ca fonctionne, merci beaucoup.

    Mais pourquoi faut il fermer le fichier puis le réouvrir????

    Penses tu que ca provient de l'initialisation du fichier sur w+ et donc "0" qui garde ca en mémoire?

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

Discussions similaires

  1. Problème de Lecture avec fread, feof retourne 16
    Par neoangelo5 dans le forum C
    Réponses: 10
    Dernier message: 14/04/2011, 16h37
  2. Réponses: 2
    Dernier message: 11/05/2010, 10h27
  3. problème lecture avec fread
    Par xeron33 dans le forum C
    Réponses: 1
    Dernier message: 19/06/2008, 00h04
  4. Lecture avec fread()
    Par cout dans le forum C
    Réponses: 33
    Dernier message: 15/06/2006, 22h50
  5. prblme de lecture avec fread ... etrange...
    Par toto4650 dans le forum MFC
    Réponses: 14
    Dernier message: 28/07/2005, 18h58

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