pb guestbook

Petit nouveau ! | 2 Messages

20 sept. 2005, 16:22

Bonjour,

jé un petit problème de programmation pour afficher un guestbook par le biais de fichier .txt, je voudrais l'afficher en antéchronologique ( le plus récent vers le haut)

enfin le seul truc c de pouvoir ecrire le contenu d'un fichier dans un autre, voila ce qui ne marche pas :
<?
//Ouverture des fichiers en ecriture
$fp = fopen("guestbook.txt",a);
$temp = fopen("tampon.txt",w);
// lecture ligne a ligne en ecriture
	while(!feof($fp)) 
	{
		$ligne .= fgets($fp, 4096);
		
	}
		fwrite($temp,"$ligne");
fclose($fp);
fclose($temp);
$fp = fopen("guestbook.txt",w);
$temp = fopen("tampon.txt",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"));

	
	while(!feof($temp)) 
	{
		$contenu .= fgets($temp, 4096);
	}
	fwrite($fp,"$temp");
//fermeture du fichier
fclose($fp);
fclose($temp);
?>
c'est peut etre un pe sale mais je ve que ca fonctionne c'est tout :)

merci d'avance les gars

Mammouth du PHP | 19672 Messages

20 sept. 2005, 16:25

Au lieu d'afficher directement les lignes au fil de la lecture du fichier, enregistre les dans un tableau indexé et ensuite affiche dans une nouvelle boucle à partir du tableau après avoir fait un array_reverse()
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Petit nouveau ! | 2 Messages

20 sept. 2005, 18:19

yes merci en passant par un tableau ca marche

j'ai abandonné array_reverse ca chier pour les messages en plusieurs lignes...

//Ouverture du fichier en &eacute;criture
$tab = file("guestbook.txt");

$fp = fopen("guestbook.txt",w);


//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"));
while(list($cle,$val) = each($tab))
{
fwrite($fp,"$val" ,strlen("$val"));
}

//fermeture du fichier
fclose($fp);


@+

Mammouth du PHP | 19672 Messages

20 sept. 2005, 18:21

Tu pourrais utiliser le bouton [php] pour envoyer du code !

Ensuite, tu pourrais récupérer le LO que j'ai créé, il utilise un fichier texte aussi, libre à toi de décortiquer le code (téléchargement sur ma page perso)
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: