Php fseek et fputs

layeures Messages postés 310 Statut Membre -  
layeures Messages postés 310 Statut Membre -
Bonjour,

le code qui ci dessour ne marche pas comment resoudre le probleme

<?

$fp=fopen("texte.txt","a+");

fseek($fp, 5); //replace le pointeur
fputs($fp,"\n");
fputs($fp,"cette portion de texte.", 10);
$fichier_texte=fgets($fp,4060); //lit les donnee
echo"$fichier_texte"; // affiche les donne

fclose($fp);

?>
voila je viens de tester tous les code posssible est je ne trouve pas la solution comment inserer un texte au millieu d'un texte
ce code ne marche pas

MERCI D'AVANCE DE VOTRE AIDE
Configuration: Windows XP Internet Explorer 7.0

12 réponses

  1. freto Messages postés 1543 Date d'inscription   Statut Membre Dernière intervention   165
     
    Bonjour.

    Quand tu dis ce code ne marche pas, que se passe t il vraiment? Une erreur? Le fichier s'affiche mais sans le texte ajouté?

    Sinon, au lieu d'utiliser fputs (qui est un alias de fwrite), essaie fwrite (même variables pour les paramètres).

    Pour l'écriture de la chaine, tu sais qu'il va s'arreter avant la fin de la chaine (du fait que tu lui dit: ecrit "cette portion de texte.", mais tu lui indique une taille de 10, donc il ne va écrire que "cette port"
    0
  2. layeures Messages postés 310 Statut Membre 3
     
    voila je vien de modifier le code est probleme

    ca m'affiche a l'ecran : fp, 5); //replace le pointeur

    <?

    $fp=fopen("texte.txt","a+");

    fseek($fp, 5); //replace le pointeur
    fwrite($fp,"\n");
    fwrite($fp,"cette portion de texte.", 100);
    $fichier_texte=fgets($fp,4060); //lit les donnee
    echo"$fichier_texte"; // affiche les donne

    fclose($fp);

    ?>
    0
    1. freto Messages postés 1543 Date d'inscription   Statut Membre Dernière intervention   165
       
      En gros, sa t'affiche une partie de ton code.

      J'ai djà eu ce problème mais arghhhh!!!! Je ne sais plus d'où sa venait.

      Sa va peut être me revenir. En attendant, précise un peu si ton code est appelé depuis un autre fichier via un include ou un require, et copie / colle tout le code qu'il y a autour de cette petite partie que tu nous a montré (juste le fichier, pas toute l'appli).

      Pour ce faire, n'oublie pas d'encadrer tout le code quand tu le mettra ici par une balise < code > < / code> (le petit bouton au dessus de l'éditeur à coté de S )
      Plus d'infos ici pour le copier coller de code
      0
  3. nEm3sis Messages postés 722 Statut Membre 113
     
    essaye ça ça devrait mieux marcher
    ( ça correspond peut être pas car j'ai pas très bien compris ce que tu voulais faire)

    <?php
    
    $fp=fopen("texte.txt","a+");
    
    fwrite($fp, "\n");
    fwrite($fp, "cette portion de texte.");
    fseek( $fp, 0 );
    while( $fichier_texte = fgets($fp, 4060) ) //lit les données tant qu'il y a qqch a lire
    	echo $fichier_texte.'<br/>'; // affiche les donne
    
    fclose($fp);
    
    ?>


    ps 2 questions :
    1) à quoi te sert le 100 dans le fwrite ?
    2) le fseek du début il sert a quoi ?_?
    0
  4. layeures Messages postés 310 Statut Membre 3
     
    <?

    $fp=fopen("texte.txt","a+");

    fseek($fp, 5); //replace le pointeur
    fwrite($fp,"\n");
    fwrite($fp,"cette portion de texte.", 100);
    $fichier_texte=fgets($fp,4060); //lit les donnee
    echo"$fichier_texte"; // affiche les donne

    fclose($fp);

    ?>

    texte.txt

    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

    voila cest fait
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. nEm3sis Messages postés 722 Statut Membre 113
     
    " texte.txt

    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

    voila cest fait
    "

    ?_? ce qui veux dire ?
    tu as trouvé ou il te manque encore quelque chose ?

    si c'est bon oublies pas le tag résolu =)
    0
    1. freto Messages postés 1543 Date d'inscription   Statut Membre Dernière intervention   165
       
      Nan , en fait son texte.txt contient:
      aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

      Ya un soucis, tu cherche à lire 4060 caractères dans un fichier qui ne les contient pas. Donc a bugg!!
      Essaie de réduire la taille dans fgets.

      Et aussi, essaie avec fread, on ne sait jamais.
      0
      1. nEm3sis Messages postés 722 Statut Membre 113 > freto Messages postés 1543 Date d'inscription   Statut Membre Dernière intervention  
         
        oh merci j'avais pas compris ça ^^
        bizarre que son texte contienne aaaaaaaaaaaaaaaa alors qu'il écrit autre chose dedans

        pour les 4060 c'est pas un problème puisque fgets va lire soit jusqu'à la fin de la ligne soit 4060 caractère
        donc ici il s'arrêtera a la fin de la ligne

        pour afficher ligne par ligne fgets est mieux
        mais pour afficher le fichier en entier c'est vrai que fread sera plus approprié je trouve =)
        0
  7. layeures Messages postés 310 Statut Membre 3
     
    j ai essaye fread() est ca ne marche pas

    je n arrive toujours pas a ecrire aux milleu du texte

    <?

    $fp=fopen("texte.txt","a+");

    fseek($fp, 5); //replace le pointeur
    fwrite($fp,"cette portion de texte.", 100);
    $fichier_texte=fread($fp,4060); //lit les donnee
    echo"$fichier_texte"; // affiche les donne

    fclose($fp);

    ?>

    resultat ca m affiche a l ecran ca :

    e.txt","a+"); fseek($fp, 5); //replace le pointeur fwrite($fp,"cette portion de texte.", 100); $fichier_texte=fread($fp,4060); //lit les donnee echo"$fichier_texte"; // affiche les donne fclose($fp); ?> âÞ x…x…
    0
  8. nEm3sis Messages postés 722 Statut Membre 113
     
    1) tu as lu ce que j'ai ecris ici ?
    2) il faut ouvrir en mode r+ et non a+ si tu veux écrire ailleurs que à la fin
    0
  9. layeures Messages postés 310 Statut Membre 3
     
    reponse a ta question
    le fseek il me sair a placer le pointeur aux millieu du texte pour inserer le nouveau texte

    $fp=fopen("texte.txt","a+");

    fwrite($fp, "\n");
    fwrite($fp, "cette portion de texte.");
    fseek( $fp, 0 );
    while( $fichier_texte = fgets($fp, 4060) ) //lit les données tant qu'il y a qqch a lire
    echo $fichier_texte.'<br/>'; // affiche les donne

    fclose($fp);

    je vien de assayer ce code est ca ne marche pas l'ecran m affiche

    ssssscette portion de texte.e.txt","r+");

    fseek($fp, 5); //replace le pointeur
    fwrite($fp,"cette portion de texte.", 100);
    $fichier_texte=fread($fp,4060); //lit les donnee
    echo"$fichier_texte"; // affiche les donne

    fclose($fp);

    ?>
    0
  10. layeures Messages postés 310 Statut Membre 3
     
    ce code aussi ne marche pas
    <?
    /*

    $fp=fopen("texte.txt","r+");

    fseek($fp, 5); //replace le pointeur
    fwrite($fp,"cette portion de texte.", 100);
    $fichier_texte=fread($fp,4060); //lit les donnee
    echo"$fichier_texte"; // affiche les donne

    fclose($fp);
    */

    $fp=fopen("texte.txt","r+");

    fwrite($fp, "cette portion de texte.");
    fseek( $fp, 0 );
    while( $fichier_texte = fgets($fp, 4060) ) //lit les données tant qu'il y a qqch a lire
    echo $fichier_texte.'<br/>'; // affiche les donne

    fclose($fp);

    ?>
    0
  11. layeures Messages postés 310 Statut Membre 3
     
    j ai tester ton code est ca ne marche pas
    0
  12. nEm3sis Messages postés 722 Statut Membre 113
     
    quand je met ce que tu as mis :
    <?
    /*
    
    $fp=fopen("texte.txt","r+");
    
    fseek($fp, 5); //replace le pointeur
    fwrite($fp,"cette portion de texte.", 100);
    $fichier_texte=fread($fp,4060); //lit les donnee
    echo"$fichier_texte"; // affiche les donne
    
    fclose($fp);
    */
    
    $fp=fopen("texte.txt","r+");
    
    
    fwrite($fp, "cette portion de texte.");
    fseek( $fp, 0 );
    while( $fichier_texte = fgets($fp, 4060) ) //lit les données tant qu'il y a qqch a lire
    echo $fichier_texte.'<br/>'; // affiche les donne
    
    fclose($fp);
    
    ?>

    ça m'affiche ça
    '; // affiche les donne fclose($fp); ?>


    quand je met comme j'avais mis avant
    <?php
    /*
    
    $fp=fopen("texte.txt","r+");
    
    fseek($fp, 5); //replace le pointeur
    fwrite($fp,"cette portion de texte.", 100);
    $fichier_texte=fread($fp,4060); //lit les donnee
    echo"$fichier_texte"; // affiche les donne
    
    fclose($fp);
    */
    
    $fp=fopen("texte.txt","r+");
    
    
    fwrite($fp, "cette portion de texte.");
    fseek( $fp, 0 );
    while( $fichier_texte = fgets($fp, 4060) ) //lit les données tant qu'il y a qqch a lire
    echo $fichier_texte.'<br/>'; // affiche les donne
    
    fclose($fp);
    
    ?>
    ça m'affiche ça
    cette portion de texte.
    
    0
  13. layeures Messages postés 310 Statut Membre 3
     
    moi ca m affiche ceci
    cette portion de texte.fp, 5, 10); //replace le pointeur
    zzzzzzzzzzzzzzzzz
    0