Aller au contenu

messages dans un livre d'or


Sujets conseillés

Posté (modifié)

Bonjour,

J'utilise un script PHP pour un livre d'or. Ce script écrit les messages dans un document .doc Cependant il les ecrit les un a la suite des autres, ce qui fait que dans la liste des messages, le plus récent est a la fin. J'aimerais que ce soit le contraire et que les messages soient écrits au début du .doc

Est possible sans changer de script ou faut il le changer ?

Merci

Modifié par Web35
Posté

C'est possible, mais il faut changer le script. Pourquoi ecrit il les messages dans un .doc ? C'est assez étrange ?

En gros, quand il écrit les messages dans le fichier, il ouvre le fichier, se place à la fin, et y écrit le dernier message.

Ce qu'il faut, c'est que, lorsqu'il ouvre ce fichier pour y lire les messages, il ne les affiches pas dans l'ordre dans lequel il les lit, mais au lieu de ca, les stocke dans une variable tableau. Ensuite, tu affiches cette variable dans l'ordre inverse, ce qui est à mon avis le plus simple à réaliser.

As tu le code qui permet d'afficher les lignes du fichier dans la page ?

Posté

Bonjour,

Tu dois pouvoir faire les modifications qu'il faut dans le scripts.

Pour ajouter des données en début de fichier la solution consiste selon moi à sauvegarder préalablement les données du fichiers, puis de réécrire le fichier en ajoutant d'abord le dernier message, puis les suivants.

Posté

En fait j'ai réussi en remplacant fopen($doc,'a+'); par fopen($doc,'r+');

Mais il y a un autre probleme, le message est bien inscrit mais en remplacant le début du fichier. Comment faire pour qu'il rajoute simplement le texte ?

MErci

Posté

Il te faut ouvrir le fichier en lecture seule, prendre le contenu, ajouter ton contenu au début du fichier, et enregistrer en écriture seule le contenu du fichier. Ca peut paraitre fastidieux, mais ca reste très rapide.

Nico.

Posté

Je ne m'y connais pas beaucoup en PHP, que faut il faire pour recuperer le contenu du .doc ? Et pour le réécrire ensuite dans le fichier ?

Posté

postes ci dessous la partie qui doit enregistrer les données dans le fichier .

Posté

Après quelques recherches sur google j'ai trouvé la fonction file_get_contents

j'ai fait le script suivant et ca fonctionne :

$doc="guestbook.doc";


$con="guestbook.doc";
fopen($con,'r');
$contenu = file_get_contents($con);



$fp = fopen($doc,'w+');


$page = "";
$page .= "<b><a href=\"mailto:$mail\">$nom</a></b> - $ville ($pays) - $d<br>$message<br><hr>\n";


fwrite($fp,"$page" ,strlen("$page"));
fwrite($fp,"$contenu" ,strlen("$contenu"));


fclose($fp);

Il y a peu etre plus simple mais avec ca je n'ai aucun probleme.

Posté

le premier fopen est inutile :

$con="guestbook.doc";
fopen($con,'r');
$contenu = file_get_contents($con);

se traduit par :

$con="guestbook.doc";
$contenu = file_get_contents($con);

file_get_contents ne marche pas sur tous les serveurs (pb de version php ?)

Par contre, s'il marche, alors tu peux très bien utiliser de la même manière file_put_contents. (essaies, idem, ca marche pas sur tous les serveurs.. )

Ton script reviendrait à

$doc="guestbook.doc";
$page = "<b><a href=machin>lien</a>";

$cont = file_get_contents($doc);
file_put_contents($page.$cont);

Après vérification, file_put_contents marche sur php5, alors que file_get_contents marche à partir de version 4.3.

Nico.

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...