Forum en php + fichiers textes et sondage + mysql

Soyez le premier à donner votre avis sur cette source.

Vue 28 313 fois - Téléchargée 3 193 fois

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

Ajouter un commentaire

Commentaires

Messages postés
66
Date d'inscription
jeudi 21 juillet 2005
Statut
Membre
Dernière intervention
28 décembre 2010

De toute façon, ma source n'est pas vraiement bonne... Ou plutot très nulle même. C'était ma première grosse source et je n'en suis pas fier aujourd'hui ^^.

Bonne journée à tous
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
35
j'ai pas regardé les dates ^^
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
36
...
le gros up de deux ans... tu crois vraiment qu'on se souvient de chaque post ?
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
35
merci de remonter le niveau est étant constructif !
(je parle pour les 3 commentaires que j'ai supprimé)
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
36
include ("../inc/inscript.inc.php")
mets des simples guillemets ici ! ils sont plus rapides d'exécution...

fclose ($rep);
fclose ($fp);

toujours pas de or die();

et ton html n'est pas propre... width="168"
Afficher les 7 commentaires

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)