Les archives de FluxBB.fr
Vous n'êtes pas identifié(e).
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 
Merci d'avance !
Dernière modification par arcanum (04-01-2002 23:37:24)
Hors ligne
Bon j'ai réussi en fesant des requêtes SQL directement 
Par contre bien évidemment le bbcode ne passe pas...comment faire ??
Hors ligne
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
Hum ok merci je vais me renseigner la dessus 
Dernière modification par arcanum (16-04-2007 18:23:54)
Hors ligne
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
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
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
Alors j'ai donc fait tout ça, mais là il me met une erreur lors de l'utilisation de la fonction 
Il faut inclure le parser et functions aussi du coup ou pas ?
Hors ligne
oui, j'ai oublié, il faut ajouter :
require PUN_ROOT.'include/parser.php';Hors ligne
Ah d'acord je vais tester comme ça je tiens au courant 
Merci
Hors ligne
Erf non ça ne marche toujours pas 
Est ce que en même temps ça fait aller à la ligne comme il faut ?
Merci 
Hors ligne
oui ca fait aller à la ligne comme il faut et ca convertit tous les BBcodes
Hors ligne
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 
Dernière modification par arcanum (16-04-2007 22:24:09)
Hors ligne
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
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 
<!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
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
Hum a bon, pourtant j'ai tjrs fait comme ça pour récupérer toutes les valeurs d'une table 
Tu me conseille de faire quoi ?
Hors ligne
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
Ah d'accord je vais tester alors, oui effectivement il n'y a que le champ message qui contient du BBcode 
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
parse_message($contenu['message'],$contenu['hide_smilies'])
Hors ligne
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 
Hors ligne
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
(SDZ
)
Pour les smiley dans les deux cas ($contenu['hide_smilies'] ou 0) ça me met l'icone comme quoi il manque une image 
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
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
mais chacun fait ce qu'il veut sur son site
mot de la fin
faut pas prendre tout ça pour des critiques malvenues, juste des pistes pour aller mieux et plus loin 
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 
Hors ligne
Non non justement je le prend très bien car j'ai besoin de conseils 
Pour le html je n'aurai pas le choix pour le CSS et tout 
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
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
.
<?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