Bonjour et merci de votre intéret
c'est bien le même script qui lit mais pas les même fonctions.
function ecrire_fichier($nom_fichier, $chaine_a_ecrire, $fin_de_ligne)
{
// Ouverture fichier en lecture et ecriture
$fp = fopen ($nom_fichier, "a+");
// on écrit
if ($fin_de_ligne == true)
{
fputs ($fp, '|'.$chaine_a_ecrire."\n");
}
else
{
fputs ($fp, '|'.$chaine_a_ecrire);
}
// on ferme le fichier
fclose ($fp);
/*$ptr_fich = fopen($nom_fichier, "r");
if (FALSE === $ptr_fich)
{
exit("<br> <br>erreur lors de l'ouverture du fichier !!!!<br>");
}
$contenu = fread($ptr_fich, filesize($nom_fichier));
echo ("<br><br>ecrire_fichier contenu VERIFIE: ").$contenu;
fclose($ptr_fich);*/
}
//ecrire chaine_a_ecrire dans une colonne du fichier bdd.csv
function ecrire_fichier_colonne($nom_fichier, $chaine_a_ecrire, $NoColonne, $fin_de_ligne)
{
//lire la dernière ligne
$ptr_new = fopen($nom_fichier, "r");
if (FALSE === $ptr_new)
{
exit("<br> <br>erreur lors de l'ouverture du fichier !!!!<br>");
}
$contenu = fread($ptr_new, filesize($nom_fichier));
echo ("<br><br>ecrire_fichier_colonne contenu: ").$contenu;
$nb_ligne_fichier = substr_count($contenu, "\n");
//echo ("<br><br><br>ecrire_fichier_colonne nb_ligne_fichier: ").$nb_ligne_fichier;
/* On a plus besoin du pointeur */
fclose($ptr_new);
$contenu = explode("\n", $contenu); /* PHP_EOL contient le saut à la ligne utilisé sur le serveur (\n linux, \r\n windows ou \r Macintosh */
echo ("<br><br>ecrire_fichier_colonne AVANT contenu[0]: ").$contenu[0];
//echo ("<br><br>ecrire_fichier_colonne AVANT contenu[1]: ").$contenu[1];
//echo ("<br><br>ecrire_fichier_colonne AVANT contenu[2]: ").$contenu[2];
//*********affecter à contenu
la ligne i séparée par le caractère '\n'
$chaine_etudiee = $contenu[0];
$position_slash_n = false;
$position_slash_n = strpos($chaine_etudiee,"\n");
$j=0;
$der_ligne = $contenu[0];
while($position_slash_n != false)
{
$contenu[$j] = substr($chaine_etudiee,0,$position_slash_n);
if($contenu[$j] != "")
{
$der_ligne = $contenu[$j];
echo "der_ligne: $j ".$der_ligne;
}
//str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] )
//suppression '\n'
$chaine_etudiee = substr($chaine_etudiee,$position_slash_n+2);
//echo "<br><br><br>contenu[".$j."] ".$contenu[$j];
//echo "<br><br>j: chaine etudiee: ".$j.$chaine_etudiee;
$position_slash_n = strpos($chaine_etudiee,"\n");
echo "<br>position slash n: ".$position_slash_n;
if ($position_slash_n == false)
{ echo "<br>dedans !!";
$contenu[$j+1] = substr($chaine_etudiee,0,strlen($chaine_etudiee));
if($contenu[$j+1] != "")
{echo "<br>dedans ENCORE !!";
$der_ligne = $contenu[$j+1];
}
break;
}
$j++;
}
//***********
echo "<br><br> ecrire_fichier_colonne derniere ligne du fichier lue: ".$der_ligne."<br>j: ".$j;
//supprimer la dernière ligne
//unset($tab[count($tab)-1]);
//supprimer_ligne_fichier($nom_fichier);
if (strpos($der_ligne, "\n") != false)
$der_ligne = substr($der_ligne, 0, strpos($der_ligne, "\n"));
//echo "<br>ecrire_fichier_colonne der_ligne retour chariot supprimee en fin de ligne: ".$der_ligne;
//recréer la ligne à partir de la lecture de l'ancienne
//1) on complète la ligne de "|x"
for ($i = 0; $i <= 20; $i++)
{
$der_ligne = $der_ligne."|x";
}
//$der_ligne = $der_ligne."\n";
//2) on se positionne à la bonne colonne
$der_ligne_copy = $der_ligne;
echo "<br> ecrire_fichier_colonne der ligne copy: ".$der_ligne_copy;
$nb_pipe = 0;
if(substr($der_ligne_copy, 0, 1) != chr(124))
$NoColonne = $NoColonne - 1;
$position_pipe = false;
$position_pipe_precedent = 0;
$taille_du_mot = 0;
while($nb_pipe < $NoColonne)
{
$position_pipe = strpos ( $der_ligne_copy , chr(124));
//echo "<br> ecrire_fichier_colonne position pipe: ".$position_pipe."<br>";
if(($position_pipe != false) OR (substr($der_ligne_copy, 0, 1) == chr(124)))
{
//on retire la pipe de $der_ligne_copy
$debut_chaine_retour = substr($der_ligne_copy, 0, $position_pipe);
//echo "<br> ecrire_fichier_colonne debut_chaine_retour pipe: ".$debut_chaine_retour."<br>";
$taille_chaine = strlen($der_ligne_copy);
$fin_chaine_retour = substr($der_ligne_copy, $position_pipe +1, $taille_chaine);
//echo "<br>ecrire_fichier_colonne fin_chaine_retour pipe: ".$fin_chaine_retour."<br><br>nb_pipe: ".$nb_pipe."<br>";
$der_ligne_copy = $debut_chaine_retour.$fin_chaine_retour;
//echo "<br>ecrire_fichier_colonne der ligne copy: ".$der_ligne_copy;
$taille_du_mot = strpos ( $der_ligne_copy , chr(124)) - $position_pipe;
$position_pipe_precedent = $position_pipe;
//echo "<br>ecrire_fichier_colonne taille_du_mot ".$taille_du_mot;
$nb_pipe++;
}
if(($position_pipe == false) AND ($nb_pipe >= 2))
break;
}
//echo "<br>*************<br><br>ecrire_fichier_colonne der_ligne: ".$der_ligne."<br>";
//echo "<br>ecrire_fichier_colonne taille du mot ".$taille_du_mot."<br>";
//echo "<br>ecrire_fichier_colonne nb_pipe ".$nb_pipe."<br>";
//inserer $chaine_a_ecrire dans la colonne
$debut_chaine_retour = substr($der_ligne, 0, $position_pipe+$nb_pipe);
//echo "<br>ecrire_fichier_colonne debut_chaine_retour pipe FINAL: ".$debut_chaine_retour."<br>";
$taille_chaine = strlen($der_ligne_copy);
$fin_chaine_retour = substr($der_ligne, $position_pipe +$nb_pipe+$taille_du_mot, $taille_chaine);
//echo "<br>ecrire_fichier_colonne fin_chaine_retour pipe FINAL: ".$fin_chaine_retour;
$der_ligne = $debut_chaine_retour.$chaine_a_ecrire.$fin_chaine_retour;
echo "<br><br>*******ecrire_fichier_colonne der ligne copy: ".$der_ligne."<BR>*********************<BR><BR><BR>";
if (substr($der_ligne, 0, 1) == chr(124))
{
$der_ligne = substr($der_ligne, 1, strlen($der_ligne));
}
// on écrit
ecrire_fichier($nom_fichier, $der_ligne, true);
}
Merci de vous occuper de moi