Page 1 sur 3

Système de news avec un forum phpbb

Posté : 25 déc. 2005, 20:33
par Obiwan-sensei
Salut à tous, et joyeux noël :D,
bon, comme vous pouvez vous en douter, je suis tout débutant (une semaine :p), et en fait je voudrais faire une page de news, dont le texte se trouve dans un 'forum' de mon forum phpbb. !!
J'ai cherché parmis le mods de phpbb, mais je n'ai rien trouvé de satisfaisant j'ai vu qu'il y avait cette fonction sur les forums 'invision power board', et j'ai trouvé ça bien sympa et surtout bien pratique (t'écris dans le forum, et le texte s'affiche aussi dans la page news :)). Et donc voilà, je souhaite créer de quoi récupérer les données et les afficher sur une page (php).
Quelqu'un peut m'aider svp ?? Ce serait cool ! Merci.

Posté : 25 déc. 2005, 20:51
par alexbad
Si je ne me trompe pas, tu veux juste pas te casser la tête pour ajouter tes news, c'est bien ça?

Voici qui devrait t'aider: http://www.siteduzero.com/tuto-3-184-1- ... -site.html

Sinon, je vois pas pourquoi tu tiens tant à récupérer les news à partir de phpbb: il te suffit de trouver dans quelle table tout est stocké :wink:

Posté : 25 déc. 2005, 21:13
par Invité
Ben disons que je trouve ça assez bien comme système. Un seul processus pour la même chose c'est bien mieux que plusieurs non ? Enfin, n'empêche que je trouve bien :p.


Oui, bien sur qu'il faut que je récupére les données depuis ma base de donnée, mais ce n'est pas si évident que ça en fait ^^. Parce qu'il faut que je récupére seulement le premier message (les suivants sont considérés comme des commentaires), dans le dernier topic créé, dans un forum particulier ! Et je trouve pas ça si évident que ça : :roll: . Merci pour le site du Zéro, mais..... ils n'expliquent pas trop comment on fait le mélange que je voudrais que ça donne ^^, c'est un script à part !.

Alors à force de chercher, j'ai bien trouvé quelques trucs, ce qui ma permi de rendre ça :
<?
$mysql_host = ""; //Le host du serveur
        $mysql_login = ""; //le login ou l'username du serveur
        $mysql_pass = ""; //le mot de pass du serveur
        $db_name = ""; //Le nom de votre base de donnée
           
        $db_link = @mysql_connect($mysql_host,$mysql_login,$mysql_pass);
        if(!$db_link) {
                 echo "Connexion impossible à la base de données";
            }

        $db_selected = mysql_select_db($db_name,$db_link);
        if (!$db_selected) {
                         die ('Impossible d\'utiliser la base : ' . mysql_error()); }





        // 1. mov_topics -> regarde dans la base de donnée, car avec phpbb on peu utilise ce qu'on souhaitecomme prefix, donc il est fort probable qu'il y ai ecrit phpbb_topics (standart si je me souvien bien)
// 2. le forum_id c'est le id du salon ... il faudra donc changer celui la du salon que tu souhaite afficher les topics                    
$sql_get_news = mysql_query("SELECT * FROM phpbb_topics WHERE forum_id = 2 ORDER BY topic_time DESC LIMIT 1");
$get_news = mysql_fetch_array($sql_get_news));

   // changer le prefix et le id du salon
      $sql_get_news_next = mysql_query("SELECT * FROM phpbb_topics WHERE forum_id = 2 ORDER BY topic_time DESC LIMIT 1");
?>

<div style="font-size: 12px; font-weight: bolder; font-family: Verdana;">    
<?
                           
   while ($get_news_next = mysql_fetch_array($sql_get_news_next))
   {
     echo $get_news_next['topic_title']."<br />";
   }
?>
</div>

<?
                         
// Ici il suffit juste de changer le mov_topics pour ton prefix comme si dessus
$sql_get_replies = mysql_query("SELECT topic_replies FROM phpbb_topics WHERE topic_id = ".$get_news['topic_id']);
$get_replies = mysql_fetch_array($sql_get_replies);

                         
// Pareil ici, changer le prefix
$sql_get_poster = mysql_query("SELECT username FROM phpbb_users WHERE ". $get_news['topic_poster'] ." = user_id");
$get_poster = mysql_fetch_array($sql_get_poster);
                         
// toujours pareil changer les prefix
$sql_get_body = mysql_query("SELECT *
                    FROM     phpbb_posts,
                        phpbb_posts_text
                    WHERE
                        phpbb_posts.topic_id = ". $get_news['topic_id'] ."
                    AND
                        phpbb_posts.poster_id = ". $get_news['topic_poster'] ."
                    AND
                        phpbb_posts_text.post_id = phpbb_posts.post_id
                    ORDER BY
                        phpbb_posts.topic_id ASC LIMIT 10");
while ($get_body = mysql_fetch_array($sql_get_body)) 
{ 
echo $get_body['post_text']; }
?> 
Mais ça ne fonctionne pas... Je suis hébergé par free (je ne sais pas si ça peut changer quelque chose, mais on ne sait jamais !), et comme message d'erreur :

Parse error: parse error, unexpected ')' in /var/www/free.fr/b/1/home/forum/news.php on line 23

Mais je ne vois pas où est le problème ?

Pour infos, la ligne 23 c'est la dernière de
        // 1. mov_topics -> regarde dans la base de donnée, car avec phpbb on peu utilise ce qu'on souhaitecomme prefix, donc il est fort probable qu'il y ai ecrit phpbb_topics (standart si je me souvien bien)
// 2. le forum_id c'est le id du salon ... il faudra donc changer celui la du salon que tu souhaite afficher les topics                    
$sql_get_news = mysql_query("SELECT * FROM phpbb_topics WHERE forum_id = 2 ORDER BY topic_time DESC LIMIT 1");
$get_news = mysql_fetch_array($sql_get_news));
Vous savez où est le problème ? :(

Posté : 25 déc. 2005, 21:15
par cpnadal
j'ai fait ca sur mon site avec un texte defilant verticalement affichant les 10 derniers messages postés et avec un lien sur le post en question.

Faut juste récupérer les message dans la table phpbb_posts, en selectionnant les 10 derniers et faire une boucle créant le texte de ton texte déroulant.

Posté : 25 déc. 2005, 21:29
par Obiwan-sensei
Umm... Vous allez me trouver chiant mais bon !

Je n'ai rien trouvé de mieux que de vous montrer un exemple de ce que je veux réaliser ! J'ai pris un site au hasard, que je ne connais pas, mais le système est bien celui que je voudrais 'copier'. => http://www.teddy2you.com/fr/
En bas de page, le news sont en fait écrites dans le forum... Avec en plus les fonctions (Auteur - Date - Commentaire avec le nombre etc...). Voilà donc :cry:
Je ne veux pas seulement les News qui défilent, d'ailleurs je ne veux pas qu'elles défilent :)!


Edit: Je viens de m'inscrire hien, c'est bien moi :D

Posté : 25 déc. 2005, 21:57
par cpnadal
mais c'est un blog le site que tu donne non?

Posté : 25 déc. 2005, 22:09
par alexbad
Ah d'accord => Pour ne choisir que le premier message de toute une liste, tu peux y arriver en effectuant un ORDER BY date DESC LIMIT 1, comme tu as fait d'ailleurs.

Ton erreur, c'est que tu fermes une parenthèse de trop.

et tu devrais mettre ton mysql_fetch_array dans une boucle :wink:

Posté : 25 déc. 2005, 22:53
par Obiwan-sensei
Umm... ? C'est à dire ? Parce que en fait mon mysql_fetch_array... au début, je n'avais qu'une seule parenthèse, mais un message d'erreur :

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/free.fr/b/1/home/forum/news.php on line 43

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/free.fr/b/1/home/forum/news.php on line 48

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/free.fr/b/1/home/forum/news.php on line 62

Soit les trois mysql_fetch_array ne passent pas... Donc j'ai ajouté une parenthese, et ça a donné le résultat que vous savez ! Donc je ne sais pas comment faire pour y remédier. ?
Et pour la boucle, je n'ai absolument aucune idée de ce que c'est ^^ !

Posté : 25 déc. 2005, 22:56
par alexbad
Ça ça veut dire que ta requête n'est pas valide => Soit la table n'existe pas (tu as mis deux tables ??), soit les critères ne sont pas valides dans le sens où les champs des WHERE n'existent probablement pas.

Posté : 25 déc. 2005, 23:01
par Obiwan-sensei
Ben je n'ai créé aucune table, puisque je suis sensé utiliser celle du forum ! Non ? Les critères ne sont pas valides ? Et les WHERE n'existent pas ? Quels critères ? Et c'est quoi les WHERE ? :'( Ben ouais, je suis désolé, mais je n'y encore rien ^^ ! Tu pourrais m'expliquer... stp ?

Posté : 25 déc. 2005, 23:05
par alexbad
Bon, je me taperai pas un cours de sql complet, y'en a déjà tout plein, je te recommande le tutorial sur le php du http://www.siteduzero.com , c'est très bien fait et après 3 jours, tu arriveras à résoudre ton problème par toi-même, j'en suis convaincu. :wink: Pour commencer, peut-être es-tu mieux d'abandonner les news commentées? et de reprendre l'idée lorsque tu seras un peu plus familier avec le PHP :)

Posté : 25 déc. 2005, 23:33
par Obiwan-sensei
Ouais.. mais non, je vais commencer par là aussi :p. Merci quand même. Je vais essayer de me débrouiller encore un peu seul ! Mais je n'ai plus beaucoup de temps ! La fin des vacances approche :(. Et j'ai encore pas mal de truc à faire pour le site (livre d'or, espace membre) que je veux écrire et non pas installer ! Plus les trucs que les profs m'ont filés :'(. Du coup je passe mes nuits devant le PC ^^.
Bon, merci, je vais essayer de faire avec mes ressources actuelles. Mais si vous avez encore envie de m'aider y'a pas de problèmes :lol: :mrgreen: :langue:

Posté : 26 déc. 2005, 02:07
par cpnadal
renvoi le code de ta page en entier s'il te plait. Je vais te faire les modifs nécessaires.

Posté : 26 déc. 2005, 02:52
par Obiwan-sensei
Oh vraiment ? C'est bien sympa ^^!
<?
$mysql_host = ""; //Le host du serveur
        $mysql_login = ""; //le login ou l'username du serveur
        $mysql_pass = ""; //le mot de pass du serveur
        $db_name = ""; //Le nom de votre base de donnée
           
        $db_link = @mysql_connect($mysql_host,$mysql_login,$mysql_pass);
        if(!$db_link) {
                 echo "Connexion impossible à la base de données";
            }

        $db_selected = mysql_select_db($db_name,$db_link);
        if (!$db_selected) {
                         die ('Impossible d\'utiliser la base : ' . mysql_error()); }





        // 1. mov_topics -> regarde dans la base de donnée, car avec phpbb on peu utilise ce qu'on souhaitecomme prefix, donc il est fort probable qu'il y ai ecrit phpbb_topics (standart si je me souvien bien)
// 2. le forum_id c'est le id du salon ... il faudra donc changer celui la du salon que tu souhaite afficher les topics                    
$sql_get_news = mysql_query("SELECT * FROM phpbb_topics WHERE forum_id = 2 ORDER BY topic_time DESC LIMIT 1");
$get_news = mysql_fetch_array($sql_get_news);

   // changer le prefix et le id du salon
      $sql_get_news_next = mysql_query("SELECT * FROM phpbb_topics WHERE forum_id = 2 ORDER BY topic_time DESC LIMIT 1");
?>

<div style="font-size: 12px; font-weight: bolder; font-family: Verdana;">    
<?
                           
   while ($get_news_next = mysql_fetch_array($sql_get_news_next))
   {
     echo $get_news_next['topic_title']."<br />";
   }
?>
</div>

<?
                         
// Ici il suffit juste de changer le mov_topics pour ton prefix comme si dessus
$sql_get_replies = mysql_query("SELECT topic_replies FROM phpbb_topics WHERE topic_id = ".$get_news['topic_id']);
$get_replies = mysql_fetch_array($sql_get_replies);

                         
// Pareil ici, changer le prefix
$sql_get_poster = mysql_query("SELECT username FROM phpbb_users WHERE ". $get_news['topic_poster'] ." = user_id");
$get_poster = mysql_fetch_array($sql_get_poster);
                         
// toujours pareil changer les prefix
$sql_get_body = mysql_query("SELECT *
                    FROM     phpbb_posts,
                        phpbb_posts_text
                    WHERE
                        phpbb_posts.topic_id = ". $get_news['topic_id'] ."
                    AND
                        phpbb_posts.poster_id = ". $get_news['topic_poster'] ."
                    AND
                        phpbb_posts_text.post_id = phpbb_posts.post_id
                    ORDER BY
                        phpbb_posts.topic_id ASC LIMIT 1");
while ($get_body = mysql_fetch_array($sql_get_body)) 
{ 
echo $get_body['post_text']; }
?> 
Voilà la page, mais je ne sais pas du tout ce que ça peut donner quand ça fonctionne :(. Je sais pas, mais j'ai une impression bizarre ^^ !
Merci beaucoup. :D

Posté : 26 déc. 2005, 02:54
par fab
SELECT *
FROM phpbb_posts,
phpbb_posts_text
WHERE
phpbb_posts.topic_id = ". $get_news['topic_id'] ."
AND
phpbb_posts.poster_id = ". $get_news['topic_poster'] ."
AND
phpbb_posts_text.post_id = phpbb_posts.post_id
ORDER BY
phpbb_posts.topic_id ASC LIMIT 1
tu as testé cette requete dans phpmyadmin ? si oui est-ce qu'elle affiche ce que tu veux ?