Afficher les derniers posts phpBB sur une page quelconque

Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics

eWeb
WRInaute impliqué
WRInaute impliqué
 
Messages: 434
Inscription: Lun Mai 22, 2006 19:58

Message le Dim Sep 17, 2006 13:12

Il existe un mod avec ce genre d'options : "topics anywhere".

Par contre, les liens sont affichés avec un script JavaScript...


Sak
WRInaute discret
WRInaute discret
 
Messages: 80
Inscription: Sam Mai 03, 2003 13:09

Message le Mar Sep 19, 2006 2:22

Merci pour ce script qui marche impeccablement sur mon site http://www.soninkara.org. C'est vrai que topic anywhere permet d'exporter du flus RSS qu'il suffit de parser, mais je préfère ce scripts très léger et configurable.
Merci à tous.
Code: Tout sélectionner
<?php
$connection=mysql_connect("localhost","userr_database","mot_de_passe");
mysql_select_db("database");
$sql = "SELECT t.topic_id, t.topic_title, t.topic_replies, t.topic_last_post_id, f.forum_id, f.forum_name, p.post_time, u.user_id, u.username
       FROM phpbb_topics AS t, phpbb_forums AS f, phpbb_posts AS p, phpbb_users AS u
       WHERE t.forum_id = f.forum_id
       AND f.auth_view < 3 AND f.auth_read < 3     
       AND t.topic_moved_id = 0
       AND p.post_id = t.topic_last_post_id
       AND u.user_id = p.poster_id
      AND f.forum_id != 8
       ORDER BY t.topic_last_post_id DESC
       LIMIT 10";
if( !($result = mysql_query($sql)) )
{
   echo 'Impossible d\'obtenir les 10 derniers posts sur le forum soninké de soninkara.';
}

while( $ary = mysql_fetch_array($result) )
{
   $xpostrow[] = $ary;
}

echo '<table border="0" width="100%">';
for( $i = 0; $i < count($xpostrow); $i++ )
{   
   $topic_title = htmlspecialchars(stripslashes($xpostrow[$i]['topic_title']));
   if( strlen($topic_title) > 40 )
   {
      $k = substr($topic_title, 0, 40);
      $pos = strrpos($k, " ");
      $k = substr($k, 0, $pos);
      $topic_title = $k . "...";
   }
   echo '<tr><td width="15%">' . date('d-m-Y', $xpostrow[$i]['post_time']) . '</td>';   
   echo '<td width="60%"><a class="navigation" href="forum/viewtopic.php?p=' . $xpostrow[$i]['topic_last_post_id'] . '#' . $xpostrow[$i]['topic_last_post_id'] . '">' . $topic_title . '</a></td>';
   echo '<td width="3%">Par</td>';
   echo '<td width="22%" align="right"><a class="navigation2" href="forum/profile.php?mode=viewprofile&amp;u=' . $xpostrow[$i]['user_id'] . '">' . $xpostrow[$i]['username'] . '</a></td></tr>';
}
echo '</table>';
?>

dobrazil
Nouveau WRInaute
 
Messages: 1
Inscription: Jeu Oct 19, 2006 13:13

Message le Jeu Oct 19, 2006 13:18

Salut à tous,

j'ai un soucy, après avoir mis ce script sur ma page, cela m'affiche qu'il est impossible d'afficher les 10 derniers messages en me ramenant à la ligne:

Code: Tout sélectionner
while( $ary = mysql_fetch_array($result) )


d'où peut venir le problème?

Merci d'avance

ghassen
Nouveau WRInaute
 
Messages: 3
Inscription: Dim Aoû 28, 2005 3:04

script

Message le Mar Oct 24, 2006 9:55

salut!
voilà un script qui règle le probleme!!!!!

http://www.comscripts.com/scripts/?scri ... 83;817;672

A+
j'espère qu'il vous sera utile!!


lothar
WRInaute accro
WRInaute accro
 
Messages: 1524
Inscription: Sam Juil 12, 2003 11:42

Message le Mer Fév 21, 2007 23:08

Bonsoir,

quelle serait la requête à effectuer pour afficher les derniers sujets mis à jour ?

C'est-à-dire afficher l'url du sujet et non du dernier post, comme sur la home de WRI ?

Merci


Patrice A.
Modérateur
Modérateur
 
Messages: 2413
Inscription: Ven Fév 11, 2005 19:36

Message le Jeu Fév 22, 2007 17:51

La requete est la meme, mais au lieu de faire des liens en utilisant le last_post_id tu crées des liens en utilisant le topic_id.


lothar
WRInaute accro
WRInaute accro
 
Messages: 1524
Inscription: Sam Juil 12, 2003 11:42

Message le Jeu Fév 22, 2007 20:37

Oui en fait c'est ce que j'avais déjà fait, mais ça n'affichait que les derniers sujets créés.

En rajoutant le topic_last_post_id, ça fonctionne bien, merci !


easy_zik
WRInaute impliqué
WRInaute impliqué
 
Messages: 408
Inscription: Lun Juil 07, 2003 9:30

Message le Ven Fév 23, 2007 14:16

Elles sont bien belles vos requêtes, mais vous avez un peu oublié la chose la plus importante : METTRE EN CACHE LE RESULTAT.

Parceque le jour ou vous aurez des messages dans vos forums (imaginez un site comme WRI...) et ben vous allez comprendre votre malheur...
Votre serveur ne resistera pas à une requète si gourmande en ressource avec des ORDER BY et des jointures partout.

voila voila...


lothar
WRInaute accro
WRInaute accro
 
Messages: 1524
Inscription: Sam Juil 12, 2003 11:42

Message le Ven Fév 23, 2007 16:11

TU trouves que c'est une grosse requête:

Code: Tout sélectionner
SELECT topic_id, topic_title, last_post_id FROM phpbb_topics
WHERE topic_status = 0 AND forum_id !=14 AND forum_id != 13 AND forum_id != 22
ORDER BY last_post_id DESC LIMIT 20


easy_zik
WRInaute impliqué
WRInaute impliqué
 
Messages: 408
Inscription: Lun Juil 07, 2003 9:30

Message le Ven Fév 23, 2007 16:22

lothar a écrit:TU trouves que c'est une grosse requête:

Code: Tout sélectionner
SELECT topic_id, topic_title, last_post_id FROM phpbb_topics
WHERE topic_status = 0 AND forum_id !=14 AND forum_id != 13 AND forum_id != 22
ORDER BY last_post_id DESC LIMIT 20

OUI !

Parceque le jour ou tu auras 50.000 messages dans ton forum (regarde combien il y en a sur WRI par exemple...) ta requète prendra beaucoup de temps à s'executer.
Tu n'as aucun moyen d'indexer pour une recherche rapide (sur la date du dernier message j'entends)
Donc SQL va passer en revue tes 50.000 entrées sans exeption, faire tes jointures (heureusement basés sur des clés primaires), et les trier avec un ORDER BY...

Si tu trouves que ca s'appèle une requête simple, faut revoir ton SQL..

Bien sûr il y a plus compliqué.... (GROUP BY et compagnie) mais c'est déja bien assez.


lothar
WRInaute accro
WRInaute accro
 
Messages: 1524
Inscription: Sam Juil 12, 2003 11:42

Message le Ven Fév 23, 2007 19:12

easyzik a écrit:
lothar a écrit:TU trouves que c'est une grosse requête:

Code: Tout sélectionner
SELECT topic_id, topic_title, last_post_id FROM phpbb_topics
WHERE topic_status = 0 AND forum_id !=14 AND forum_id != 13 AND forum_id != 22
ORDER BY last_post_id DESC LIMIT 20

OUI !

Parceque le jour ou tu auras 50.000 messages dans ton forum (regarde combien il y en a sur WRI par exemple...) ta requète prendra beaucoup de temps à s'executer.
Tu n'as aucun moyen d'indexer pour une recherche rapide (sur la date du dernier message j'entends)
Donc SQL va passer en revue tes 50.000 entrées sans exeption, faire tes jointures (heureusement basés sur des clés primaires), et les trier avec un ORDER BY...

Si tu trouves que ca s'appèle une requête simple, faut revoir ton SQL..

Bien sûr il y a plus compliqué.... (GROUP BY et compagnie) mais c'est déja bien assez.


Je n'ai aucune connaissance en SQL, c'est une question que je posais. En l'occurrence il y a plus de 100 000 messages sur mon forum.

Comment faire pour améliorer cette requête et stocker le résultat en cache ?


Patrice A.
Modérateur
Modérateur
 
Messages: 2413
Inscription: Ven Fév 11, 2005 19:36

Message le Dim Fév 25, 2007 16:47

lothar a écrit:Comment faire pour stocker le résultat en cache ?

http://www.webrankinfo.com/forums/viewtopic_28614.htm :wink:


ecomike
Nouveau WRInaute
 
Messages: 8
Inscription: Lun Aoû 13, 2007 9:42

Comment afficher les titres + text des derniers post ?

Message le Lun Oct 08, 2007 9:22

J'ai testé le script ci dessous mail il n'affiche que les titres du post ... Comment faire pour afficher également les premieres lignes du post ???

<?php
$connection=mysql_connect("**","**","**");
mysql_select_db("credit_online");
$sql = "SELECT t.topic_id, t.topic_title, t.topic_replies, t.topic_last_post_id, f.forum_id, f.forum_name, p.post_time, u.user_id, u.username
FROM phpbb_topics AS t, phpbb_forums AS f, phpbb_posts AS p, phpbb_users AS u
WHERE t.forum_id = f.forum_id
AND f.auth_view < 3 AND f.auth_read < 3
AND t.topic_moved_id = 0
AND p.post_id = t.topic_last_post_id
AND u.user_id = p.poster_id
AND f.forum_id != 8
ORDER BY t.topic_last_post_id DESC
LIMIT 4";
if( !($result = mysql_query($sql)) )
{
echo 'Impossible d\'obtenir les 10 derniers posts sur le forum crédit-online';
}

while( $ary = mysql_fetch_array($result) )
{
$xpostrow[] = $ary;
}

echo '<table border="0" width="100%">';
for( $i = 0; $i < count($xpostrow); $i++ )
{
$topic_title = htmlspecialchars(stripslashes($xpostrow[$i]['topic_title']));
if( strlen($topic_title) > 100 )
{
$k = substr($topic_title, 0, 100);
$pos = strrpos($k, " ");
$k = substr($k, 0, $pos);
$topic_title = $k . "...";
}
echo '<tr><td width="15%">' . date('d-m-Y', $xpostrow[$i]['post_time']) . '</td>';
echo '<td width="85%"><a href="forum/viewtopic.php?p=' . $xpostrow[$i]['topic_id'] . '#' . $xpostrow[$i]['topic_id'] . '">' . $topic_title . '</a></td></tr>';

}
echo '</table>';
?>


mahefarivony
WRInaute accro
WRInaute accro
 
Messages: 11405
Inscription: Lun Oct 14, 2002 10:00

Message le Lun Oct 08, 2007 13:04

t'as l'habitude de laisser tes login et tes mots de passe en clair sur le web comme ça ?


dmathieu
Modérateur
Modérateur
 
Messages: 6929
Inscription: Ven Jan 09, 2004 16:21

Message le Lun Oct 08, 2007 13:51

Login & pass remplacés par des *.

Afficher les derniers posts phpBB sur une page quelconque Afficher les derniers posts phpBB sur une page quelconque

Formation recommandée sur ce thème :

Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités