Web35 Posté 23 Février 2005 Posté 23 Février 2005 (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é 23 Février 2005 par Web35
Anonymus Posté 23 Février 2005 Posté 23 Février 2005 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 ?
Titag Posté 23 Février 2005 Posté 23 Février 2005 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.
Web35 Posté 23 Février 2005 Auteur Posté 23 Février 2005 Je vais essayer avec le tableau, merci encore pour vos réponses.
Web35 Posté 24 Février 2005 Auteur Posté 24 Février 2005 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
Anonymus Posté 24 Février 2005 Posté 24 Février 2005 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.
Web35 Posté 24 Février 2005 Auteur Posté 24 Février 2005 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 ?
Anonymus Posté 24 Février 2005 Posté 24 Février 2005 postes ci dessous la partie qui doit enregistrer les données dans le fichier .
Web35 Posté 25 Février 2005 Auteur Posté 25 Février 2005 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.
Anonymus Posté 26 Février 2005 Posté 26 Février 2005 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.
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant