Archives FluxBB.fr

Les archives de FluxBB.fr

Vous n'êtes pas identifié(e).

#1 11-10-2006 14:35:43

justme
Membre

News dynamiques!

En m'inspirant de quelques portions de code que j'ai pu trouver ici, j'ai commencer à créer une page qui transforme tous les messages d'un forum en news.

<?php
define('PUN_ROOT', './');
require PUN_ROOT.'include/common.php';

// Affiche l'annonce de l'admin si le forum est fermé 
if ($pun_user['g_read_board'] == '0')
    message($lang_common['No view']);

// Définit le titre de votre page qui est par défaut : "Nom du forum / Ce que vous voulez"
$page_title = pun_htmlspecialchars($pun_config['o_board_title']).' / Titre du mod a remplacer';
define('PUN_ALLOW_INDEX', 1); // Inclut la balise meta autorisant  les moteurs de recherche à indexer ce fichier.

$forum_id = 2; // id du forum dont vous voulez afficher les news
$nb_post = 10; // nombre de news à afficher

?>
  <div style="padding:5px;margin:0;">
<?php


      
  $result = $db->query('SELECT message FROM '.$db->prefix.'posts ORDER BY posted DESC') or error('Impossible de lister les news2', __FILE__, __LINE__, $db->error());
  $result2 = $db->query('SELECT id, subject, num_replies, posted FROM '.$db->prefix.'topics ORDER BY posted DESC') or error('Impossible de lister les news', __FILE__, __LINE__, $db->error());
    while ($data_posts_infos2 = $db->fetch_assoc($result))
      {
    while ($data_posts_infos = $db->fetch_assoc($result2))
      {
      
         echo '<a href="viewtopic.php?id='.$data_posts_infos['id'].'">'.$data_posts_infos['subject'].'</a> - '.format_time($data_posts_infos['posted']).'<br />';
  echo nl2br('<div>'.$data_posts_infos2['message'].'</div>');
       }}
?>
  </div>

Ce qui donne pour l'instant : http://billytalent.fr/forum/news.php


Comme vous pouvez le vori le message affiché est deux fois le même, je ne trouve pas le problème avec mon petit niveau php...

Merci d'avance si vous avez une idée !

Hors ligne

#2 11-10-2006 14:44:08

romain9441
Admin locker

Re : News dynamiques!

Il y a ce plugin qui fait la même chose : http://www.punbb.fr/mods/mod.php?id=4


Avant de poser une question, avez-vous consulté la FAQ ou fait une recherche ?

Pas de support si pas d'adresse de forum !

Hors ligne

#3 11-10-2006 14:51:04

justme
Membre

Re : News dynamiques!

Celui là créé un fichier .html lorsque l'on appuie dans l'admin sur générer les news, moi je veux vraiment que ce soit automatique.

Hors ligne

#4 11-10-2006 15:35:25

justme
Membre

Re : News dynamiques!

A moins qu'il ait une fonction dynamique?

Hors ligne

#5 11-10-2006 15:45:06

mangafan
Membre

Re : News dynamiques!

Puntal en a une il me semble.

http://www.puntal.fr/


:canon: Mangafan : Mettez un chat dans votre processeur ! happy

Hors ligne

#6 11-10-2006 15:52:54

justme
Membre

Re : News dynamiques!

Oui j'ai vu ça mais je n'ai pas réussi à correctement l'extraire..

Vous ne voyez pas quelle serait l'erreur de mon code ? Car la base y est..

Dernière modification par justme (11-10-2006 15:53:20)

Hors ligne

#7 11-10-2006 17:21:24

Lyconide
Membre

Re : News dynamiques!

$result correspond aux posts de ta base de donnée
$result2 correspond aux topics de ta base de donnée

La première boucle (while ($data_posts_infos2...) va lister tes posts les 1 à la suite des autres tant qu'il y en a.
Mais, tu as une boucle imbriqué (while($data_posts_infos..)) qui elle liste tes topics tant qu'il y en a, et c'est ca qui te fait foiré ce que tu veux faire

Je vais essayer de l'expliquer, mais j'sais pas si je vais réussir à le dire correctement ^^

- On rentre dans le premier while. Le premier post est listé (pas encore affiché, il est juste dans la variable $data_posts_infos2).


-- On rentre dans le deuxième while, le premier topics est listé. On affiche ce topic avec le post précédement listé.
-- On se trouve toujours dans le deuxième while (car ton forum possède 2 topics, et que ce while doit listé tout les topics), ben on recommence ce qu'il y a dans ce 2ème while, en changeant juste le sujet, mais on garde toujours le même post.
-- Fin du 2ème while, car plus de topics à listé


- On se retrouve dans le 1er while, il reste encore un post à listé
   -- Le 2ème while ne possède plus rien à faire (car déjà fait le tour précédent), donc il n'affiche pas le 2ème post
- Fin du 1er while, car plus de posts à listé

Voila ce que fait ton script. Mais en fait, ce sont tes 2 requêtes qu'il faut que tu fusionnes en 1 seul pour que ton script fonctionne correctement. (il ne resterait alors plus qu'1 boucle while, donc plus de problème)

Faut que tu fusionnes la requête avec un INNER JOIN (jointure naturel) tongue

Hors ligne

#8 11-10-2006 18:47:37

justme
Membre

Re : News dynamiques!

Je pense avoir à peu près compris, je vais faire quelques tests pour j'espère pouvoir créer un mod smile.

Merci.

Hors ligne

#9 11-10-2006 18:50:02

romain9441
Admin locker

Re : News dynamiques!

justme a écrit :

Je pense avoir à peu près compris, je vais faire quelques tests pour j'espère pouvoir créer un mod smile.

Merci.

Une mod !


Avant de poser une question, avez-vous consulté la FAQ ou fait une recherche ?

Pas de support si pas d'adresse de forum !

Hors ligne

#10 11-10-2006 19:19:05

justme
Membre

Re : News dynamiques!

déésooollééé (a).

Hors ligne

#11 11-10-2006 22:02:59

justme
Membre

Re : News dynamiques!

CA MARCHE !

Merci pour ton aide Lyconide, ce n'est pas comme si c'était la première fois que tu m'aidais donc vraiment MERCI !

<?php
define('PUN_ROOT', './');
require PUN_ROOT.'include/common.php';

// Affiche l'annonce de l'admin si le forum est fermé 
if ($pun_user['g_read_board'] == '0')
    message($lang_common['No view']);

// Définit le titre de votre page qui est par défaut : "Nom du forum / Ce que vous voulez"
$page_title = pun_htmlspecialchars($pun_config['o_board_title']).' / Titre du mod a remplacer';
define('PUN_ALLOW_INDEX', 1); // Inclut la balise meta autorisant  les moteurs de recherche à indexer ce fichier.

$forum_id = 2; // id du forum dont vous voulez afficher les news
$nb_post = 10; // nombre de news à afficher

?>
  <div style="padding:5px;margin:0;">
<?php
      
  $result = $db->query('SELECT pun_posts.message, pun_topics.id, pun_topics.subject, pun_topics.num_replies, pun_topics.posted FROM pun_posts INNER JOIN pun_topics ON pun_posts.topic_id = pun_topics.id') or error('Impossible de lister les news2', __FILE__, __LINE__, $db->error());
    while ($data_posts_infos = $db->fetch_assoc($result))
      {
      
         echo '<a href="viewtopic.php?id='.$data_posts_infos['id'].'">'.$data_posts_infos['subject'].'</a> - '.format_time($data_posts_infos['posted']).'<br />';
  echo nl2br('<div>'.$data_posts_infos['message'].'</div>');
       }
?>
  </div>

Je vais faire un truc classe et valide xhtml w3c avant de le mettre entant que mod.

Hors ligne

#12 12-10-2006 22:13:44

Keulig
Membre

Re : News dynamiques!

Il manque le "limit $nb_post" dans ta requete wink

J'avais fait un script sympa, bcp + avancé, avec gestion du nombre de commentaires et sur mon site on peut aussi savoir si la news a été lue, s'il y a de nouveaux commentaires...

http://www.punbb.fr/forums/viewtopic.php?id=1443

Hors ligne

#13 13-10-2006 20:34:53

justme
Membre

Re : News dynamiques!

Par rapport à ton script j'ai une question, il est marqué qu'on a besoin du script mark all topic as read mais dans les novuelles versions de punbb on peut le faire directement...


EDIT : J'avais pas vu ce qu'il faisait exactement désolé..

Dernière modification par justme (13-10-2006 20:38:19)

Hors ligne

#14 12-11-2006 19:49:54

justme
Membre

Re : News dynamiques!

Keulig a écrit :

Il manque le "limit $nb_post" dans ta requete wink

J'avais fait un script sympa, bcp + avancé, avec gestion du nombre de commentaires et sur mon site on peut aussi savoir si la news a été lue, s'il y a de nouveaux commentaires...

http://www.punbb.fr/forums/viewtopic.php?id=1443

Petite question mis à par le limit du nombre de post, comment faire pour qu'il affiche seulement le premier post et non toutes les réponses?


EDIT : c'est bon j'ai réussi smile.

Dernière modification par justme (12-11-2006 21:29:43)

Hors ligne

Pied de page des forums