[Tips] - Petite astuce pour faire tourner un forum

WRInaute discret
Bon je vous parle de mon expérience mais je pense que ça peut être pas mal pour tout le monde.

Donc je suis un peu comme beaucoup, mon forum avait du mal à tourner niveau fréquentation / utilisations malgré mes 45.000 visites mensuels. Depuis une mise à jour je me suis "amusé" à ajouter sur des centaines de pages la possibilité pour les membres de déposer un commentaire sur un film à l'affiche, une sortie, etc... avec un simple input et un textarea.

A chaque fois qu'une personne ajoute un commentaire, un script crée un topic contenant le résumé de la page ou ce trouve le visiteur + un post en réponse à ce topic contenant le commentaire de la personne. Les visiteurs suivant ne créant qu'un post à ce même topic.

Résultat ça marche pas mal :) Pour un commentaire on crée artificiellement deux messages, qui en soit reste "crédible" à la lecture du forum, et on démontre une certaine activité dans le forum qui à l'avenir je l'espère donnera envie à certains visiteurs de venir s'inscrire et de participer plus longuement.

Voiliiiiiiiiiiiii Enjoy !
 
WRInaute occasionnel
raspoutine59 a dit:
Bon je vous parle de mon expérience mais je pense que ça peut être pas mal pour tout le monde.

Donc je suis un peu comme beaucoup, mon forum avait du mal à tourner niveau fréquentation / utilisations malgré mes 45.000 visites mensuels. Depuis une mise à jour je me suis "amusé" à ajouter sur des centaines de pages la possibilité pour les membres de déposer un commentaire sur un film à l'affiche, une sortie, etc... avec un simple input et un textarea.

A chaque fois qu'une personne ajoute un commentaire, un script crée un topic contenant le résumé de la page ou ce trouve le visiteur + un post en réponse à ce topic contenant le commentaire de la personne. Les visiteurs suivant ne créant qu'un post à ce même topic.

Résultat ça marche pas mal :) Pour un commentaire on crée artificiellement deux messages, qui en soit reste "crédible" à la lecture du forum, et on démontre une certaine activité dans le forum qui à l'avenir je l'espère donnera envie à certains visiteurs de venir s'inscrire et de participer plus longuement.

Voiliiiiiiiiiiiii Enjoy !

Excellente idée, de plus en plus de site le font et je compte l'intégrer dans une futur version de mon site.
 
Nouveau WRInaute
Bjr,

Ca peut être une bonne solution ! Nous on donnes la possibilités aux internautes d'ajouter un commentaires avec une note aux reportages et souvent j'essaye de lancer le débat sur le forum et cela ne fonctionne pas ! Alors peut être avec un textearea qui envoie le message sur le forum.... En plus les contents commes les mécontents donnent toujours 10 aux reportages :D

A chaque fois qu'une personne ajoute un commentaire, un script crée un topic contenant le résumé de la page ou ce trouve le visiteur + un post en réponse à ce topic contenant le commentaire de la personne. Les visiteurs suivant ne créant qu'un post à ce même topic.

Un exemple plus concret peut être ?

Pour tester tout cela et gagner du temps est ce qu'il y a un mod pour phpBB ?

Merci d'avance

@+ JY
 
WRInaute passionné
Moi j'ai choisi une autre solution qui consiste à créer directement un sujet par information postée, mais ta méthode est pas mal. merci ;)
 
Nouveau WRInaute
Oui mais dans le cas d'un forum qui a du mal a démarrer, ta solution risque de crée bon nombre de topic sans réponse. Ce qui finalement reviens presque au même que d'avoir un forum inactif.
 
WRInaute accro
Je viens de regarder très intéressant, mais l'explication est trop succincte pour moi. Où doit-on rajouter ces lignes, sur une page du forum où une page php qui contient l'article et la boîte d'envoi ?

Merci d'avance.
 
Nouveau WRInaute
Bah tu rajoute ça ou tu veux du moment que tu puisse appeller les fonctions :-D

Si t'a une page générique pour tes articles tu les mets en debut de page, puis lors du POST du commentaire tu appel les fonctions. Tout simplement.
 
WRInaute discret
C'est une super idée, mais pourrais-tu être plus précis ? Lorsqu'on début "créer" une requête n'est pas simple par exemple. Les commentaires en bas du script sont destinés à des connaisseurs.
 
WRInaute accro
Code:
<b>Commentaire : </b>
<br><br><div align=center>
<form method=POST action=commentaire.php >
<input type=hidden name=forum_id value=49>
<table>

<tr><td>Sujet :</td>
<td><input type=text name=subject size=30></td></tr>

<tr><td>Votre Nom :</td>
<td><input type=text name=username size=30></td></tr>

<tr><td colspan=2>Corps du texte :<br>

  <textarea COLS=50 ROWS=6 name=message></textarea>
</td></tr>
</table>
<br> <input type=submit value=Envoyer> -
     <input type=reset value=Annuler>
</form>
</div>


Il s'agit bien de ce type de formulaire ou j'ai fait une gourde ?

merci
 
Nouveau WRInaute
Bon prenons un shema simple :

Vous avez 5.000 articles rewrité sur votre site.
Tous les articles sont gérer en interne à l'aide de "articles.php".

Au début de ce fichier vous allez donc placer les deux fonctions qui évidement ne feront absolument rien tant que vous ne les appellerez pas.

Maintenant en bas de chaque article vous allez ajouter (Je fais simple dans le html, a vous de mettre en forme) :

Code:
<form action="<?php echo $_SERVER['REQUEST_URI']; ?>" method="post">
Votre nom/Pseudo : <input type="text" name="Username"/><br/>
Votre commentaire : <textarea name="message"></textarea>
<input type="submit" value="Envoyer" />
</form>

Donc ce petit formulaire demande à l'utilisateur de donner un nom d'utilisateur et le commentaire qu'il veut déposer. L'action POST aura pour effet d'envoyer les données à la page courante (Son nom rewrité ou non)... Cest à ça que sert <?php echo $_SERVER['REQUEST_URI']; ?>.

Maintenant on peut imaginer mettre en dessous des fonctions que vous avez placer précédement les lignes suivante :

Code:
if (($_POST['Username'] <> '') && ($articles['topic_id_relation'] = 0)) { 
// on crée un topic a l'aide de CommentToTopic résumant l'article
$newTopicID = CommentToTopic($subject, $message, $forum_id, $username);
// on crée une réponse à ce topic a l'aide de CommentToPost contenant le commentaire
CommentToPost($newTopicID, $subject, $message, $forum_id, $username);
}

if (($_POST['Username'] <> '') && ($articles['topic_id_relation'] > 1)) { 
// on crée une réponse à ce topic a l'aide de CommentToPost contenant le commentaire car l'article est déjà en relation avec un topic crée à l'aide de ce script. 
CommentToPost($articles['topic_id_relation'] , $subject, $message, $forum_id, $username);
}

Voilà c'est bon ou vous en voulez plus ? :) Désolé si j'suis pas très très clair, mais j'suis pas très bon dans l'enseignement :)
 
WRInaute passionné
Alors, il manque à ton explication, le fait que la requête de "article.php" doit aussi récupérer un champ supplémentaire topic_id_relation, et le mettre dans le tableau $articles.

Parce que ça, ton code ne le fait pas ;)
 
Nouveau WRInaute
Non mais j'vais pas tout faire à votre place :) Et puis le topic_id_relation c'est un peu logique :-D Faut bien une relation avec l'article, quelque part, si vous voulez déposer des commentaires sur ceux-ci. ;-) Bon sinon j'vais essayer de développer quelque chose de plus générique qui ne nécessite qu'un include...
 
Nouveau WRInaute
Code:
<?php	 

function CommentToTopic($subject, $message, $forum_id, $username) {
  $user_id = -1;
  $current_time = time();
  $topic_vote = 0;
  $topic_type =	0;
  $topic_status = 0;
  $user_ip = $REMOTE_ADDR;
  $bbcode_on = 0;
  $html_on = 0;
  $smilies_on = 0;
  $user_attach_sig = 0;
  $bbcode_uid = md5(mt_rand());
  $bbcode_uid = substr($uid, 0, 10);
  $message = addslashes($message);
  $subject = addslashes(trim($subject));
  $username = addslashes(trim($username));
    
  $sql = mysql_query("INSERT INTO phpbb_topics (topic_title, topic_poster, topic_time, forum_id, topic_status, topic_type, topic_vote) VALUES ('$subject', " . $user_id . ", $current_time, $forum_id, " . $topic_status . ", $topic_type, $topic_vote)");
  $topic_id = mysql_insert_id();
  
  $sql = mysql_query("INSERT INTO phpbb_posts (topic_id, forum_id, poster_id, post_username, post_time, poster_ip, enable_bbcode, enable_html, enable_smilies, enable_sig) VALUES ($topic_id, $forum_id, " . $user_id . ", '$username', $current_time, '$user_ip', $bbcode_on, $html_on, $smilies_on, $user_attach_sig)");
  $post_id = mysql_insert_id();
  
  $sql = mysql_query("INSERT INTO phpbb_posts_text (post_id, post_subject, bbcode_uid, post_text) VALUES ($post_id, '$subject', '$bbcode_uid', '$message')");
  $sql = mysql_query("UPDATE phpbb_forums SET forum_posts = forum_posts + 1, forum_last_post_id = $post_id,forum_topics = forum_topics + 1 WHERE forum_id = $forum_id");
  $sql = mysql_query("UPDATE phpbb_topics SET topic_last_post_id = $post_id, topic_first_post_id = $post_id WHERE topic_id = $topic_id");
  $sql = mysql_query("UPDATE phpbb_users SET user_posts = user_posts + 1 WHERE user_id = $user_id");	
  return $topic_id;
}

function CommentToPost($topic_id, $subject, $message, $forum_id, $username) {
  $user_id = -1;
  $current_time = time();
  $topic_vote = 0;
  $topic_type =	0;
  $topic_status = 0;
  $user_ip = $REMOTE_ADDR;
  $bbcode_on = 0;
  $html_on = 0;
  $smilies_on = 0;
  $user_attach_sig = 0;
  $bbcode_uid = md5(mt_rand());
  $bbcode_uid = substr($uid, 0, 10);
  $message = addslashes($message);
  $subject = addslashes(trim($subject));
  $username = addslashes(trim($username));
  
  $sql = @mysql_query("INSERT INTO phpbb_posts (topic_id, forum_id, poster_id, post_username, post_time, poster_ip, enable_bbcode, enable_html, enable_smilies, enable_sig) VALUES ($topic_id, $forum_id, " . $user_id . ", '$username', $current_time, '$user_ip', $bbcode_on, $html_on, $smilies_on, $user_attach_sig)");
  $post_id = mysql_insert_id();
  
  $sql = mysql_query("INSERT INTO phpbb_posts_text (post_id, post_subject, bbcode_uid, post_text) VALUES ($post_id, '$subject', '$bbcode_uid', '$message')");
  $sql = mysql_query("UPDATE phpbb_forums SET forum_posts = forum_posts + 1, forum_last_post_id = $post_id WHERE forum_id = $forum_id");
  $sql = mysql_query("UPDATE phpbb_topics SET topic_last_post_id = $post_id, topic_replies=topic_replies + 1 WHERE topic_id = $topic_id");
  $sql = mysql_query("UPDATE phpbb_users SET user_posts = user_posts + 1 WHERE user_id = $user_id");	
}


// C'est ici que vous devez éditer les lignes pour modifier la mise en page du formulaire
// qui permet d'envoyer un commentaire.
// $forumID_Target = Forum cible qui doit contient ou doit contenir le topic ou la réponse	 
// $replyID_Target (Paramètre optionnel) = Topic_ID qui va contenir le commentaire EN REPONSE à un topic existant
function CreateForm($forumID_Target, $replyID_Target = -1) {
	echo "<form method=\"POST\" action=\"".$_SERVER['REQUEST_URI']."\">"; 	
	echo "<input type=\"hidden\" name=\"commentToPHPbb\" value=\"1\" />";
	echo "<input type=\"hidden\" name=\"ToForumID\" value=\"".$forumID_Target."\" />"; 	 
	echo "<input type=\"hidden\" name=\"ToReplyID\" value=\"".$replyID_Target."\" />";
	echo "<input type=\"text\" name=\"commentPOSTER\" value=\"Anonyme\" />";
	echo "<textarea name=\"commentMESSAGE\"></textarea>";
	echo "</form>";
}

// Si on detecte une soumission de commentaire on crée le topic ou une réponse.
if ($_POST['commentToPHPbb'] == 1) {
	
	$ArticleTitle = "<monarticle>... On en discute...";
	$ArticleResumer = "Je résume mon article";
	
	if ($_POST['ToReplyID'] == -1) {	 
		// ToReplyID existe seulement si votre article contient une relation
		$newTopicID = CommentToTopic($ArticleTitle, $ArticleResumer, $_POST['ToForumID'], $_POST['commentPOSTER']);
		CommentToPost($newTopicID, $ArticleTitle, $_POST['commentMESSAGE'], $_POST['ToForumID'], $_POST['commentPOSTER']);
		// On crée une relation entre l'article et le topic
		$UpdateRelation = mysql_query("UPDATE articles SET topic_id_relation=".$newTopicID." WHERE ArticleID=0");
	} else {  
		// Si ToReplyID >= 1 c'est que votre article à déjà reçu un commentaire
		// dans ce cas on ne crée qu'une réponse au topic déjà crée. 
		CommentToPost($_POST['ToReplyID'], $ArticleTitle, $_POST['commentMESSAGE'], $_POST['ToForumID'], $_POST['commentPOSTER']); 
		// Petit bonus si des commentaire(s) existe(nt) on incremente le topic_view comme si la personne avait regardé le topic
		// a partir du forum bien qu'il l'ai fait à partir de votre article 
		$UpdateView = mysql_query("UPDATE phpbb_topics SET topic_views = topic_views + 1 WHERE topic_id=".$monArticle['topic_id_relation']);
	} 
	
}
?>

Voila comme ça ca devrais allé, juste à faire un include, bon il faudra juste que vous udaptiez la fin du script en fonction de vos base etc.
 
WRInaute discret
Oulà.

Donc alors, il faut créer une page .php dans laquelle on met le code que tu viens de donner, c'est ça ?
 
WRInaute discret
clair pas pour tout le monde je ne trouve pas les champs a modifier et quand je rajoute ce code sur ma page article le formulaire n'apparait meme pas
plus d'explication svp et merci pour votre travail
 
Nouveau WRInaute
Non mais sérieux... t'a pas comme qui dirait remarqué que le formulaire était dans une fonction "CreateForm" ? Et donc une fonction on l'aaa...??
 
Nouveau WRInaute
y a pas besoin d'être doué pour savoir qu'une fonction ca s'appelle pas par magie quand meme... C'est suffisament clair vous n'avez rien d'autres à faire que d'appeller ces fonctions.
 
WRInaute passionné
oO_Romeo_Oo a dit:
Non mais sérieux... t'a pas comme qui dirait remarqué que le formulaire était dans une fonction "CreateForm" ? Et donc une fonction on l'aaa...??
pelle ! :lol:

C'est bon j'ai gagné quelque chose ? :lol:

Et voilà mon pauvre Roméo, quand tu files un script en version bêta, roméo, voire alpha, roméo, eh bien soit tu indiques que tu ne fais pas de support pour le script, soit tu mâches le travail jusqu'au moindre petit détail... sinon t'en finiras pas de tout expliquer :p
 
Nouveau WRInaute
Non mais bon si on me demande quelque chose j'explique, mais de la à part savoir qu'une fonction ca doit être appellé pour être executé lol Faut réouvrir le manuel de référence PHP à la page d'introduction ! ;-)
 
WRInaute discret
Un conseil, laisse tout de suite tomber le support de script parce que je me met à la place de nombreuses personnes (moi compris), qui n'ont pas compris du tout ce qu'il fallait qu'ils fassent. Et oui, bienvenue dans le monde d'internet, avec ceux qui débutent leur site en html sur un hébergement gratuit et les autres qui font du php sur un dédié :wink: .
 
Nouveau WRInaute
C'est pas une question de support mais de compétences :-D
Quand je comprend pas quelque chose parce que mes compétences ne me le permette pas j'apprend avant d'essayer quoi que ce soit et j'évite de copier/coller des trucs surtout quand j'les comprends pas :-D
 
WRInaute occasionnel
Oui mais justement il y a de tout dans ce monde et donc aussi sur WRI, alors ne pert aucun temps en support basic et continue à créer des scripts sympas et à fournir le code aux autres c'est encore plus sympa. S'ils veulent faire des copier-coller sans rien comprendre c'est pas grave ils apprendront ou abandonneront mais il ne faut pas que ça te fasse perdre du temps.
 
WRInaute discret
Le problème, c'est que phpBB ou autres CMS ont permis à une grande quantité de personnes d'ouvrir leurs sites web sur des hébergeurs gratuits. On uploade le script, on lance la page install... et voilà ! Un site en forme de forum de plus sur la toile...

C'est bien, le net est fait pour tous... mais après c'est toujours pareil, quand on veut personnaliser, il faut y mettre du sien et ne pas toujours attendre que les autres fassent tout le travail.

Dans votre logique, même si Romeo décrit son script, chacun va lui demander comment il faut faire dans son cas particulier... Il est vrai que le script manque cruellement de commentaires, mais il est assez simple... quand on connaît les bases de php.

Je suis le premier à demander de l'aide quand je n'arrive pas à faire un truc (pas plus tard qu'il y a 15min sur WRI du reste), ou quand je ne veux pas perdre de temps à chercher une solution qui existe déjà... et si personne ne sait, je fais chauffer les neuronnes.

Faites chauffer les vôtres, lisez les scripts (messieurs, commentez les scripts que vous déposez. C'est plus long à écrire, mais plus simple à lire), rendez-vous sur des sites dédiés au php, lisez, modifiez, plantez vos scripts, corrigez-les... en un mot : apprenez :wink:
 
WRInaute occasionnel
Bonjour,

Je vais un peu pousser ma gueulante mais ça fait un petit moment que j'en ai marre de voir tout ces pseudos webmaster qui ne comprenne rien à la technique de leur site et qui viennet pleurer dès que leur site ne fonctionne plus ou qu'il tente d'utiliser des scripts tout fait.

Il faut savoir ce que l'on veut. Soit on ne veut pas mettre la tête dans le capot, et on paye quelqu'un qui prend en charge la programmation du site (à moins que vous soyez une équipe et que les rôles soient bien distribués), soit vous vous sortez les doigts du cul et allez apprendre au moins les bases des techno que vous voulez toucher !

Les CMS et le web facile c'est cool, mais il ne faut pas non plus croire que tout se fait en quelques cliques. Si vous voulez apprendre l'informatique, alors apprennez à chercher et allez sur des forums spécialisés. Si vous ne voulez pas vous en soucier, alors contentez vous d'utiliser les outils tout fait ! Mais il faut vous prendre en main et décider quels sont vos objectifs.
 
Discussions similaires
Haut