Derniers posts ac infos diverses et premiers mots :[u] :-/ ?

Forum consacré aux codes conseillés ou mis à disposition sur phpBB SEO. Support, téléchargements, conseils ...

Modérateur: Modérateurs

Messagede KeusssiX » Sam Nov 25, 2006 4:08 pm

bon, finalement, je n'ai changé que cela et tout fonctionne :

Code: Tout sélectionner
$post_title = "<a href=\"".append_sid("http://www.toutalamaison.com/forum/". format_url($db_data['topic_title']) . '-vt'.$db_data['topic_id']).".html\">".$db_data['topic_title']."</a>";


apparemment, de mettre le chemin vers include faisait foirer le script, et ça marche très bien comme ça : en utilisant ce script placé dans toutes les pages hors forum. pourquoi tout le monde ne l'utilise pas ?
Code: Tout sélectionner
define('IN_PHPBB', true);
$phpbb_root_path = './forum/';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);

//
// Start session management
//
$userdata = session_pagestart($user_ip, PAGE_SITE);
init_userprefs($userdata);
//
// End session management
//


il n'y a que les règles de censure que je n'ai pas appliqué. je ne comprends pas bien l'utilité. à priori, les messages affichés existent déjà, et sont rewrités partout comme ça. donc pourquoi y appliquer une censure juste ici ? cela ne créerai pas de duplicate ? (ou alors je n'ai rien compris, ce qui est bien possible :D
KeusssiX
PR0
PR0
 
Messages: 67
Inscription: Ven Oct 27, 2006 4:33 pm
Localisation: Lille, 59 France

Publicité

Messagede dcz » Sam Nov 25, 2006 4:24 pm

Pour la censure, c'est juste que si quelqu'un poste un message avec des vilenies dans le titres, elle seront filtrées partout sur le forum (url et titre) et pas sur l'index, mais c'est pas hyper grave.

La probabilité qu'un tel message perdure étant tout de même faible sur un forum un minimum actif.

++
Useful links :
SEO Forum || SEO Directory || SEO phpBB || Search
____________________

Liens Utiles :
Forum référencement || Annuaire référencement || Référencement phpBB || Recherche
dcz
Admin
Admin
 
Messages: 21407
Inscription: Ven Avr 28, 2006 9:03 pm

Messagede doudou » Sam Nov 25, 2006 6:37 pm

bon j'ai fait un test mais je crois que les préfixes des tables posent un probleme:
Code: Tout sélectionner
<?php
$connection=mysql_connect("mysql","xxx","xxx");
mysql_select_db("xxxx");
include 'forum/includes/functions.php';


// Sélection des 5 derniers posts

#exception pour la page d'accueil
  $page = $_GET['page'];
  if ($page == 'accueil') {
     $nbr = 8; }
   else {
   $nbr = 5; }

$sql = "SELECT TP.topic_id, TP.topic_title, TP.topic_replies, PT.post_text, PST.post_time, PST.poster_id, PST.post_username, US.username, p2.post_time AS last_post_time, p2.post_username AS last_post_username

FROM phpbb_topics  TP, forum_posts_text PT, forum_posts PST, forum_users US, forum_posts AS p2

WHERE PT.post_id = TP.topic_first_post_id
AND PST.post_id = TP.topic_first_post_id
AND US.user_id = TP.topic_poster
         AND p2.post_id = TP.topic_last_post_id

GROUP BY TP.topic_id
ORDER BY TP.topic_id DESC
LIMIT $nbr";

$req = mysql_query($sql) or die(mysql_error());

// Boucle d'affichage du post
while($db_data = mysql_fetch_assoc($req)) {

// Titre du post
$post_title = "<a href=\"http://www.soninkara.org/forum/" . format_url(stripslashes($db_data['topic_title'])) . '-vt' . $db_data['topic_id'] . ".html\">" . $db_data['topic_title']."</a>";
// Extrait du post
$post = $db_data['post_text'];
$max_caracteres = 200;
if (strlen($post)>$max_caracteres) {
   $max_caracteres=strrpos(substr($post, 0, $max_caracteres), " ");
   $post = substr($post, 0, $max_caracteres);
   $post .= " (...)";
}

// Traitement des variables alphanumériques des bbcodes
$post = preg_replace("(\[.*\])U","",$post );

// Traitement du nom de l'auteur
if ($db_data['poster_id'] != '-1' ) {
   $poster = "<a href=\"".append_sid("$urlPath/forum/member".$db_data['poster_id']).".html\" class=\"nav\" >".$db_data['username']."</a>";
}
else {
   $poster = $db_data['post_username'];
}

// Traitement des réponses
$nombre = $db_data['topic_replies'];
$reponses = $lang['Replies'];
if ($nombre == 0) {
   $reponses = "";
   }
   else {
   $reponses = "($nombre $reponses)";
   }

// Traitement de la date du post
$post_time = gmdate("d M Y \à H:i:s", $db_data['last_post_time']+(3600));

echo "<p align=\"left\">$post_title, <span class=\"Style100\">par $poster, le $post_time $reponses</span><br />
$post</p>";

}
?>

quand je fais l'essai, je reçois l'erreur suivante:
Code: Tout sélectionner
Table 'dbase.forum_posts_text' doesn't exist

Pour mon forum, le préfixe des tables est phpbb_ , il est l'erreur ?
doudou
phpBB SEO Team
phpBB SEO Team
 
Messages: 340
Inscription: Dim Sep 17, 2006 6:26 pm
Localisation: Dans son Coeur...

Messagede dcz » Sam Nov 25, 2006 6:44 pm

Faudrait remplacer tous les forum_ par des phpbb_ dans les requêtes, mais bon, je suis pas certain que tel quel ce soit le meilleur script à utiliser.

Le mieux serait tout de même de partager la session et d'utiliser les fonction de phpBB pour faire tout ça.

++
Useful links :
SEO Forum || SEO Directory || SEO phpBB || Search
____________________

Liens Utiles :
Forum référencement || Annuaire référencement || Référencement phpBB || Recherche
dcz
Admin
Admin
 
Messages: 21407
Inscription: Ven Avr 28, 2006 9:03 pm

Messagede gowap » Sam Nov 25, 2006 8:30 pm

KeusssiX a écrit:apparemment, de mettre le chemin vers include faisait foirer le script

Alors c'est que le chemin donné dans l'include n'était pas bon, tout simplement, et donc ensuite la fonction format_url n'était pas définie.

et ça marche très bien comme ça : en utilisant ce script placé dans toutes les pages hors forum. pourquoi tout le monde ne l'utilise pas ?
Code: Tout sélectionner
define('IN_PHPBB', true);
$phpbb_root_path = './forum/';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);

//
// Start session management
//
$userdata = session_pagestart($user_ip, PAGE_SITE);
init_userprefs($userdata);
//
// End session management
//


Parce que tout le monde n'a pas envie de mettre en branle toute la machine phpBB pour rien.
common.php va charger tous les autres modules importants de phpBB : l'abstraction base de données, les autorisations et j'en passe. Si on est "hors forum", par définition on a pas besoin de gérer forcément tout ca car on affiche alors du contenu a des gens qui ne sont peut etre meme pas inscrits.
Il est inutile de faire parser autant de code a l'interpreteur php.
Quand on cherche un mot qui commence par la lettre R dans le dico, on va pas commencer a lire toutes les pages en "A", en "B", etc. jusqu'a "R", on va au but le plus rapidement possible, non ?
Gravure-News : la communauté francophone de la gravure de CD/DVD et son forum d'entraide.
Avatar de l’utilisateur
gowap
phpBB SEO Team
phpBB SEO Team
 
Messages: 1510
Inscription: Dim Mai 07, 2006 10:56 pm

Messagede dcz » Sam Nov 25, 2006 9:42 pm

C'est vrai.
Et une bonne partie de cette perte viens des fichiers langues. Mais bon, la classe d'abstraction pour la db, c'est pratique, et le petit passage par common .php à le mérite de filtrer deux ou trois trucs pour la sécurité de base.
A mon avis, la perte est pas énorme mais ça peut compter pour une très gros site pas très bien hébergé.

++
Useful links :
SEO Forum || SEO Directory || SEO phpBB || Search
____________________

Liens Utiles :
Forum référencement || Annuaire référencement || Référencement phpBB || Recherche
dcz
Admin
Admin
 
Messages: 21407
Inscription: Ven Avr 28, 2006 9:03 pm

Messagede KeusssiX » Dim Nov 26, 2006 1:34 am

hum, ok je comprends.
c'est à prendre en considération dès que l'on augmente fortement la fréquentation de son site sur un hébergeur moyen. :roll:
KeusssiX
PR0
PR0
 
Messages: 67
Inscription: Ven Oct 27, 2006 4:33 pm
Localisation: Lille, 59 France

Messagede dcz » Dim Nov 26, 2006 11:35 am

On ne parle que du tout début du déroulement du code de phpBB, ce qui prend vraiment du temps se passe après, quand il s'agit de chercher quoi mettre dans la page, le traiter et l'afficher.

Faudrait faire des tests, mais si tu n'affiches pas viewonline, cela ajoute deux requêtes sql, la config de phpBB et la session, à comparer avec , n'importe quel portail ...

Comme principe général, de faire léger est un must, mais il faut aussi prendre en compte la facilité de maniement et de code. Réutiliser à donf les même fonctions de base est une bonne pratique, beaucoup mieux que de répéter du code pour faire du sur mesure à tout prix.

En plus, si tu utilises des templates pour les pages ajoutées, tu peux faire du multilingue et du dynamique à pas cher en ressources et profiter du cache de xs mod sur tout le site. Il n'y a vraiment que dans le cas d'une page unique et sans interaction que l'économie a un sens, enfin, IMHO comme on dit :D.

++
Useful links :
SEO Forum || SEO Directory || SEO phpBB || Search
____________________

Liens Utiles :
Forum référencement || Annuaire référencement || Référencement phpBB || Recherche
dcz
Admin
Admin
 
Messages: 21407
Inscription: Ven Avr 28, 2006 9:03 pm

Messagede doudou » Dim Nov 26, 2006 5:05 pm

Salut
Bon j'ai changé les préfixes des tables et de ce côté c'est bom, mais j'ai un probleme sur
Code: Tout sélectionner
Fatal error: Call to undefined function: append_sid() in /mnt/sites/.../2.php on line 50

Le fichier de test est http://www.soninkara.org/2.php
Voici mon code en intégralité:
Code: Tout sélectionner
<?php
$connection=mysql_connect("xxx","xxx","xxx");
mysql_select_db("xxx");
include 'forum/includes/functions.php';


// Sélection des 5 derniers posts

#exception pour la page d'accueil
  $page = $_GET['page'];
  if ($page == 'accueil') {
     $nbr = 8; }
   else {
   $nbr = 5; }

$sql = "SELECT TP.topic_id, TP.topic_title, TP.topic_replies, PT.post_text, PST.post_time, PST.poster_id, PST.post_username, US.username, p2.post_time AS last_post_time, p2.post_username AS last_post_username

FROM phpbb_topics  TP, phpbb_posts_text PT, phpbb_posts PST, phpbb_users US, phpbb_posts AS p2

WHERE PT.post_id = TP.topic_first_post_id
AND PST.post_id = TP.topic_first_post_id
AND US.user_id = TP.topic_poster
         AND p2.post_id = TP.topic_last_post_id

GROUP BY TP.topic_id
ORDER BY TP.topic_id DESC
LIMIT $nbr";

$req = mysql_query($sql) or die(mysql_error());

// Boucle d'affichage du post
while($db_data = mysql_fetch_assoc($req)) {

// Titre du post
$post_title = "<a href=\"http://www.soninkara.org/forum/" . format_url(stripslashes($db_data['topic_title'])) . '-vt' . $db_data['topic_id'] . ".html\">" . $db_data['topic_title']."</a>";
// Extrait du post
$post = $db_data['post_text'];
$max_caracteres = 200;
if (strlen($post)>$max_caracteres) {
   $max_caracteres=strrpos(substr($post, 0, $max_caracteres), " ");
   $post = substr($post, 0, $max_caracteres);
   $post .= " (...)";
}

// Traitement des variables alphanumériques des bbcodes
$post = preg_replace("(\[.*\])U","",$post );

// Traitement du nom de l'auteur
if ($db_data['poster_id'] != '-1' ) {
   $poster = "<a href=\"".append_sid("$urlPath/forum/member".$db_data['poster_id']).".html\" class=\"nav\" >".$db_data['username']."</a>";
}
else {
   $poster = $db_data['post_username'];
}

// Traitement des réponses
$nombre = $db_data['topic_replies'];
$reponses = $lang['Replies'];
if ($nombre == 0) {
   $reponses = "";
   }
   else {
   $reponses = "($nombre $reponses)";
   }

// Traitement de la date du post
$post_time = gmdate("d M Y \à H:i:s", $db_data['last_post_time']+(3600));

echo "<p align=\"left\">$post_title, <span class=\"Style100\">par $poster, le $post_time $reponses</span><br />
$post</p>";

}
?>
doudou
phpBB SEO Team
phpBB SEO Team
 
Messages: 340
Inscription: Dim Sep 17, 2006 6:26 pm
Localisation: Dans son Coeur...

Messagede dcz » Dim Nov 26, 2006 5:33 pm

Remplaces :

Code: Tout sélectionner
"<a href=\"".append_sid("$urlPath/forum/member".$db_data['poster_id']).".html\"


Par :

Code: Tout sélectionner
"<a href=\"$urlPath/forum/member" . $db_data['poster_id'] . ".html\"


Il utilise pas les sessions ce script, mais il me semble que KeusssiX les partage ailleurs sur ça page.

++
Useful links :
SEO Forum || SEO Directory || SEO phpBB || Search
____________________

Liens Utiles :
Forum référencement || Annuaire référencement || Référencement phpBB || Recherche
dcz
Admin
Admin
 
Messages: 21407
Inscription: Ven Avr 28, 2006 9:03 pm

Messagede doudou » Dim Nov 26, 2006 5:39 pm

merci à dcz et à tous,
ça fonctionne et j'ai compris le fonctionnement.
doudou
phpBB SEO Team
phpBB SEO Team
 
Messages: 340
Inscription: Dim Sep 17, 2006 6:26 pm
Localisation: Dans son Coeur...

Messagede doudou » Dim Nov 26, 2006 5:50 pm

je me suis rendu compte que certains titre dessujets sont assez longs. Comment limiter le nombre de caractères des titres des sujets comme on l'a fait avec le texte des posts ?
doudou
phpBB SEO Team
phpBB SEO Team
 
Messages: 340
Inscription: Dim Sep 17, 2006 6:26 pm
Localisation: Dans son Coeur...

Messagede dcz » Dim Nov 26, 2006 6:01 pm

Trouves :
Code: Tout sélectionner
$post_title = "<a href=\"http://www.soninkara.org/forum/" . format_url(stripslashes($db_data['topic_title'])) . '-vt' . $db_data['topic_id'] . ".html\">" .$post_title = "<a href=\"http://www.soninkara.org/forum/" . format_url(stripslashes($db_data['topic_title'])) . '-vt' . $db_data['topic_id'] . ".html\">" . $db_data['topic_title']."</a>";


Remplace par :
Code: Tout sélectionner
// La limite en lettres
$max_titre = 15;
$titre_court = (strlen($db_data['topic_title'])>$max_titre) ? substr($db_data['topic_title'], 0, $max_titre) . "(...)" : $db_data['topic_title'];
$post_title = "<a href=\"http://www.soninkara.org/forum/" . format_url($db_data['topic_title']) . '-vt' . $db_data['topic_id'] . ".html\">" . $titre_court."</a>";


Tu changes :
Code: Tout sélectionner
$max_titre = 15;


Par la valeur limite souhaitée ;)

++
Useful links :
SEO Forum || SEO Directory || SEO phpBB || Search
____________________

Liens Utiles :
Forum référencement || Annuaire référencement || Référencement phpBB || Recherche
dcz
Admin
Admin
 
Messages: 21407
Inscription: Ven Avr 28, 2006 9:03 pm

Messagede doudou » Dim Nov 26, 2006 6:36 pm

Merci ça marche nickel.
Voici mon script dont j'ai mis une liste à puce pour ceux que ça interresserait:
Code: Tout sélectionner
<?php
$connection=mysql_connect("hote","user base de donnees","mot de passe");
mysql_select_db("nom bd");
include 'forum/includes/functions.php';


// Sélection des 5 derniers posts

#exception pour la page d'accueil
  $page = $_GET['page'];
  if ($page == 'accueil') {
     $nbr = 8; }
   else {
   $nbr = 10; }

$sql = "SELECT TP.topic_id, TP.topic_title, TP.topic_replies, PT.post_text, PST.post_time, PST.poster_id, PST.post_username, US.username, p2.post_time AS last_post_time, p2.post_username AS last_post_username

FROM phpbb_topics  TP, phpbb_posts_text PT, phpbb_posts PST, phpbb_users US, phpbb_posts AS p2

WHERE PT.post_id = TP.topic_first_post_id
AND PST.post_id = TP.topic_first_post_id
AND US.user_id = TP.topic_poster
         AND p2.post_id = TP.topic_last_post_id

GROUP BY TP.topic_id
ORDER BY TP.topic_id DESC
LIMIT $nbr";

$req = mysql_query($sql) or die(mysql_error());

// Boucle d'affichage du post
while($db_data = mysql_fetch_assoc($req)) {

// Titre du post
// La limite en lettres
$max_titre = 50;
$titre_court = (strlen($db_data['topic_title'])>$max_titre) ? substr($db_data['topic_title'], 0, $max_titre) . "(...)" : $db_data['topic_title'];
$post_title = "<a href=\"http://www.soninkara.org/forum/" . format_url($db_data['topic_title']) . '-vt' . $db_data['topic_id'] . ".html\">" . $titre_court."</a>";
// Extrait du post
$post = $db_data['post_text'];
$max_caracteres = 100;
if (strlen($post)>$max_caracteres) {
   $max_caracteres=strrpos(substr($post, 0, $max_caracteres), " ");
   $post = substr($post, 0, $max_caracteres);
   $post .= " (...)";
}

// Traitement des variables alphanumériques des bbcodes
$post = preg_replace("(\[.*\])U","",$post );

// Traitement du nom de l'auteur
if ($db_data['poster_id'] != '-1' ) {
   $poster = "<a href=\"$urlPath/forum/member" . $db_data['poster_id'] . ".html\" class=\"nav\" >".$db_data['username']."</a>";
}
else {
   $poster = $db_data['post_username'];
}

// Traitement des réponses
$nombre = $db_data['topic_replies'];
$reponses = $lang['Replies'];
if ($nombre == 0) {
   $reponses = "";
   }
   else {
   $reponses = "($nombre $reponses)";
   }

// Traitement de la date du post
$post_time = gmdate("d M Y \à H:i:s", $db_data['last_post_time']+(3600));

echo "<ul> <li>$post_title, <span class=\"Style100\">par $poster, le $post_time $reponses</span><br>
$post</li></ul>";

}
?>
doudou
phpBB SEO Team
phpBB SEO Team
 
Messages: 340
Inscription: Dim Sep 17, 2006 6:26 pm
Localisation: Dans son Coeur...

Messagede KeusssiX » Dim Nov 26, 2006 7:21 pm

au passage pour les débutants qui passent, ceci est destiné à modifier le nombre de messages affichés selon la page en cours.
donc ce n'est pas nécessaire pour tous le monde
(mes pages sont de la forme .php?page=nom_page et je ne voulais que 8 messages sur ma page d'accueil).

donc si vous voulez changez le nombre de messages selon la page, modifiez en conséquence :
Code: Tout sélectionner
// Sélection des 5 derniers posts

#exception pour la page d'accueil
  $page = $_GET['page'];
  if ($page == 'accueil') {
     $nbr = 8; }
   else {
   $nbr = 10; }

ps : ce titre "Sélection des 5 derniers posts" est à changer en conséquence pour que tout soit beau ;)

si on veut le même nombre de messages sur toutes les pages, il faut nettoyer le code au dessus et simplement tout remplacer par :
Code: Tout sélectionner
// Sélection des 5 derniers posts
$nbr = 5;
KeusssiX
PR0
PR0
 
Messages: 67
Inscription: Ven Oct 27, 2006 4:33 pm
Localisation: Lille, 59 France

PrécédenteSuivante

Retourner vers MODS phpBB2 SEO

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

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