Aller au contenu

messages dans un livre d'or


Web35

Sujets conseillés

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
Lien vers le commentaire
Partager sur d’autres sites

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 ?

Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

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



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