Page 1 sur 1

probleme d'ordre d'affichage des messages dans un livre d'or

Posté : 18 févr. 2008, 16:00
par bol2ry
bonjour,
Je me permet de vous renvoyé sur le wall suivant afin de ne pas surcharger le forum par un post trop long :
http://phpdebutant.org/wall4696.php

J'ai vu des liens vers les tutoriaux de phpdebutant et je n'ai pas vu qu'il ne fallait pas mettre de lien vers un autre wall, cependant si c'est interdit, je referais un autre wall sur ce site :)

merci d'avance

Posté : 18 févr. 2008, 17:05
par Berzemus
Permets-moi une explication de r+:

J'ai une chaine simple dans un fichier: ABCDEF.

Je veux écrire GHI.

Pour le placer à la fin, avec a+, ça donne:

Code : Tout sélectionner

ABCDEFGHI.
Mais, pour placer au début, ça foire, puisque r+ donne:

Code : Tout sélectionner

GHIDEF
Qu'est-ce qui s'est passé ? En r+, le fichier est ouvert au début certes, mais le texte n'est pas "inséré", en poussant le texte précedent en avant, mais l'ancien texte est remplacé par le nouveau, au fur et à mesure. (un peu comme le mode refrappe de la touche insert)

Pour ajouter en début de texte, le plus simple serait de lire ta données dans une variable, de concaténer, et de remettre le tout dans le fichier. Ou alors, plus complexe mais plus efficace, utiliser du xhtml qui te permettra de traiter ta page comme un object xml.

Posté : 18 févr. 2008, 17:11
par bol2ry
Ah d'accord ! je ne savais pas que r+ "insérait" au lieu d ajouter !
MERCI beaucoup ! ca fait 3 jours que je me prends la tete la dessus :p

bon alors il ne me reste plus qu'a changer de methode, mais ca va pas etre facile parce que je suis super debutant et donc "lire ta données dans une variable, de concaténer, et de remettre le tout dans le fichier", ça ne me parle pas du tout :p et le xml n'en parlons pas...
Merci !

Posté : 18 févr. 2008, 17:45
par d0m
Tu mets ta ligne que tu veux ajouter dans une chaine de caractère :
$document = $ma_ligne_a_ajouter;
Ensuite, tu ouvres le fichier.
En le parcourant, au lieu d'afficher les lignes tu les concatènes avec la chaine de caractère :
$document .= $ligne_du_fichier;
Ensuite tu écris la chaine dans le document.

Posté : 18 févr. 2008, 17:50
par bol2ry
merci je vais essayer ca :)
par contre ne serais-ce pas possible avec la fonction w au lieu de r+ ?
du genre :

Code : Tout sélectionner

<?php //on lit le contenu $ancien=file_get_contents("messages.htm"); //on ouvre en écriture $rec_message = fopen("messages.html", "w"); //on concatène $nouveau=$contenue.$ancien; //on écrit et on ferme fputs($rec_message, $nouveau); fclose($rec_message); ?>