besoin d'aide pour modifier code PHP pour modifer l'écriture sur un fichier htm

Petit nouveau ! | 3 Messages

06 janv. 2008, 15:35

Bonjour.
J'ai voulu faire un guestbook qui se compose du fichier saisie.htm ( avec le formulaire ) et du fichier forum.htm ( ou tout les messages sont stoqué)
Ces deux pages sont introduite dasn le fichier guest.php ( qui gère aussi la création des tableau sur forum.htm qui contiennent les message écrit sur saisie.htm.
Cependant, guest.php créé les message sur ma page forum.htm l'un à la suite de l'autre...j'aimerais que lesnouveaux messages se rajoutent en haut......qui connait une solution?

voici le bout de code qui ( je pense) crée mes tableau sur forum.htm ( je suis novice):


function tableau ($lemail, $lesujet, $lepseudo, $lecommentaire, $border, $cellspadding, $cellspacing, $bgcolor, $girl, $man)

	$tab = "<table width=\"100%\" height=\"102\" border=\"$border\" cellpadding=\"$cellpadding\" cellspacing=\"$cellspacing\>". // n'oublié sutout pas de déclaré tte les variable que vous allais utilisé ds votre tableau!!! g perdu 2h la dessus
		"\t"."<tr>"."\n". 
    	"\t"."\t"."<td width=\"13%\" height=\"19\">$lepseudo $date</td>"."\n".
    	"\t"."\t"."<td width=\"41%\">sujet : $lesujet </td>"."\n".
    	"\t"."\t"."<td width=\"46%\">mail : $lemail</td>"."\n".
  "\t".	"</tr>"."\n".
  	"<tr>"."\n". 
    	"\t"."\t"."<td height=\"83\"><img src=\"$img.jpg\" width=\"74\" height=\"74\"></td>"."\n".
    	"\t"."\t"."<td colspan=\"2\">".stripslashes($lecommentaire)."</td>"."\n". //stripslashes et bien celui-ci sert tt simplement à faire en sorte que PHP ne mette pas / devant chaque ' que tapera l'utilisateur
 "\t"."</tr>"."\n". // la balise \t sert a  effectué une tabulation j'en ai mis bcp pour que le fichier qui sera enregistré soit lisible
 
		"</table>"."\n"; // cette balise est genial, elle permet un retour a la ligne		
		{
		echo $tab;	
		}
merci,
un debutant en php

Mammouth du PHP | 881 Messages

06 janv. 2008, 16:01

Comment sont stockés tes commentaires? Dans une base de données? En dur dans le fichier?
Soyez artisans de paix

Petit nouveau ! | 2 Messages

06 janv. 2008, 16:09

Bonjour

je vais commencer par te poser une question

Utilises-tu une base de données SQL ?

Si oui, tu as plusieurs solution pour classer les messages dans un ordre défini.

:arrow: Tu as un champ index qui s'incremente tout seul a chaque ajout d'un message.
Tu fais un classement décroissant dans ta requête SQL ORDER BY index DESC

:arrow: Tu as un champs qui stocke la date et l'heure du message
Tu fais un classemeent décroissant dans ta requête SQL ORDER BY date DESC

Maintenant, si tu n'utilises pas de base de données, alors faut que tu ajoutes les messages en haut de ton tableau. Tu commences l'écriture de ton message à partir d'un numéro de ligne précis.

En espérant que ces conseils puissent t'aider à trouver la solution.

Petit nouveau ! | 3 Messages

06 janv. 2008, 16:12

merci pour vos reponses rapides...

je n'utilise pas de base de donnée.. Les messages sont stocké en 'dur' dans un fichier htm
Mais dans mon code, je ne vois pas un endroit ou on précise une ligne :?

Petit nouveau ! | 2 Messages

06 janv. 2008, 16:39

effectivement, il n'y a pas de numéros de ligne dans ton fichier mais quand tu utilises les fonctions de lecture et d'ecriture tu peux commencer a écrire à partir d'u numéro de ligne précis.

Pour être plus claire, il faudrait que je vois le code qui te sert à écrire dans ton fichier.

Petit nouveau ! | 3 Messages

06 janv. 2008, 16:53

"il faudrait que je vois le code qui te sert à écrire dans ton fichier"
Je vais montrer une plus grande patie du code que tanto...
$tab = "<table width=\"100%\" height=\"102\" border=\"$border\" cellpadding=\"$cellpadding\" cellspacing=\"$cellspacing\">". // n'oublié sutout pas de déclaré tte les variable que vous allais utilisé ds votre tableau!!! g perdu 2h la dessus
		"\t"."<tr>"."\n". 
    	"\t"."\t"."<td width=\"13%\" height=\"19\">$lepseudo $date</td>"."\n".
    	"\t"."\t"."<td width=\"41%\">sujet : $lesujet </td>"."\n".
    	"\t"."\t"."<td width=\"46%\">mail : $lemail</td>"."\n".
  "\t".	"</tr>"."\n".
  	"<tr>"."\n". 
    	"\t"."\t"."<td height=\"83\"><img src=\"$img.jpg\" width=\"74\" height=\"74\"></td>"."\n".
    	"\t"."\t"."<td colspan=\"2\">".stripslashes($lecommentaire)."</td>"."\n". //stripslashes et bien celui-ci sert tt simplement à faire en sorte que PHP ne mette pas / devant chaque ' que tapera l'utilisateur
 "\t"."</tr>"."\n". // la balise \t sert a  effectué une tabulation j'en ai mis bcp pour que le fichier qui sera enregistré soit lisible
 
		"</table>"."\n"; // cette balise est genial, elle permet un retour a la ligne		
		{
		echo $tab;	
		}
	$fop = fopen ("forum.htm", "a"); // la variable $fop correspond à l'ouverture du fichier forum.htm et siil n'existe pas il est créé
	fwrite($fop, $tab); // ecrire dans le fichier ouvert, ce que contient $tab
	fclose($fop); //fermer le fichier ouvert			
	}	
tableau ($mail, $suje, $pseud, $comment, 1, 0, 0, 0, $girl, $man); // éxecuter la fonction tableau
?>

Sur ma pageforum.htm, il n'y a aucun codage, c'est simplement une page ou vont s'écrire les tableau et les messages...

Mammouth du PHP | 881 Messages

07 janv. 2008, 04:38

Si on veut rester dans ta structure, il faudrait comprendre où est le début de la boucle dont on suppose la fin par l'accolade fermante située sous fclose($fop); //fermer le fichier ouvert

Toujours en restant dans cette structure, tu pourrais faire une tableau de toutes tes variables $tab, c'est-à-dire, en faire une matrice du nom de $tab[] et traiter ainsi:
$tab[$x] = "<!-- ".$date." -->";   //Ceci nous permettra de trier les <table> en fonction des dates
$tab[$x] .= "<table width=\"100%\" height=\"102\" border=\"$border\" cellpadding=\"$cellpadding\" cellspacing=\"$cellspacing\"> ";

// ( Ici tout ton code de définition du tableau) 
 
        $tab[$x] .= "</table>"."\n"; // cette balise est genial, elle permet un retour a la ligne        

//on élimine l'affichage immédiat de ce tableau-ci.  Nous le gardons plutôt en banque.
//        {
//        echo $tab;    
//        }

//On déplace ici l'accolade de fermeture du boucle pour lire tous les commentaires et les mettre tous dans un élément de la matrice
     $x = $x + 1;    //Ayant pris soint de définir $x = 0; avant le début de ta boucle de lecture
     }


//On trie les éléments de la matrice
asort($tab);

//On inscrit tout cela dans le fichier

    $fop = fopen ("forum.htm", "a"); // la variable $fop correspond à l'ouverture du fichier forum.htm et s'il n'existe pas il est créé

    for(reset($tab); $ecrit=key($tab); next($tab)) {
         fwrite($fop, $tab); // ecrire dans le fichier ouvert, ce que contient $tab
    }

    fclose($fop); //fermer le fichier ouvert            



//    }   -->> Cette accolade a été déplacé plus haut

C'est, pour ma part, ainsi que je comprends ton code et peux peut-être suggérer une solution.
Soyez artisans de paix