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 et modif ligne fichier


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2014
    Messages : 107
    Points : 132
    Points
    132
    Par défaut lecture et modif ligne fichier
    Bonjour,

    Je vous expose mon problème :
    J'ai un fichier .txt dans lequel je dois lire des données. Pour cela j'ai ce code qui fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    function xx(){
     $fichier = file("lien/fichier.txt");
     $contenu = count($fichier); 
     for($i=0;$i<$contenu;$i++){
      echo fichier[$i];
     }
     fclose($fichier);
    }
    Le fichier .txt est structuré ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Ligne1: 12
    Ligne2: 24
    Ligne3: 48
    La prochaine étape consiste à récupérer les valeurs à droite des ":" et de les afficher dans un tableau. C'est là que j'ai un problème, je n'arrive pas à afficher ces données. J'ai vu qu'il fallait utiliser la fonction explode. Je n'arrive pas à implémenter cette partie, mais j'ai fait des tests :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     $o=fopen("news.txt","r");
     $l=fgets($o);
     echo $l;
     
     $e=explode(":",$l); 
     foreach($e as $t){
     echo $t ."<br/>";
    }
    Comment faire?

    L'idée finale est de lire la valeur après les ":" dans le fichier texte, et de pouvoir modifier la valeur depuis la page web... donc d'écrire dans le fichier à la bonne position. Mais bon commençons par le commencement...

    Avez-vous des idées svp?

    Merci d'avance,
    Cordialement.

  2. #2
    Membre actif
    Profil pro
    Responsable de service informatique
    Inscrit en
    Août 2006
    Messages
    174
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2006
    Messages : 174
    Points : 232
    Points
    232
    Par défaut
    Bonsoir,

    Tu utilises file puis ensuite fopen pour lire le fichier.

    Utilises une seule méthode de lecture de fichier.

    Avec fopen:

    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
     
    <?php
    /*Ouverture du fichier en lecture seule*/
    $handle = fopen('news.txt', 'r');
    $tableau = array();
     
    /*Si on a réussi à ouvrir le fichier*/
    if ($handle) {
     while (!feof($handle)) {
      $buffer = fgets($handle);
      $temp = explode(':',$buffer);
      $tableau[] = $temp[1];
     }	
     fclose($handle);
    }
    ?>
    Essaies ceci mais il y a plusieurs façons de faire pour récupérer la valeur après les :

    Natso

  3. #3
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2014
    Messages : 107
    Points : 132
    Points
    132
    Par défaut
    Bonsoir,

    Tout d'abord merci pour ta réponse.
    Je n'ai pas bien compris cette partie du code :
    Tu mets la première valeur rencontrée dans le tableau? Si oui, va-t-on pouvoir afficher toutes les valeurs après les ":"?

    Cordialement.

  4. #4
    Membre actif
    Profil pro
    Responsable de service informatique
    Inscrit en
    Août 2006
    Messages
    174
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2006
    Messages : 174
    Points : 232
    Points
    232
    Par défaut
    temp est un tableau car explode retourne un tableau.

    temp[0] correspond aux valeurs ligne1...
    temp[1] correspond aux valeurs 12 ....

    Ensuite la valeur temp[1] est stockée dans le tableau[] qui contiendra donc toutes les valeurs après :

    Pour voir les données du tableau tu fais un var_dump

    Natso

  5. #5
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2014
    Messages : 107
    Points : 132
    Points
    132
    Par défaut
    Merci pour ton explication et ta réponse.
    Voilà ce que me retourne le var_dump :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "Chaine1" [1]=> string(16) "Chaine2" [2]=> string(11)
    Comment isoler la partie sélectionnée?

  6. #6
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2014
    Messages : 107
    Points : 132
    Points
    132
    Par défaut
    C'est bon j'ai trouvé une solution qui me convient pour l'instant
    Merci de ton aide.

    J'ai découpé l'action en trois fichiers, dont je poste les codes à la suite :
    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
    <?php
     
    $nom_fichier = 'fic.txt';
     
     
    $capteurs = file($nom_fichier);
     
    foreach ($capteurs as $index => $donnee) {
            list($nom, $valeur) = explode(':', $donnee);
            $infos[$index]['nom'] = $nom;
            $infos[$index]['valeur'] = $valeur;
    }
     
     
    ?>
    <html><head><title>Capteurs disponibles</title></head><body>
    <h1>Capteurs disponibles</h1>
    <ul>
    <?php
            foreach($infos as $index => $donnees) {
                    echo "<li><a href=\"secondFichier.php?ligne=$index\">{$donnees['nom']} : {$donnees['valeur']} </a></li>";
            }
    ?>
    </ul>
    </body>
    </html>
    Le script ci-dessus me permet de récupérer le contenu du fichier et de le lister.
    Viens ensuite :
    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
    <?php
     
    if (!is_numeric($_GET['ligne'])) {
            header('Location: premierFichier.php');
            exit();
    }
     
    $ligne = (int) $_GET['ligne'];
    $nom_fichier = 'fic.txt';
    $capteurs = file($nom_fichier);
     
    list($nom, $valeur) = explode(':', $capteurs[$ligne]);
     
     
     
    ?>
    <html><head><title>Modification <?=$ligne ?></title></head><body>
    <h1>Modification <?=$ligne ?></h1>
    <form action="modif_terminal.php" method="post">
    <input type="hidden" name="ligne" value="<?=$ligne ?>">
    Nom : <input type="text" name="nom" value="<?=$nom ?>"><br/>Numéro : <input type="text" name="valeur" value="<?=$valeur ?>"><br/>
     
    <input type="submit" value="Modifier">
    </form>
    </body>
    </html>
    Ci-dessus un formulaire qui me permet d'éditer les données du fichier.
    Après ça :
    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
    <?php
     
     
    $ligne = (int) $_POST['ligne'];
    $nom = $_POST['nom'];
    $valeur = $_POST['valeur'];
     
     
    $nom_fichier = 'fic.txt';
    $capteurs = file($nom_fichier);
     
    $capteurs[$ligne] = "$nom: $valeur\r\n";
     
    file_put_contents($nom_fichier, implode("",$capteurs));
    header('Location: premierFichier.php');
    exit();
    ?>
    J'applique les modifications sur le fichier.

    Voilà tout marche comme je le souhaitais! Encore merci pour ton aide

    A bientôt!

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

Discussions similaires

  1. lecture et modification fichier
    Par wiss20000 dans le forum Entrée/Sortie
    Réponses: 17
    Dernier message: 06/04/2007, 09h14
  2. Réponses: 5
    Dernier message: 15/11/2006, 11h43
  3. Modifer un fichier en ajoutant le numéro de chaque ligne
    Par bellout dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 15/06/2006, 13h43
  4. [C] lecture des n lignes d'un fichier
    Par felicity dans le forum C
    Réponses: 12
    Dernier message: 12/01/2006, 23h12

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