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 d'un fichier texte en PHP


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 172
    Par défaut Lecture d'un fichier texte en PHP
    Je ne comprends pas, j'ai un script php qui lit dans un fichier "status.txt" contenant ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Online
    Online
    Offline
    Online
    Offline
    Online
    Online
    Voici le script PHP :
    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    <?php
    $fichier = fopen("status.txt","r");
    while(!feof($fichier)) {
    // On récupère une ligne
    $Ligne = fgets($fichier,255);
    // On affiche la ligne
    echo $Ligne;
    }
    // On ferme le fichier
    fclose($fichier);
    // On affiche affiche les images
    	//if($Ligne == "Online")
    		//$game1 = "<img src = http://ninjaaior.free.fr/ouvert1.jpg>";
    		//$game2 = "<img src = http://ninjaaior.free.fr/ouvert2.jpg>";
    		//$game3 = "<img src = http://ninjaaior.free.fr/ouvert3.jpg>";
    		//$game4 = "<img src = http://ninjaaior.free.fr/ouvert4.jpg>";
    		//$game5 = "<img src = http://ninjaaior.free.fr/ouvert5.jpg>";
    		//$game6 = "<img src = http://ninjaaior.free.fr/ouvert6.jpg>";
    		//$game7 = "<img src = http://ninjaaior.free.fr/ouvert7.jpg>";
    	//else
    		//$game1 = "<img src = http://ninjaaior.free.fr/ferme1.jpg>";
    		//$game2 = "<img src = http://ninjaaior.free.fr/ferme2.jpg>";
    		//$game3 = "<img src = http://ninjaaior.free.fr/ferme3.jpg>";
    		//$game4 = "<img src = http://ninjaaior.free.fr/ferme4.jpg>";
    		//$game5 = "<img src = http://ninjaaior.free.fr/ferme5.jpg>";
    		//$game6 = "<img src = http://ninjaaior.free.fr/ferme6.jpg>";
    		//$game7 = "<img src = http://ninjaaior.free.fr/ferme7.jpg>";
    ?> 
    <html> 
    <body> 
    <table width="130" height="56"> 
     
      <tr> 
          <td width="10"></td> 
          <td align="left"><?php echo $game1; ?></td> 
       </tr> 
       <tr> 
          <td width="10"></td> 
          <td align="left"><?php echo $game2; ?></td> 
       </tr> 
       <tr> 
          <td width="10"></td> 
          <td align="left"><?php echo $game3; ?></td> 
       </tr> 
       <tr> 
          <td width="10"></td> 
          <td align="left"><?php echo $game4; ?></td> 
       </tr> 
       <tr> 
          <td width="10"></td> 
          <td align="left"><?php echo $game5; ?></td> 
       </tr> 
       <tr> 
          <td width="10"></td> 
          <td align="left"><?php echo $game6; ?></td> 
       </tr> 
       <tr> 
          <td width="10"></td> 
          <td align="left"><?php echo $game7; ?></td> 
       </tr> 
    </table> 
    </body> 
    </html>
    J'ai laissé en commentaires car cela ne fonctionnait pas, j'ai l'impression que la comparaison au niveau du "if($Ligne=="Online")" ne se fait pas...De plus si je mets le "Else" il me sort une erreur me disant qu'il ne devrait pas y en avoir...Il affiche cependant bien le contenu de "status.txt" lors de l'appel Bien entendu lorsque j'enlève les commentaire je place ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    }
    // On ferme le fichier
    fclose($fichier);
    après l'affichage des images.

    Si quelqu'un peut m'aider ça serait génial

    Merci d'avance.

  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 : 40
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Bonjour

    Tu affectes $Ligne dans une boucle qui remplace le contenu de la variable à chaque tour. Donc à la sortie de la boucle, tu n'as que le contenu de la dernière ligne.

    Tu dois donc soit faire la comparaison directement dans la ligne, soit remplir un tableau, soit combiner les deux en remplissant un tableau à l'issue de la comparaison
    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
    31
    32
    33
    34
    35
    36
    37
    38
    <?php
    $fichier = fopen("status.txt","r");
    $game = array();
    $i = 1;
    while(!feof($fichier)) {
      // On récupère une ligne
      $Ligne = fgets($fichier,255);
      // On affiche la ligne
      echo $Ligne;
      if ($Ligne == "Online")
      {
        $game[$i] = "<img src = http://ninjaaior.free.fr/ouvert".$i.".jpg>";
      }
      else
      {
        $game[$i] = "<img src = http://ninjaaior.free.fr/ferme".$i.".jpg>" ;
       }
    }
    // On ferme le fichier
    fclose($fichier);
    ?> 
    <html> 
    <body> 
    <table width="130" height="56"> 
    <?php
    for ($k=1; $k<=7; $k++)
    {
    ?>   
      <tr> 
          <td width="10"></td> 
          <td align="left"><?php echo $game[$k]; ?></td> 
       </tr> 
    <?php
    }
    ?>
    </table> 
    </body> 
    </html>
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 172
    Par défaut
    ok, merci

    Je me prends vraiment la tête sur des trucs basiques lol
    J'espère progresser vite...J'ai trop honte de ma question précédente

    Il reste encore un problème en faite

    Alors bon j'ai rajouté un $i++; pour que la boucle s'incrémente, et changé la valeur de fgets($fichier,255); en fgets($fichier,7); pour qu'il prenne la bonne longueur du mot "Online"

    Cependant les status ne sont pas les bons

    J'avoue ne pas trop comprendre...Je continue mes essais...

    Code actuel :
    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
    31
    32
    33
    34
    35
    36
    37
    <?php
    $fichier = fopen("status.txt","r");
    $game = array();
    $i = 1;
    while(!feof($fichier)) {
      // On récupère une ligne
      $Ligne = fgets($fichier,7);
      if ($Ligne == "Online")
      {
        $game[$i] = "<img src = http://ninjaaior.free.fr/ouvert".$i.".jpg>";
      }
      else
      {
        $game[$i] = "<img src = http://ninjaaior.free.fr/ferme".$i.".jpg>" ;
       }
       $i++;
    }
    // On ferme le fichier
    fclose($fichier);
    ?> 
    <html> 
    <body> 
    <table width="130" height="56"> 
    <?php
    for ($k=1; $k<=7; $k++)
    {
    ?>   
      <tr> 
          <td width="10"></td> 
          <td align="left"><?php echo $game[$k]; ?></td> 
       </tr> 
    <?php
    }
    ?>
    </table> 
    </body> 
    </html>

  4. #4
    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 : 40
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    attention, tu démarres $i à 1 et tu l'incrémentes avant de l'utiliser, ce qui fait qu'il remplit ton tableau de 2 à 8 au lieu de le remplir de 1 à 7...
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 172
    Par défaut
    Oui je viens de corriger ça, il m'affiche bien tout mais pas avec les bons status...

    Il affiche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Online Offline Online Offline Offline Offline Online
    au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Online Online Offline Online Offline Online Online
    Je crois comprendre lol C'est la longueur du mot Offline (8) qui crée un décallage
    Chu vraiment un boulet XD Mouais ça change l'ordre mais c'est pas encore ça

    Si je change :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    else
      {
        $game[$i] = "<img src = http://ninjaaior.free.fr/ferme".$i.".jpg>";
       }
    par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    else if ($Ligne == "Offlin")
      {
        $game[$i] = "<img src = http://ninjaaior.free.fr/ferme".$i.".jpg>";
       }
    Ca à l'air d'afficher le bon status mais n'affiche que les images 1,4,5 et 7...J'y comprends plus rien là...

    Le fichier status généré en python écrit dans le fichier texte :
    "Online" ou "Offlin" de cette manière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    resultat = ["Online","Offlin"]
    if bon :
          mem.write(str(resultat[0])+'\n')
    if mauvais:
          mem.write(str(resultat[1])+'\n')
    Bref je ne vais pas m'attarder sur les détails de python mais je me demande si le retour charriot ajouté ('\n') pour écrire ds le fichier ne serait pas en cause...Si oui, comment y remédier ?

    Voici un petit sceenshot, on voit bien que l'affichage par l'appel "echo $Ligne" ne correspond pas aux images affichées...


  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 448
    Par défaut
    un truc tout bete, au lieu de les concaténer avec un espace, concatène avec un retour chariot. Et au lieu de lire avec fread($source, 7); fais un file dessus.

    http://fr2.php.net/file

    sa devrait être vachement plus simple, pour cette partie du code.

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

Discussions similaires

  1. Lecture d'un fichier texte dans un projet TOMCAT
    Par brice_nice dans le forum Tomcat et TomEE
    Réponses: 2
    Dernier message: 03/07/2005, 15h04
  2. lecture d'un fichier texte
    Par benahpets dans le forum MFC
    Réponses: 5
    Dernier message: 22/06/2005, 11h50
  3. [C#] Lecture d'un fichier texte (farfelu)
    Par choas dans le forum Windows Forms
    Réponses: 3
    Dernier message: 11/04/2005, 14h33
  4. Lecture d'un fichier Texte
    Par jcharles dans le forum Bases de données
    Réponses: 8
    Dernier message: 27/10/2004, 14h58
  5. Stockage de données & lecture d'un fichier texte
    Par petitours dans le forum C++Builder
    Réponses: 6
    Dernier message: 13/03/2004, 14h05

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