créer un site


livre d'or (ordre invers) : dernier message d'abord

Poster un nouveau sujet sur php   Répondre au sujet à php:livre d'or (ordre invers) : dernier message d'abord    Accueil Forum -> php
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
Cyborg69
html mioche
html mioche
Messagelivre d'or (ordre invers) : dernier message d'abord , Posté le: 18-09-2004 21:24

Le tuto que t'as fais Salemioche marche super bien (et je te remerci Very Happy ), mais il y a un truc que je n'arrive pas a faire : que, dans la page, les plus vieux messages soient affichés plus bas que les nouveaux.
Merci d'avance Wink
Cyborg69
html mioche
html mioche
Messagelivre d'or (ordre invers) : dernier message d'abord , Posté le: 26-09-2004 20:36

Alors, personne ne veut me répondre ? Crying or Very sad
salemioche
salemioche
salemioche
Messagelivre d'or (ordre invers) : dernier message d'abord , Posté le: 27-09-2004 20:29

en fait c'est un peu compliqué parce qu'il faut lire tout le fichier guestbook.doc, puis supprimer le contenu, puis ecrire le nouveau POST et ensuite tout les anciens.

pour lire tout le fichier

Code:
$gb = implode('', file('guestbook.doc'));


ouvrir le fichier

Code:
$f=fopen('guestbook.doc','w');


puis ecrire dedans


Code:
fwrite($f,'toto<br>\n' . $gb);
fclose($f);


voila ou un truc du genre, à la place de toto, tu mets le message que tu veux ajouter
maddoc
frontpage mioche
frontpage mioche
Messagelivre d'or (ordre invers) : dernier message d'abord , Posté le: 27-09-2004 20:39

Bonsoir,

Alors je vais tenter de vous modifier le code suivant :
Code:

<?
//Ouverture du fichier en &criture
$fp = fopen("/home/salemio/net/guestbook.doc",a);

//On convertit les caracteres html
$nom = htmlspecialchars($_POST['nom']);
$mail = htmlspecialchars($_POST['mail']);
$message = stripslashes(nl2br(htmlentities($_POST['message'])));
$d = date ( "d/m/Y H:i:s" );

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

//On rajoute le message
fwrite($fp,"$page" ,strlen("$page"));

//fermeture du fichier
fclose($fp);

//On affiche le message enregistr&
echo "Merci $nom, nous avons enregistr&: <br>";
echo "email : $mail <br> message : $message";

?>
<a href="guestbook.php">Retour au guestbook</a>


afin que les messages les plus récents soient affichés en premier :

Code:

<?

//On convertit les caracteres html
$nom = htmlspecialchars($_POST['nom']);
$mail = htmlspecialchars($_POST['mail']);
$message = stripslashes(nl2br(htmlentities($_POST['message'])));
$d = date ( "d/m/Y H:i:s" );

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

// Cr&ation d'un nom de fichier temporaire
$tmpname = tempnam("", "tmp");
$fp1 = fopen($tmpname, w);

//On ajoute le message
fwrite($fp1,"$page" ,strlen("$page"));

//Ouverture du fichier en lecture
$filename = "/home/salemio/net/guestbook.doc";
$fp2 = fopen($filename, r);

// Rajoute l'ancien fichier au bout
$contents = fread($fp2, filesize($filename));
fwrite($fp1, $contents, filesize($filename));

// Fermeture du fichier
fclose($fp2);

// Fermeture du fichier
fclose($fp1);

// Efface l'ancien guestbook
unlink($filename);

// Renomme le nouveau guest book
rename($tmpname, $filename);

//On affiche le message enregistr&
echo "Merci $nom, nous avons enregistr&: <br>";
echo "email : $mail <br> message : $message";

?>
<a href="guestbook.php">Retour au guestbook</a>


Je n'ai pas testé le code donc si cela ne marche pas essayer de décrire le problème afin que l'on tente de corriger le script.
salemioche
salemioche
salemioche
Messagelivre d'or (ordre invers) : dernier message d'abord , Posté le: 27-09-2004 20:46

pour que ton code marche il faut avoir les droits en ecriture sur le repertoire, dans ma version seul le fichier guestbook.doc à ces droits. le risque c'est que en plus ensuite comme c'est un fichier créé par php tu ne puisse plus le supprimer par manque de droit et soit obliger de repasser par php (impossible par ftp)
maddoc
frontpage mioche
frontpage mioche
Messagelivre d'or (ordre invers) : dernier message d'abord , Posté le: 28-09-2004 6:24

Effectivement, c'est à vérifier

Je vais réfléchir à une méthode qui ne se sert pas de fichier temporaire.

maddoc
Cyborg69
html mioche
html mioche
Messagelivre d'or (ordre invers) : dernier message d'abord , Posté le: 03-10-2004 12:38

merci maddoc mais, comme salemioche, j'ai que guestbook.doc qui a les droits en écriture. Donc ca ne marche pas. Ce serai super bien si tu trouvais une autre solution Embarassed
merci d'avance Very Happy
maddoc
frontpage mioche
frontpage mioche
Messagelivre d'or (ordre invers) : dernier message d'abord , Posté le: 03-10-2004 20:30

Bonsoir,

On peut essayer un truc du genre :
Code:

<?

//On convertit les caracteres html
$nom = htmlspecialchars($_POST['nom']);
$mail = htmlspecialchars($_POST['mail']);
$message = stripslashes(nl2br(htmlentities($_POST['message'])));
$d = date ( "d/m/Y H:i:s" );

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

//Ouverture du fichier en lecture
$filename = "/home/salemio/net/guestbook.doc";
$fp = fopen($filename, 'r+');

// Taille du fichier
$size = filesize($filename);

// Lecture du fichier courant
$contents = fread($fp, $size);

// On se met au debut du fichier
fseek($fp, 0, SEEK_SET);

//On ajoute le nouveau message
fwrite($fp,"$page" ,strlen("$page"));

// Puis on rajoute les anciens
fwrite($fp, $contents, $size);

// Fermeture du fichier
fclose($fp1);

//On affiche le message enregistr&
echo "Merci $nom, nous avons enregistr&: <br>";
echo "email : $mail <br> message : $message";

?>
<a href="guestbook.php">Retour au guestbook</a>


Ce n'est toujours pas tester...

Maddoc

P.S. : Je ne donnerais pas de signe de vie jusqu'au 14 octobre 2004.
Cyborg69
html mioche
html mioche
Messagelivre d'or (ordre invers) : dernier message d'abord , Posté le: 04-10-2004 19:13

Merci, merci, merci, merci Very Happy
Ca marche super bien Wink
lukypetitnuage
frontpage mioche
frontpage mioche
Messagelivre d'or (ordre invers) : dernier message d'abord , Posté le: 16-06-2005 21:41

j'ai du rater quelque chose, ça marche pas chez moi, mes messages sont toujours les plus anciens au début Crying or Very sad
Nevinrhal
html mioche
html mioche
Messagelivre d'or (ordre invers) : dernier message d'abord , Posté le: 16-06-2005 23:36

J'ai fait un post ici: le post [http://forum.salemioche.net/ftopic1780.php]

Mon livre d'or marche et pour l'écriture du fichier c'est ca :
Code:
// Ecriture du fichier
$ancien = file_get_contents("LivreOr.txt");
$fic = fopen("LivreOr.txt", "w");
fwrite($fic, $page.$ancien, strlen($page)+ strlen($ancien));
fclose($fic);
?>
Montrer les messages depuis:   
Poster un nouveau sujet sur php   Répondre au sujet à php:livre d'or (ordre invers) : dernier message d'abord    Accueil Forum -> php Toutes les heures sont au format GMT + 1 Heure
Page 1 sur 1

 
Sauter vers:  
S'enregistrerS'enregistrer
ProfilProfil
Se connecter pour vérifier ses messages privésSe connecter pour vérifier ses messages privés
RechercherRechercher
Liste des MembresMembres
FAQFAQ
ConnexionConnexion 


© Mentions Légales