PHP : Fonction "fwrite"

eXo -  
pyschopathe Messages postés 2053 Statut Membre -
Bonjour,

Alors, ce que je recherche a faire, c'est modifier un ligne existante dans un fichier csv. Je récupere le contenu du fichier dans $handle, ensuite je crée ma nouvelle ligne $ligne[$l] à l'endroit déterminé par $l et j'implode $imp pour concaténé le tout $imp = implode($lignes,"");

Mon probleme est que lorsque j'écris le nouveau tableau , fwrite($handle,$imp); j'obitiens comme résultat le fichier réécris sans ma nouvelle ligne... il me manque que sa ..

Si quelqu'un peu m'aider.

Merci d'avance..

Le code :

$i=1;
$handle = fopen("listePilote/pilotage.csv", "r+");
while ($data = fgets($handle, 4096)) {
$lignes[$i] = $data;
$i++;
}
fclose($handle);
//création temporaire de la nouvelle lignes
$lignes[$l] = array("$pilote;","$dateu;","$incident;","$prise_incident;","$environement;","$job_er;","$abend;","$job_erreur;","$job_repri;","$relance;","$hors_perim;","$respect_20mn;","$asset;","$log_erreur;","$diag_pilote;","$topx;","$escalade;","$escalade_justif;","$banque;","$partition;","$commentaire\n");

$imp = implode($lignes,"");
echo $imp;

// ouverture du fichier et concaténation des infos
$handle = fopen("listePilote/pilotage.csv", "w+");
fwrite($handle,$imp);
fclose($handle);
Configuration: Windows Vista Internet Explorer 7.0

1 réponse

  1. pyschopathe Messages postés 2053 Statut Membre 137
     
    Le code suivant devrait faire ce que tu veux :
    <?php
    // Lecture du fichier csv
    $i=0;
    $lignes = array();
    $handle = fopen( 'listePilote/pilotage.csv', 'r+' ); 
    while ( $data = fgetcsv( $handle ) ) { 
      if ( $i != $l ) {
        $lignes[$i] = $data; 
      } else {
        $lignes[$i] = array();
      }
      $i++; 
    }
    
    // On insère notre nouvelle ligne à sa pasition dans la liste
    $lignes[$l] = array( $pilote, $dateu, $incident, $prise_incident, 
        $environement, $job_er, $abend, $job_erreur, $job_repri, 
        $relance, $hors_perim, $respect_20mn, $asset, $log_erreur, 
        $diag_pilote, $topx, $escalade, $escalade_justif, $banque, 
        $partition, $commentaire ); 
    
    foreach ( $lignes as $line ) {
      fputcsv( $handle, $ligne ); 
    }
    fclose( $handle );
    ?>
    1