Forum en php + fichiers textes et sondage + mysql

Description

Le forum n'est pas prévu pour un nombre très important d'utilisateurs mais il suffit largement a un site perso qui ne gère pas le MySQL. Effectivement le forum fonctionne en grande partie par fichiers textes. Je souhaitais faire se forum avec des fichiers textes car la grande majorité des forums que l'on trouve en téléchargement ont besoin d'une base de donnée ou ne sont pas suffisamment évolué quand il fonctionnent uniquement sur fichiers textes.

Il y a tout de même une exception, les sondages sont mis en oeuvre à l'aide de MySQL car leurs gestions en fichier textes est assez complexe.

Source / Exemple :


<?php
//Appel de la session : il ne doit rien avoir avant ceci !
session_start ();
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Forum</title>
</head>

<body bgcolor="#FF9900">

<div align="center">
<table width="70%"  border="0">
  <tr>
    <th scope="col"><a href="indexforum.php" target="mainFrame" title="Acceuil du forum">Accueil</a></th>
    <th scope="col"><a href="quest.php" title="Poster un nouveau sujet">Poster un nouveau sujet</a></th>
	<?php
	//Appel du fichier incript.inc.php pour modifier le menu si on accede au site avec un compte admin
	include ("../inc/inscript.inc.php")
	?>
  </tr>
</table>

<!-- Corps de la page -->

<?php

// Récupération de la liste des messages
$fp = fopen ( "../messages/list","r" );

echo '<table width="90%" border="0" cellspacing="20">
		 <tr>
		   <td width="168">Sujet</td>
		   <td width="168"><center>Nombre de réponses</center></td>
		   <td width="168" align="center">Auteur</td>
 		   <td width="168"> ';

echo $suppression ;
		   
echo '</td>
	  </tr>
	  </table>';

while (!feof ($fp))          	// tant que pas en fin de fichier
	{

$lecture = fgets($fp, 4096); 	// stockage dans $lecture
$donnee=explode("*",$lecture);  // parsing des données basé sur "*")

$combien=count($donnee); 		// nbre d'éléments séparés par "*"

	for ($i=0;$i<=($combien-2);$i++)
		{

$rep = fopen( '../messages/posts/'.$donnee[$i] , "r" );
while (!feof ($rep))	{          	// tant que pas en fin de fichier
$contenu_rep = fgets ( $rep , 4096 );
$donnee_rep= explode("*",$contenu_rep);  // parsing des données basé sur "*")

$combien_rep = count($donnee_rep); 		// nbre d'éléments séparés par "*"
}

echo '<table width="90%" border="0" cellspacing="20">
		  <tr>
		  <td width="168">
		  <form name="form1" method="post" action="lire.php">
          <input name="sujet" type="hidden" value="'.$donnee[$i].'">
      	  <input type="submit" name="Submit" value="'.$donnee[$i].'">
    	  </form>
		  <td width="168"><center>'.($combien_rep-2).'</center></td>';

$fp_acceuil = fopen( '../messages/acceuil/'.$donnee[$i] , "r" );
$contenu_acceuil = fgets ( $fp_acceuil , 4096 );
fclose ( $fp_acceuil );

echo '	   <td width="168"><div align="center">'.$contenu_acceuil.'</div></td>
 		   <td width="168"><div align="center">';

if (ereg ( $membre.'\*' , $contenu_admin ))	{	//Pour les adminnistrateurs un menu spécial
echo '<form name="form1" method="post" action="suppr_message.php">
	  	<input name="sujet" type="hidden" value="'.$donnee[$i].'">
	  	<input type="submit" name="Submit" value="Supprimer message">
      </form>
     </div>';
}

else	{
}
	
echo '	   </td>
 		 </tr>
		 <table width="702"  border="0">
  <tr>
    <td> </td>
    <td > </td>
    <td > </td>
  </tr>
</table>
		 <tr>
		  <td> </td>
		  <td> </td>
		  <td> </td>
		  <td> </td>
		 </tr>
	  </table>';
	
	
	}
	
}

fclose ($rep);

fclose ($fp);

?>

</div>
</body>
</html>

Conclusion :


Pour tester le forum rendez vous sur : http://sylvain29.perso.cegetel.net/myforum/

Suivez les mises a jour sur :
http://sylvain29.perso.cegetel.net/informatique/creations/myforum.htm

Liste des bugs :

Aucun pour le moment mais l'accès à la base avec "mysql" est a vérifier. J'utilise perso l'accès "mysqli".

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Du même auteur (syllebreton)