Archives FluxBB.fr

Les archives de FluxBB.fr

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

#1 04-01-2002 23:32:47

arcanum
Membre

Afficher contenu topic sur un site ?

Bonjour à tous, je vous explique mon problème. Il y a un forum punBB avec portail, sur lequel il y a des news qui sont diffusée et qui redirigent vers le forum. Ce que j'aimerai faire, c'est afficher les dernière news sur une autre page, mais pas seulement le titre et avoir un lien, je voudrai que ça m'affiche TOUTE la news !
Car j'ai testé en RSS et avec le exter.php et à chaque fois ça met juste le titre en linkant vers le topic du forum !
Moi je ne veux pas que l'on voit le forum, juste que ça affiche le titre ainsi que le contenu directement !
Il faudrai donc que ça affiche le contenu de tous les topics du foum ayant pour id X !

Si quelqu'un sait comment faire je suis preneur car j'ai beau chercher je ne trouve pas du tout sad

Merci d'avance !

Dernière modification par arcanum (04-01-2002 23:37:24)

Hors ligne

#2 16-04-2007 17:39:48

arcanum
Membre

Re : Afficher contenu topic sur un site ?

Bon j'ai réussi en fesant des requêtes SQL directement smile
Par contre bien évidemment le bbcode ne passe pas...comment faire ??

Hors ligne

#3 16-04-2007 17:41:40

MT
Admin rasé

Re : Afficher contenu topic sur un site ?

Inclure le parser.php (et sûrement functions.php) de punbb, et lancer le "parsage" du texte.


(s) MT
ex-Apupv
:faq: :recherche:
Gra.

Hors ligne

#4 16-04-2007 17:45:50

arcanum
Membre

Re : Afficher contenu topic sur un site ?

Hum ok merci je vais me renseigner la dessus smile

Dernière modification par arcanum (16-04-2007 18:23:54)

Hors ligne

#5 16-04-2007 18:24:25

arcanum
Membre

Re : Afficher contenu topic sur un site ?

Hum bon j'ai regardé dans parser.php, je me sert donc de la fonction do_bbcode($texte) de cette façon :
$var = do_bbcode($var);

Sachant que $var est le tableau créé après la requête sql, c'est bien ça qu'il faut faire ?

Ca m'affiche une page blanche ! Quand je ne met pas ni les includes ni la fonction ca marche très bien (balises visibles bien entendu) !

Hors ligne

#6 16-04-2007 18:38:41

MT
Admin rasé

Re : Afficher contenu topic sur un site ?

Il ne faut pas l'appliquer à tout le tableau, juste à ce qui t'intéresse :
[c]$texte = do_bbcode($var['texte'];[/c]
D'ailleurs, il ne faut pas utiliser do_bbcode mais parse_message.
Cette fonction englobe toutes celles qui sont déclarées avant, et qui permettent de gérer correctement tous les bbcode.


(s) MT
ex-Apupv
:faq: :recherche:
Gra.

Hors ligne

#7 16-04-2007 18:40:35

yemgi
Expatrié

Re : Afficher contenu topic sur un site ?

il faut mettre

define('PUN_TURN_OFF_MAINT', 1);
define('PUN_QUIET_VISIT', 0);
define('PUN_ROOT', 'chemin/vers/ton/forum/');
require PUN_ROOT.'include/common.php';

en haut de ton fichier puis utiliser la fonction

parse_message($var, 0)

Hors ligne

#8 16-04-2007 18:45:22

arcanum
Membre

Re : Afficher contenu topic sur un site ?

Alors j'ai donc fait tout ça, mais là il me met une erreur lors de l'utilisation de la fonction hmm

Il faut inclure le parser et functions aussi du coup ou pas ?

Hors ligne

#9 16-04-2007 18:48:58

yemgi
Expatrié

Re : Afficher contenu topic sur un site ?

oui, j'ai oublié, il faut ajouter :

require PUN_ROOT.'include/parser.php';

Hors ligne

#10 16-04-2007 18:49:53

arcanum
Membre

Re : Afficher contenu topic sur un site ?

Ah d'acord je vais tester comme ça je tiens au courant wink

Merci

Hors ligne

#11 16-04-2007 20:22:41

arcanum
Membre

Re : Afficher contenu topic sur un site ?

Erf non ça ne marche toujours pas hmm
Est ce que en même temps ça fait aller à la ligne comme il faut ?

Merci sad

Hors ligne

#12 16-04-2007 22:20:26

yemgi
Expatrié

Re : Afficher contenu topic sur un site ?

oui ca fait aller à la ligne comme il faut et ca convertit tous les BBcodes

Hors ligne

#13 16-04-2007 22:23:28

arcanum
Membre

Re : Afficher contenu topic sur un site ?

Hum oui mais chez moi ça marche pas :'(
La fonction n'a aucun effet sur ma variable, que je la mette avant transformation en tableau ou après c'est pareil hmm

Dernière modification par arcanum (16-04-2007 22:24:09)

Hors ligne

#14 16-04-2007 22:30:07

yemgi
Expatrié

Re : Afficher contenu topic sur un site ?

bizarre, voici ce que j'ai fait sur mon site

<?
define('PUN_TURN_OFF_MAINT', 1);
define('PUN_QUIET_VISIT', 0);
define('PUN_ROOT', '../forums/');
require PUN_ROOT.'include/common.php';
require PUN_ROOT.'include/parser.php';

//.......

        $req2="SELECT subject FROM pun_topics WHERE id=".$id;
        $result2=$db->query($req2)
         or die($req2.' ne peut pas être éxécutée ' . $db->error());
        if($row2=$db->fetch_row($result2))
        {
            $titre=$row2[0];
        }
        $req1="SELECT * FROM pun_posts WHERE topic_id=".$id." ORDER BY id";
        $result1=$db->query($req1)
         or die($req1.' ne peut pas être éxécutée ' . $db->error());
        while($row1=$db->fetch_row($result1))
        {
            $contenu.='<fieldset>
                <legend>'.$titre.'</legend>
                <div class="infldset">
                    <div class="rbox">
                        <p>'.parse_message($row1[5], 0).'</p>
                    </div>
                </div>
            </fieldset>';
        }
//....
?>

Dernière modification par yemgi (16-04-2007 22:31:46)

Hors ligne

#15 16-04-2007 22:33:25

arcanum
Membre

Re : Afficher contenu topic sur un site ?

Hum je vais poster mon code ce sera plus simple, pour le moment pas de design ce n'est pas ce que je veux pour le moment smile

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
        <link href="style.css" rel="stylesheet" type="text/css" />
        <title>PSP Land Version PSP</title>
    </head>

    <body>
    
<?php 

    define('PUN_TURN_OFF_MAINT', 1);
    define('PUN_QUIET_VISIT', 0);
    define('PUN_ROOT', 'forum/');
    require PUN_ROOT.'include/common.php';
    require PUN_ROOT.'include/parser.php';

    mysql_connect ("sql" , "******" , "*******" );
    mysql_select_db("******");
    
        $nom_forum = mysql_query("SELECT * FROM pun_forums WHERE id = '3' ");
        
        
        while ($forum = mysql_fetch_array($nom_forum) )
        {
        
                            
            $nom_titre = mysql_query("SELECT * FROM pun_topics WHERE forum_id = '$forum[id]' ORDER BY id DESC LIMIT 0,10");
            
            while ($titre = mysql_fetch_array($nom_titre) )
            {
            
                
            ?>
                <b>Le titre de la news est :</b><font color="red"> <?php echo $titre['subject'];?></font>
            
            <?php
                $nom_contenu = mysql_query("SELECT * FROM pun_posts WHERE topic_id = '$titre[id]' ORDER BY id LIMIT 0,1 ");
                            
                while ($contenu = mysql_fetch_array($nom_contenu) )
                {
                    parse_message($contenu, 0);
                ?>
        
                    <br /><br /><b>Le contenu de la news est :</b> <?php echo $contenu['message'];
                    
                    
                    
                    $nom_posteur = mysql_query("SELECT * FROM pun_users WHERE id = '$contenu[poster_id]' ");
            
                    while ($posteur = mysql_fetch_array($nom_posteur) )
                    {
                    ?>
        
                        <br /><br /><b>News postée par :</b> <?php echo $posteur['username'];?>
                        <br /><br /><br />
                    <?php
                    
                    }
                    
                }
            
            }        
                
        }
        
        
    mysql_close();
?>

    </body>
</html>

Hors ligne

#16 16-04-2007 22:56:57

yemgi
Expatrié

Re : Afficher contenu topic sur un site ?

Je vais regarder ca, mais déja 2 remarques :

1- retire

    mysql_connect ("sql" , "******" , "*******" );
    mysql_select_db("******");

C'est déja dans common.php

2- Tu vas écrouler ton serveur avec des requêtes SQL dans des boucles while()

Hors ligne

#17 16-04-2007 22:58:20

arcanum
Membre

Re : Afficher contenu topic sur un site ?

Hum a bon, pourtant j'ai tjrs fait comme ça pour récupérer toutes les valeurs d'une table hmm
Tu me conseille de faire quoi ?

Hors ligne

#18 16-04-2007 23:01:09

yemgi
Expatrié

Re : Afficher contenu topic sur un site ?

essaie avec ça, j'ai modifié ton code légèrement

<?php 
    define('PUN_TURN_OFF_MAINT', 1);
    define('PUN_QUIET_VISIT', 0);
    define('PUN_ROOT', 'forum/');
    require PUN_ROOT.'include/common.php';
    require PUN_ROOT.'include/parser.php';
        $nom_forum = mysql_query("SELECT * FROM pun_forums WHERE id = '3' ");
        while ($forum = mysql_fetch_array($nom_forum) )
        {
            $nom_titre = mysql_query("SELECT * FROM pun_topics WHERE forum_id = '$forum[id]' ORDER BY id DESC LIMIT 0,10");
            while ($titre = mysql_fetch_array($nom_titre) )
            {
?>
                <b>Le titre de la news est :</b><font color="red"> <?php echo $titre['subject'];?></font>
<?php
                $nom_contenu = mysql_query("SELECT * FROM pun_posts WHERE topic_id = '$titre[id]' ORDER BY id LIMIT 0,1 ");
                while ($contenu = mysql_fetch_array($nom_contenu) )
                {
?>
                    <br /><br /><b>Le contenu de la news est :</b> <?php echo parse_message($contenu['message']);
                    $nom_posteur = mysql_query("SELECT * FROM pun_users WHERE id = '$contenu[poster_id]' ");
                    while ($posteur = mysql_fetch_array($nom_posteur) )
                    {
                    ?>
                        <br /><br /><b>News postée par :</b> <?php echo $posteur['username'];?>
                        <br /><br /><br />
                    <?php
                    }
                }
            }        
        }
?>

    </body>
</html>

C'est sur la variable $contenu['message'] qu'il faut appliquer parse_message(), pas sur le tableau $contenu[]

Hors ligne

#19 16-04-2007 23:07:16

arcanum
Membre

Re : Afficher contenu topic sur un site ?

Ah d'accord je vais tester alors, oui effectivement il n'y a que le champ message qui contient du BBcode smile
Pour les whiles tu me conseille quoi ?

edit : bon ça marche mais il me sort une erreur lors de l'utilisation de la fonction dans parser.php du fait qu'il manque un argument :

Warning: Missing argument 2 for parse_message() in /mnt/149/sdb/4/1/arcaweb/forum/include/parser.php on line 375

edit2 : bon j'ai réparé en mettant 0 comme seconde variable, mais apparemment ce serai pour cacher les smiley ce qui serait utile d'avoir dans mon cas, je ne voudrai pas qu'ils soient visible !

Dernière modification par arcanum (16-04-2007 23:17:24)

Hors ligne

#20 16-04-2007 23:20:30

vin100
Membre

Re : Afficher contenu topic sur un site ?

parse_message($contenu['message'],$contenu['hide_smilies'])

Hors ligne

#21 16-04-2007 23:21:31

yemgi
Expatrié

Re : Afficher contenu topic sur un site ?

exact, j'ai oublié un morceau, il faut ajouter le ,0 dans parse_message()

Pour les while, en regardant ton code plus en détail, il n'ya qu'une boucle qui est exécutée plus d'une fois.
Je pense qu'en se penchant un peu sur les requêtes, il est possible d'en faire beaucoup moins.
Je re gardes ça totue àl'heure après Prison Break wink

Hors ligne

#22 16-04-2007 23:24:45

arcanum
Membre

Re : Afficher contenu topic sur un site ?

Lol ok merci beaucoup pour les infos, car j'ai commencé le PHP y a pas très longtemps donc j'ai troujours fait comme j'ai appris smile (SDZ tongue)

Pour les smiley dans les deux cas ($contenu['hide_smilies'] ou 0) ça me met l'icone comme quoi il manque une image hmm

edit : j'ai viré une boucle, car en fait au début j'affichai des infos de la première requète et plus maintenant :

<?php 
    define('PUN_TURN_OFF_MAINT', 1);
    define('PUN_QUIET_VISIT', 0);
    define('PUN_ROOT', 'forum/');
    require PUN_ROOT.'include/common.php';
    require PUN_ROOT.'include/parser.php';
        $nom_forum = mysql_query("SELECT * FROM pun_forums WHERE id = '3' ");
        $forum = mysql_fetch_array($nom_forum);
        $nom_titre = mysql_query("SELECT * FROM pun_topics WHERE forum_id = '$forum[id]' ORDER BY id DESC LIMIT 0,10");
        while ($titre = mysql_fetch_array($nom_titre) )
        {
?>
                <b>Le titre de la news est :</b><font color="red"> <?php echo $titre['subject'];?></font>
<?php
                $nom_contenu = mysql_query("SELECT * FROM pun_posts WHERE topic_id = '$titre[id]' ORDER BY id LIMIT 0,1 ");
                while ($contenu = mysql_fetch_array($nom_contenu) )
                {
?>
                    <br /><br /><b>Le contenu de la news est :</b> <?php echo parse_message($contenu['message'] , $contenu['hide_smilies']);
                    $nom_posteur = mysql_query("SELECT * FROM pun_users WHERE id = '$contenu[poster_id]' ");
                    while ($posteur = mysql_fetch_array($nom_posteur) )
                    {
                    ?>
                        <br /><br /><b>News postée par :</b> <?php echo $posteur['username'];?>
                        <br /><br /><br />
                    <?php
                    }
                }
        }        
        
?>

Dernière modification par arcanum (16-04-2007 23:31:13)

Hors ligne

#23 16-04-2007 23:39:47

vin100
Membre

Re : Afficher contenu topic sur un site ?

n'empêche... pas mal de prises de têtes et de choses "cra cra" alors que la mod news generator fait déjà tout ça très bien et proprement

plusieurs petites remarques toutefois pour faire avancer le schmilblick :

1.

quitte à utiliser la connexion de l'objet $db autant utiliser les méthodes de cet objet, par exemple [c]$db->query()[/c] plutot que [c]mysql_query()[/c] ça permet plusieurs choses par exemple avoir le nombre total de requetes, activer le mode debug etc. et puis ça familiarise avec le système

2.

        $nom_forum = mysql_query("SELECT * FROM pun_forums WHERE id = '3' ");
        while ($forum = mysql_fetch_array($nom_forum) )

là la boucle est inutile puisque la requête ne renverra forcément qu'une seule ligne


3.

faire un SELECT * si on n'utilise après qu'une seule colonne est de la gaspille de ressources


4.

Nous avons au moins deux belles failles :

<?php echo $titre['subject'];?>
<?php echo $posteur['username'];?>

devraient êtres :

<?php echo htmlspecialchars($titre['subject']);?>
<?php echo htmlspecialchars($posteur['username']);?>

ou mieux, dans "l'esprit punbb 1.2" :

<?php echo pun_htmlspecialchars($titre['subject']);?>
<?php echo pun_htmlspecialchars($posteur['username']);?>

5.

$nom_posteur = mysql_query("SELECT * FROM pun_users WHERE id = '$contenu[poster_id]' ");

ces informations devraient êtres récupérées en même temps que le contenu des messages par une jointure dans la requete, on diminueraient ainsi le nb de requetes par 2

6.
le HTML est une horreur innommable tongue mais chacun fait ce qu'il veut sur son site roll

mot de la fin
faut pas prendre tout ça pour des critiques malvenues, juste des pistes pour aller mieux et plus loin smile
je ne pense d'ailleurs pas toujours à ces choses dans mon propre code, c'est comme les phôtes dortografes, on vois plus celles des autres wink

Hors ligne

#24 16-04-2007 23:42:27

arcanum
Membre

Re : Afficher contenu topic sur un site ?

Non non justement je le prend très bien car j'ai besoin de conseils smile
Pour le html je n'aurai pas le choix pour le CSS et tout wink

Pour les requêtes j'en fait que très peu, la pour le moment j'ai tout décomposer et je vais affiner mon code petit à petit ^^

Dernière modification par arcanum (16-04-2007 23:49:00)

Hors ligne

#25 17-04-2007 00:20:20

yemgi
Expatrié

Re : Afficher contenu topic sur un site ?

Je viens de voir le post de Vin100, effectivement, le HTML n'est pas propre et il y a plusieurs requetes inutiles.
Arcanum, j'avais fait qq modifs supplémentaires à ton code, je n'ai pas fait la jointure de la requete sql tout simplement parce que je ne sais pas faire tongue .

<?php 
    define('PUN_TURN_OFF_MAINT', 1);
    define('PUN_QUIET_VISIT', 0);
    define('PUN_ROOT', 'forum/');
    require PUN_ROOT.'include/common.php';
    require PUN_ROOT.'include/parser.php';
       $nom_titre = $db->query("SELECT id,subject FROM pun_topics WHERE forum_id = '3' ORDER BY id DESC LIMIT 0,10");
        $affichage='';
        $titre = $db->fetch_assoc($nom_titre) ;
        $affichage.='<strong>Le titre de la news est :</strong> '.htmlspecialchars($titre['subject'];
        $nom_contenu = $db->query("SELECT * FROM pun_posts WHERE topic_id=".$titre['id']." ORDER BY id LIMIT 0,1 ");
        while ($contenu = $db->fetch_assoc($nom_contenu) )
        {
            $affichage.='
                            <br /><br /><strong>Le contenu de la news est :</strong> '.parse_message($contenu['message'], 0).'
                        <br /><br /><strong>News postée par :</strong> '.htmlspecialchars($contenu['poster']).'
                        <br /><br /><br />';
        }        
echo $affichage;
?>
    </body>
</html>

Hors ligne

Pied de page des forums