comment rajouter un texte à la fin du fichier en conservant l'existant ?

Eléphanteau du PHP | 23 Messages

03 nov. 2008, 23:43

bonjour

avec ce script la chaine de carctère se met à la fin du fichier, mais les uns à coté des autres ?

comment faire pour les mettre les uns en dessous des autres ?
<?php 

$f = 'compteur.txt'; 
$text = "ma chaine de caractères"; 
$handle = fopen($f,"a+"); 

// regarde si le fichier est accessible en écriture 
if (is_writable($f)) { 
// Ecriture 
    if (fwrite($handle, $text) === FALSE) { 
      echo 'Impossible d\'écrire dans le fichier '.$f.''; 
      exit; 
    } 
    
    echo 'Ecriture terminé <br />'; 
    
    fclose($handle); 
                    
} 
else { 
      echo 'Impossible d\'écrire dans le fichier '.$f.''; 
    } 

 // lecture
if (!($f=fopen("compteur.txt","r"))) 
exit("Impossible d'ouvrir le fichier."); 
while (!feof($f)) 
{ 
$texte=fgetc($f); 
echo $texte; 
} 
fclose($f); 
?> 
merci d'avance

je suis débutant ne php, je progresse petit à petit merci encore

Mammouth du PHP | 19672 Messages

03 nov. 2008, 23:57

tounse, édite donc ton message, sélectionne le bloc de code et clique dans la barre d'outils du formulaire sur le bouton
[/b], ta va voir que ce sera autrement plus facile à lire :-k
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 686 Messages

04 nov. 2008, 00:03

Pour faire un retour à la ligne
echo "\n";

Invité
Invité n'ayant pas de compte PHPfrance

04 nov. 2008, 00:40

ce n'est pas cela ma question !

mais comment rajouter des ligne à la suite desunes des autres dans le fichier

merci

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

04 nov. 2008, 00:53

Modération :
tounse, afin d'améliorer la lisibilité de ton message,
pense à utiliser les balises [code] ou [php] (selon le langage utilisé).

Elles sont disponibles au-dessus de la zone de saisie de ton message
lorsque tu postes un nouveau message.

Des indications sont disponibles sur la manière de mettre en forme vos messages dans la FAQ

tounse, édite donc ton message, sélectionne le bloc de code et clique dans la barre d'outils du formulaire sur le bouton
[/b], ta va voir que ce sera autrement plus facile à lire :-k[/quote]
Merci, mais on s'en occupe. Pour ces cas là, il y a un bouton de signalement [img]http://www.phpfrance.com/forums/templates/subSilver/images/icon_report.gif[/img]
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

04 nov. 2008, 00:55

A chaque fois que tu rajoutes une ligne, il faut que tu rajoutes un saut de ligne (\n) à la fin pour que la chaine suivante soit ajoutée à la ligne suivante et pas à coté ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Mammouth du PHP | 686 Messages

04 nov. 2008, 01:41

Comme je l'avai dit tonnère de Zeus ! :lol:
Pourquoi avant de critiquer ils ne testent pas !

Eléphanteau du PHP | 23 Messages

04 nov. 2008, 10:54

echo $texte '<br /><br />'; 
ou
echo $texte '\n';
ne fonctionne pas

merci

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

04 nov. 2008, 11:08

tounse, je t'ai déjà demander d'utiliser les balises
 et [CODE].  Ca serait dommage de devoir fermer ton post alors que tu arrives à la solution.

Sinon, dans un fichier texte, le <br /> ne représente pas un saut de ligne, car le fichier texte n'est pas du HTML
Ensuite, le \n n'est reconnu que s'il est entre double-quote (") => "\n" à la place de '\n'
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 422 Messages

04 nov. 2008, 11:13

A chaque fois que tu rajoutes une ligne, il faut que tu rajoutes un saut de ligne (\n) à la fin pour que la chaine suivante soit ajoutée à la ligne suivante et pas à coté
Et pour que ce soit lisible sous Windows, il faut mettre \r\n

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

04 nov. 2008, 11:14

A chaque fois que tu rajoutes une ligne, il faut que tu rajoutes un saut de ligne (\n) à la fin pour que la chaine suivante soit ajoutée à la ligne suivante et pas à coté
Et pour que ce soit lisible sous Windows, il faut mettre \r\n
Ca dépend du soft utilisé ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphanteau du PHP | 23 Messages

04 nov. 2008, 11:28

Code : Tout sélectionner

echo $texte "\n";
cela ne fonctionne pas j'ai un message d'erreur :

Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting ',' or ';'

merci je ne fais pas preuve de mauvaise volonté, mais ce qui parait simple ...

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

04 nov. 2008, 11:30

Il faut concatener ton texte avec le saut de ligne.
En PHP, l'opérateur qui te permet ça est le point (.)

Donc, pour ajouter \n à la fin de ton texte, il faut écrire
echo $texte ."\n";
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphanteau du PHP | 23 Messages

04 nov. 2008, 11:38

bizzard :

dans ce cas :

Code : Tout sélectionner

echo $texte;
cela donne :

Ecriture terminé
ma chaine de caractèresma chaine de caractèresma chaine de caractères

dans ce cas :

Code : Tout sélectionner

echo $texte ."\n";
cela donne :

Ecriture terminé
m a c h a i n e d e c a r a c t �� r e s m a c h a i n e d e c a r a c t �� r e s

Eléphant du PHP | 422 Messages

04 nov. 2008, 13:51

Ca dépend du soft utilisé
Non. Le standard Windows, c'est Carriage Return / Line Feed.