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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    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
    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 expérimenté
    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
    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 confirmé
    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
    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 expérimenté
    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
    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 confirmé
    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
    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 confirmé
    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
    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