Phpbb - Recuperer les 10 derniers topics

WRInaute discret
Bonjour,

J'aurai voulu savoir comment faire pour recuperer les titre des 10 derniers topic d'un forum phpbb (chaque titre faisant office de lien vers le topic) afin de les afficher sur n'importe quelle page du site en lui même.
J'ai essayer de voir dans le code phpbb mais je suis un peu perdu -_-, si quelqu'un pouvais m'aider ce serait cool :)

Merci.

Nautiljon.
 
WRInaute impliqué
Salut,

Un truc tout simple ;) devrait fonctionner je pense


Code:
<?php
$hote= "localhost";
$base= "";
$user= "";
$pass= "";

$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );
mysql_select_db($base) or die ('Erreur :'.mysql_error());

$select = "SELECT topic_title,topic_id FROM phpbb_topics ORDER BY topic_id DESC limit 10";
$result = mysql_query($select,$link)  or die ('Erreur : '.mysql_error() );
  
    while($row = mysql_fetch_array($result)) 
	{
	$topic_id = $row['topic_id'];
	$titre = $row['topic_title'];
    echo '<a href="/forums/viewtopic_'.$topic_id.'.html">'.$titre.'</a><br>';
    }
mysql_free_result($result);
mysql_close(); 
?>

Sinon il existe un mod pour ça, topicanywere un truc dans le genre fait une recherche sur www.phpbb-fr.com En javascript par contre il me semble :cry:
 
WRInaute discret
Wai c'est preque bon ! Le truc c'est que j'utilise un mod pour l'url rewriting, j'aurai bien voulu l'appliquer ! donc si quelqu'un sait ce serait cool!
 
WRInaute impliqué
Je vois pas le rapport la ? tu as juste modifier l'url dans le code source si ca ne correspond pas :?

Edit : Ok je vois ce que tu veux dire :wink: dans ce cas tu récupères le variable title et tu adaptes ...
 
WRInaute passionné
Ehe, merci, j'utilisais le javascript du MOD de Aideinfo, mais ça c'est plus .. référencement correct :p

Même si il ne parle que des derniers sujets postés, et pas les derniers posts comme le faisait le mod :p
 
WRInaute discret
C'est bon j'ai réussit a reprendre les fonctions du mod d'url rewriting de Kaizen et les adapter à ce que je voulais faire ^^

Pouzy->pour les posts a mon avis il suffit de selectionner dans la table post au lieu de la table topic !
 
WRInaute passionné
j'ai cette erreur pour ton code moutyk

Erreur : Table 'matable_dd.forum_' doesn't exist


hors mes infos son bonne et mon prefix est bien forum_

ou est le bug ?
 
WRInaute impliqué
Slt,

Tes infos de connection sont elles les bonnes ?
As tu bien modifié cette ligne ?

$select = "SELECT topic_title,topic_id FROM phpbb_topics ORDER BY topic_id DESC limit 10"
 
WRInaute passionné
oui moutyk, merci de ta reponse rapide :

voila mon code

<?php
$hote= "localhost";
$base= "rou_mi";
$user= "rou_foxus";
$pass= "zzzzzzz";

$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );
mysql_select_db($base) or die ('Erreur :'.mysql_error());

$select = "SELECT topic_title,topic_id FROM forum_ ORDER BY topic_id DESC limit 10";
$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );

while($row = mysql_fetch_array($result))
{
$topic_id = $row['topic_id'];
$titre = $row['topic_title'];
echo '<a href="/forums/viewtopic_'.$topic_id.'.html">'.$titre.'</a><br>';
}
mysql_free_result($result);
mysql_close();
?>


et c les memes infos que le config.php de phpBB j'ai tous vérifié.

c'est quoi la variable $dbms = 'mysql'; du config.php ? ca a une incidence qu'elle ne sosi aps presente dans ton code ?

mes amitiés
 
WRInaute impliqué
Re,

aucune incidence !

Dis moi c'est le nom complet de ta table forum_ ?

Sinon essaye avec ça :

$select = "SELECT topic_title,topic_id FROM forum_topics ORDER BY topic_id DESC limit 10";
$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
 
WRInaute passionné
oui c le nom complet... et ta modification me laisse le meme msg d'erreur

le code est appeler d'u nfichier test.php qui ne se situe pas dans le meme dossier que le forum phpbb, aucune incidences non plus ?
 
WRInaute passionné
A pardon si CA MARCHE avec forum_topics c'est bon :)

un grand merci

dernier petti detail que je mettez dans topicanywere (mais en javascrip snif) :

c mettre les resultat sous cette forme :

Comment afficher les resultats phpbb - (6 Réponses) - Louve

bref mettre le nombre de reponses et le pseudo du dernier posteur sur ce topic sur la meme ligne ?

tu pense que c'est trop compliqué ?

amicalement
 
WRInaute impliqué
Non aucun incidence non plus.

A mon avis tu as une erreur au niveau de la base ou du nom de la table, sinon je vois vraiment pas.

Retrouve le nom exact de ta table dans phpmyadmin peut être afin d'être totalement sûr ?!
 
WRInaute impliqué
Oui j'ai vu trop tard !!

pour afficher les réponses :

Code:
<?php 
$hote= "localhost"; 
$base= ""; 
$user= ""; 
$pass= ""; 

$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() ); 
mysql_select_db($base) or die ('Erreur :'.mysql_error()); 

$select = "SELECT topic_title,topic_id,topic_replies FROM forum_topics ORDER BY topic_id DESC limit 10"; 
$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() ); 

while($row = mysql_fetch_array($result)) 
{ 
$topic_id = $row['topic_id']; 
$reponse = $row['topic_replies'];
$titre = $row['topic_title']; 
echo '<a href="/forums/viewtopic_'.$topic_id.'.html"><b>'.$titre.'</b> ('.$reponse.')</a><br>'; 
} 
mysql_free_result($result); 
mysql_close(); 
?>
 
WRInaute passionné
HA superbbee

je vais essayé :)

Imense merci a toi :)

si une personne desire completer ce code avec le pseudo du dernier posteur ça sera LA PERFECION A L'ETAT PURE !!! :)

je vais tester ;)
 
WRInaute impliqué
Tiens allé voici la suite je suis d'attaque ce soir ;)

Le nom du posteur et le lien vers son profile. Par contre je précise je suis pas un pro du php peut être que la requete est à optimiser, perso je l'utilise sur un forum avec 80 connectés et sur toutes les pages sans problème, mais bon à voir.

Avec le nom du posteur :

Code:
<?php 
$hote= "localhost"; 
$base= ""; 
$user= ""; 
$pass= ""; 

$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() ); 
mysql_select_db($base) or die ('Erreur :'.mysql_error()); 

$select = "SELECT topic_title,topic_id,topic_replies,topic_poster FROM forum_topics ORDER BY topic_id DESC limit 10"; 
$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() ); 

while($row = mysql_fetch_array($result)) 
{ 
$topic_id = $row['topic_id']; 
$user_id = $row['topic_poster'];
$reponse = $row['topic_replies'];
$titre = $row['topic_title']; 

$select2 = "SELECT user_id,username FROM forum_users WHERE user_id=$user_id"; 
$result2 = mysql_query($select2,$link) or die ('Erreur : '.mysql_error() ); 

$row2 = mysql_fetch_array($result2); 

echo 'Par : <a href="/forums/profile_'.$user_id.'.html">'.$row2['username'].'</a> - <a href="/forums/viewtopic_'.$topic_id.'.html"><b>'.$titre.'</b> </a>('.$reponse.')<br>';

} 
mysql_free_result($result); 
mysql_close(); 
?>
 
WRInaute passionné
Alors la je suis gaté ce soir :)

j'ai modifié ça pour correspondre a mon modele initiale :

echo '<a href="/forums/viewtopic_'.$topic_id.'.html"><b>'.$titre.'</b> </a> - <b>('.$reponse.' Réponses)</b> - <a href="/forums/profile_'.$user_id.'.html">'.$row2['username'].'</a> <br>';


en plus le javascript ne donné pas le lien du profile :)

T'es formidable, faut que le php je m'y mettent aussi :)

reste plus qu'a modifié les liens pour les rendre compatblie avec l'url rewriting de ohax, mais ça je m'en chargerais car j'ai carrement abusé de ta gentillesse :)

Esperons que ça aide goolbot a l'indexation du forum car il n'a indexé aucun topic (mais tous les forum oui) :)

Merci, topic a upé souvent pour les nouveaux :)
 
WRInaute impliqué
Oui après les petites modifications pour les liens c'est pas trop difficile.

On peut encore faire plein de chose, mais je vous laisse chercher, les bases sont là !

Au prochain : Afficher réponse ou réponses en fonction du nombre de réponse :D

Essaye de mettre réponse(s) quand même pour le moment :wink:
 
WRInaute passionné
merci moutyk....

mais je vient de... m'appercevoir d'une petite choses.... :s


En fait tu a parfaitement mi le script pour afficher les dernier topic avec le pseudo de leurs auteurs c'est cela ?

car je compare avec le sript javascript, et lui en fait c'était qu'il met les 10 derniers topic avec le nom du dernier posteur, en gros il "up" les topics en fonction des dernieres réponses...



un vieux topic peut très bien figurer dans les 10 derniers dans ce cas, un peu a la maniere de la collone de droite sur www.playeradvance.org

tu pense que il suffirais d'un petit changement de variable ou de Order pour faire cette petite babiole ? :)

Mais toujours est t'il que ton script je le rajouterais en "plus" car c'est très utile néanmoins :)

thankks ;)
 
WRInaute discret
lol bien joué moutyk ^^
Ton code est bien, reste l'optimisation, ça se fait en une seul requete je pense. Mais tant que ca marche c'est le principal, l'idée dest là!

Pour le (s) c'est pas bien dur, un petit

if($reponse) < 1 {echo 'reponse';} else {echo 'reponses';}

^^
 
WRInaute discret
Pour ce que tu veux faire Foxus, dans l'idée il faut récuprer les derniers messages postés avec leur topic lié jusqu'a temps d'arrivé à 10 topics différents. Dans ce cas il faut utiliser une autre table, un peut plus compliquer mais ça doit se faire ^^ allé motivé :p
 
WRInaute passionné
arf.. daccord oué lol

bon ben... ché pas lol, je vais peut etre voir la source du fichier php du mod topicanywhere....
 
WRInaute impliqué
Pour afficher ou non réponse au pluriel :

Code:
<?php 
$hote= "localhost"; 
$base= ""; 
$user= ""; 
$pass= ""; 

$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() ); 
mysql_select_db($base) or die ('Erreur :'.mysql_error()); 

$select = "SELECT topic_title,topic_id,topic_replies,topic_poster FROM phpbb_topics ORDER BY topic_id DESC limit 100"; 
$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() ); 

while($row = mysql_fetch_array($result)) 
{ 
$topic_id = $row['topic_id']; 
$user_id = $row['topic_poster'];
$reponse = $row['topic_replies'];
$titre = $row['topic_title']; 

$select2 = "SELECT user_id,username FROM phpbb_users WHERE user_id=$user_id"; 
$result2 = mysql_query($select2,$link) or die ('Erreur : '.mysql_error() ); 

$row2 = mysql_fetch_array($result2); 
if($reponse <= 1){$nb_rep='réponse';}else{$nb_rep='réponses';}
echo 'Par : <a href="/forums/profile_'.$user_id.'.html">'.$row2['username'].'</a> - <a href="/forums/viewtopic_'.$topic_id.'.html"><b>'.$titre.'</b> </a>('.$reponse.' '.$nb_rep.')<br>';

} 
mysql_free_result($result); 
mysql_close(); 
?>
 
WRInaute passionné
Voici ce code que je vient d'adapter (derniere evolution) a l'url rewriting de ce mode célébre sur WRI :
https://www.webrankinfo.com/forum/t/le-libelle-du-titre-dans-lurl-de-votre-forum-phpbb-v2.25745/

Code:
<?php
$hote= "localhost";
$base= "";
$user= "";
$pass= "";

$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );
mysql_select_db($base) or die ('Erreur :'.mysql_error());

$select = "SELECT topic_title,topic_id,topic_replies,topic_poster FROM phpbb_topics ORDER BY topic_id DESC limit 100";
$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );

while($row = mysql_fetch_array($result))
{
$topic_id = $row['topic_id'];
$user_id = $row['topic_poster'];
$reponse = $row['topic_replies'];
$titre = $row['topic_title'];


$change_space = "-"; 

$url_title = $titre;


$url_title = strtolower($url_title); 
				
$url_title = strtr($url_title,'áâàäéêèëíîìïóôòöúûùüýçñ','aaaaeeeeiiiioooouuuuycn');

$url_title = preg_replace("/(&gt;|&lt;|&quot;|&amp;)/",$change_space,$url_title);

$url_title = preg_replace("/[^a-z0-9_\-]/",$change_space,$url_title);

$url_title = preg_replace("/[$change_space]+/",$change_space,$url_title);

($url_title{0} == $change_space ? $url_title = substr($url_title,1) : '' );
			($url_title{strlen($url_title)-1} == $change_space ? $url_title = substr($url_title,0, strlen($url_title)-1) : '' );



$select2 = "SELECT user_id,username FROM phpbb_users WHERE user_id=$user_id";
$result2 = mysql_query($select2,$link) or die ('Erreur : '.mysql_error() );

$row2 = mysql_fetch_array($result2);
if($reponse <= 1){$nb_rep='réponse';}else{$nb_rep='réponses';}


echo '<a href="http://forum.monsite.com/'.$topic_id.'_0-'.$url_title.'.html"><b>'.$titre.'</b> </a> - <b>('.$reponse.' '.$nb_rep.')</b> - <a href="http://forum.monsite.com/profile.php?mode=viewprofile&u='.$user_id.'">'.$row2['username'].'</a> <br>';


}
mysql_free_result($result);
mysql_close();
?>

Y a pas de raisons que je ne vous en fassent pas profiter :)
 
WRInaute discret
Moi j'ai toujours la même erreur après modif, je ne comprend pas

Erreur : Table 'matable_dd.forum_' doesn't exist

Tu as modifié quoi foxus ?
 
WRInaute discret
Voici le nom d'une table :
xelopolis_phpbb_Topics par exmple

Voici le résulat quand je place le script :
Erreur : Table 'xelopolis.phpbb_topics' doesn't exist
 
Discussions similaires
Haut