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

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

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 172
    Points : 163
    Points
    163
    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 : 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
    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>

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

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 172
    Points : 163
    Points
    163
    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 : 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
    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...

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

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 172
    Points : 163
    Points
    163
    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 émérite
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 448
    Points : 2 284
    Points
    2 284
    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.

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

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 172
    Points : 163
    Points
    163
    Par défaut
    Je comprends pas l'hitoire de concaténation...Ou est-ce que je concatène avec un espace ? oO

  8. #8
    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
    pas compris l'histoire de la concaténation non plus, mais l'utilisation de file me parait une bonne idée.
    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
    $lignes = file("status.txt");
    $game = array();
    $i = 1;
    foreach ($lignes as $ligne) {
      echo $ligne;
      switch ($ligne)
      {
      case 'Online':
        $game[$i] = "<img src = http://ninjaaior.free.fr/ouvert".$i.".jpg>";
        break;
      case 'Offline':
        $game[$i] = "<img src = http://ninjaaior.free.fr/ferme".$i.".jpg>" ;
        break;
      default:
        $game[$i] = 'erreur';
      }
       $i++;
    }

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

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 172
    Points : 163
    Points
    163
    Par défaut
    Avec cette méthode ça m'affiche "erreur" partout à la place des images ...
    Il ne doit pas lire "Online" ou "Offlin" , peut être un truc du genre "Online\n"
    ...

  10. #10
    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
    et l'affichage des lignes ? Online, Offline autre chose ?
    Tu peux faire un var_dump de $lignes avant la boucle et nous donner le résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    echo '<pre>';
    var_dump($lignes);
    echo '</pre>';

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

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 172
    Points : 163
    Points
    163
    Par défaut
    Voilà :


  12. #12
    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
    bon, ben t'as un retour chariot qui fait foirer le file...
    On va trimer tout ça

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

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 172
    Points : 163
    Points
    163
    Par défaut
    Parfait merci !!! Je me doutais que c'était dû à un truc du genre lol

    J'ai encore besoin de me documenter sur les fonctions de php...Bloquer sur des trucs aussi simples ça me déprime

    En tout cas la fonction trim à l'air sympa, elle vire le retour chariot ? Je vais me documenter

    PS : Je passe maintenant à la partie un peu plus complexe lol
    Faut que j'arrive à éxécuter mon script python depuis php pour crée le fichier "status.txt" directement sur mon ftp

    Enfin c'est peu être moins compliqué que ça n'y paraît, je vais vous dire ça lol
    Merci pour tout encore une fois

  14. #14
    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
    si tu regardes bien mon message précédent, il ya un lien sur "trimer"
    trim() supprimera les caractères suivants :

    * " " (ASCII 32 (0x20)), un espace ordinaire.
    * "\t" (ASCII 9 (0x09)), une tabulation.
    * "\n" (ASCII 10 (0x0A)), une nouvelle ligne (line feed).
    * "\r" (ASCII 13 (0x0D)), un retour chariot (carriage return).
    * "\0" (ASCII 0 (0x00)), le caractère NUL.
    * "\x0B" (ASCII 11 (0x0B)), une tabulation verticale.
    et n'oublie pas

+ 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