8791 sujets

Développement web côté serveur, CMS

Bonsoir,

Je m'arrache les cheveux depuis environ 4 heures sans avancer de quoi ce soit ! Je m'explique.

J'ai un forum PHPBB 3 et je souhaiterais afficher toutes les posts d'une catégorie du forum sur une page de mon site. J'ai donc observé la base de donnée de PHPBB 3 et j'ai trouvé ce que je veux :
$forum_id (qui indique la catégorie du forum)
$post_subject (qui est le sujet du post)

J'ai aussi remarqué que les posts en réponse au post initial commencent par "Re:".

Ma solution serait donc de faire un substr($row[post_subject], 0, 3); pour sélectionner les 3 premiers caractères des posts. Ensuite faire un if pour dire que si c'est égal à Re:, cela ne l'affiche pas.

Voilà le bout de code que j'ai :

  <?
include("config.php");

$requete_phpbb = mysql_query("SELECT * FROM phpbb_posts WHERE forum_id='8'");

while ($row=mysql_fetch_array($requete_phpbb))

echo "Sujet : $row[post_subject]<br>";

?>

Ce code là m'affiche tous les posts de la catégorie 8 du forum. Comment faire pour enlever tous les posts commençant par "Re:", s'il vous plait ?

Je vous remercie par avance.
Modifié par BlueAngel (29 Jun 2007 - 19:58)
Salut BlueAngel Smiley cligne ,

Tu pourrais changer ta requête et utiliser :


$requete_phpbb = mysql_query("SELECT post_subject FROM phpbb_posts WHERE forum_id='8' and substr(post_subject, 1, 3) not like 'Re:%' ");



A+
Modifié par Heyoan (29 Jun 2007 - 03:17)
Bonsoir Heyoan,

Tout d'abord, merci pour ta réponse rapide !

Je viens d'essayer, et ça ne change rien (comme s'il ne prenait pas en compte la modification). Il affiche toujours les Re:.

A bientôt.
Oups Smiley rolleyes

Fais plutôt :


$requete_phpbb = mysql_query("SELECT post_subject FROM phpbb_posts WHERE forum_id='8' and post_subject not like 'Re:%' ");


Modifié par Heyoan (29 Jun 2007 - 00:45)
ça marche mieux ! merci c'est parfait !

Juste une dernière chose, il affiche pas les accents, c'est remplacé par des "?". Tu sais comment le résoudre ?

Il me semble qu'il faut changer le charset de la page ou un quelque chose du genre.
Modifié par BlueAngel (29 Jun 2007 - 00:48)
Re'

j'ai jeté un oeil à la version et c'est bien fichu ! Smiley langue

Juste pour info : pour récupérer ce que tu veux, je pense que tu devrais plutôt utiliser phpbb_topics Smiley cligne

A+
Re,

Effectivement, il y a aussi cette table qui est plus appropriée ! Je ne l'avais pas du tout remarquée Smiley confused

Merci pour le conseil.

J'ai une autre question qui porte sur le même concept (on va donc éviter de réouvrir un sujet je pense).

D'après toi, comment faire pour compter le nombre de topics crée par un utilisateur souhaité.

Exemple :
Je veux afficher le nombre de topics ouvert par l'utilisateur numéro 35 (dans la table, ça correspond à la colonne "topic_poster").

Je sais m'en sortir en comptant l'intérieur d'une variable, mais j'ai beaucoup de mal avec les boucles.

Merci d'avance Smiley smile
BlueAngel a écrit :
Je veux afficher le nombre de topics ouvert par l'utilisateur numéro 35 (dans la table, ça correspond à la colonne "topic_poster").

Select count(*) from `phpbb_topics` WHERE topic_poster =35


A+ Smiley cligne
D'accord merci, mais comment tu lui dit après d'afficher le nombre totalisé ?

ça doit être avec un echo quelque chose.
BlueAngel a écrit :
D'accord merci, mais comment tu lui dit après d'afficher le nombre totalisé ?

ça doit être avec un echo quelque chose.

Yes ! Tu fais :
Select count(*) as nbposts from `phpbb_topics` WHERE topic_poster =35
et tu peux faire echo $nbposts;
Modifié par Heyoan (29 Jun 2007 - 14:44)
Je viens de tester en faisant comme ça :


<?
include("config.php");

mysql_query("SELECT count(*) as nbposts from phpbb_topics WHERE topic_poster ='2'");

echo $nbposts;

?>


cela ne m'affiche rien. Il y a un problème dans le code ?
bonjour,

tu peux aussi faire cela :


$requete = "SELECT * FROM phpbb_topics WHERE topic_poster ='2'";
$res = mysql_query($requete);
$nb_posts = mysql_num_rows($res);

echo $nb_posts;

Modifié par rafale29 (29 Jun 2007 - 16:25)
BlueAngel a écrit :
Je viens de tester en faisant comme ça :


<?
include("config.php");

mysql_query("SELECT count(*) as nbposts from phpbb_topics WHERE topic_poster ='2'");

echo $nbposts;

?>


cela ne m'affiche rien. Il y a un problème dans le code ?

Il te manquait la récupération de la variable... Tu aurais pu faire :
$requete_phpbb = mysql_query("Select count(*) as nbposts from `phpbb_topics` WHERE topic_poster =2");
$nbposts = mysql_result( $requete_phpbb, 0 );
echo $nbposts;


A+ Smiley smile
Je pense encore à quelque chose (je sais, je suis pénible lol) ^^

Si à la fin des "topics", je veux récupérer tous les chiffres qu'il y a après un "-" et les additionner pour afficher le nombre total.

Exemple :

j'ai 15 topics avec chacun portant un nom du type "Coucou c'est moi" et se terminant par "- 2".

Je voudrais créer une boucle pour récupérer tous les topics de cette catégorie du forum, isoler les chiffres après le "-" et les additionner pour afficher le total (dans cette exemple, ce serait "30").

Vous pourriez m'aider pour ça aussi s'il vous plait ?

Merci bien pour tout votre aide !
Salut Smiley cligne ,

Là ça commence à être de la bidouille Smiley murf ...

Pourquoi, je vais te le dire (<-- imitation d'un mec connu Smiley lol ) : c'est une très mauvaise idée de mélanger les genres ! Un champ de type text (en l'occurrence le titre du topic) ne devrait pas contenir d'autre information qu'un titre... Si tu commences à ruser en disant que de la position 4 à la position 7 c'est l'année de naissance du chef de gare et que tout ce qui se trouve après un - est un nombre qu'il faut cumuler tu vas avoir des surprises un jour ou l'autre... 2 exemples de titres à problème :
Le 1000000 d'euros est atteint !
Gandhi est né le 02-10-1869

Un topic qui en parle.

Bon cela dit, en supposant que ce n'est que pour de la recherche expérimentale Smiley biggol :
$somme = 0;
$query = "SELECT topic_title from phpbb_topics"; 
$result = mysql_query($query) or die ("Exécution de la requête impossible");
while ($val = mysql_fetch_array($result)) 
{ 
	$somme += intval(substr( strrchr( $val["topic_title"], "-" ), 1 ));
}
echo $somme;

A+ Smiley smile