Ecrire dans un fichier php supprimer une ligne

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Ecrire dans un fichier php supprimer une ligne

Re: Ecrire dans un fichier php supprimer une ligne

par moogli » 18 févr. 2014, 16:10

salut,

oublie ces fonctions et utilise la fonction file pour récupérer le contenu du fichier dans un tableau.
tu pourras travailler sur un tableau php (foreach etc).

pour remettre dans le fichier file_puts_contents + implode (séparateur \n).

si ce fichier n'est pas forcément fait pour être lu par un humain utilise plutôt la sérialisation pour y stocker un tableau php dont les clefs correspond aux id des messages et le status en message.
$tableau[$idmessage] = 'status';
$tableau[$idmessage2] = 'status message 2';
serialize
unserialize

+ file_get_contents & file_puts_contents.

pour vérifier qu'un sujet est dans le tableau tu utilise isset.

du coup tu simplifie largement le traitement du tableau et son stockage ;)

@+

Ecrire dans un fichier php supprimer une ligne

par Chimpunkette » 18 févr. 2014, 09:51

Bonjour, tout d'abord j'hesite entre ouvrir le fichier en r+ ou en w+.

Le principe de ce script est d'ecrire dans un fichier text L'id d'un message et son statut.

Ce que je veux faire c'est lorsqu'un nouveau statut arrive , je veux vérifier si l'id de ce message correspondant existe ou non dans le fichier text.
Si il existe alors je veux supprimer la ligne la ligne puis reecrire l'Id avec le nouveau statut.
Si il n'existe pas alors j'ecris la ligne directement.

Question comment supprimer la ligne si $_Get['MsgId] existe dans le fichier text ?
<?php
/* Ouvre le fichier en lecture et écriture, et place le pointeur de fichier au début du fichier.*/
$handle = fopen("/../../sms/status_msg.txt", "r+");
/*w+ :Ouvre en lecture et écriture ; place le pointeur de fichier au début du fichier 
 * et réduit la taille du fichier à 0. Si le fichier n'existe pas, on tente de le créer.*/

// Lit le document  dans un tableau
$lines = file("../.../../sms/status_msg.txt");
 // initialise la variable nouvelle ligne a vrai 
$new == TRUE;
  //Pour chaque ligne 
foreach ($lines as $line_msg => $lines){
    /*Enleve le caractere |*/
    $ch=explode($lines, "|");
        // si la premiere colonne = $_Get['MsgId']
    if(trim($ch)[1] == $_GET['MsgId']){     
        // Recupere toute les lignes du fichiers  
    $fichier .= $lines;
    //Efface la ligne qui contient $_Get['MsgId']
     
    //Ecrit la nouvelle ligne 
     fwrite($handle,"| ". $_GET['MsgId'].'  |  '.$_GET['status'].'    |'."\n");
   $new == FALSE;}
        else{//si $_GET['MsgID'] n'existe pas 
      // recupere toutes les lignes existantes
      $fichier.= $lines;
      //Ecrit la nouvelle ligne
     fwrite($handle,"| ". $_GET['MsgId'].'  |  '.$_GET['status'].'    |'."\n"); 
    }   
    }
fclose($handle);
?>