Index
Forums
Annuaire
Référencement
Télécharger
  phpBB SEO : Référencement Google, MSN, Yahoo, Annuaires, Forums  
phpBB SEO
Boards
Directory  
SEO  
Downloads
 
  Rechercher Search
    S'enregistrer
Pseudo :  Passe :  Auto  
Register  
 
   
Derniers posts ac infos diverses et premiers mots :[u] :-/ ?
Aller à la page 1, 2, 3, 4, 5, 6  Suivante
 
Poster un nouveau sujet   Répondre au sujet    phpBB SEO » Forum Référencement  » TooLkit phpBB SEO  » MODS phpBB SEO
::  
Auteur Message
yazerty
PR1
PR1


Inscrit le: 30 Oct 2006
Messages: 173

Derniers posts ac infos diverses et premiers mots :[u] :-/ ?Posté le: Mar Oct 31, 2006 11:28 am    Sujet du message: Derniers posts ac infos diverses et premiers mots :[u] :-/ ?

Bonjour,

Je souhaite afficher les 10 derniers sujets postés sur mon forum de la manière suivante :

Citation:

Titre du sujet, par Auteur, le Jour XX Mois 2006 :
350 premiers caractères du sujet posté (...)
Auteur-de-la-réponse a posté la dernière réponse (il y a xx réponses en tout)



Grâce au code suivant :

Code:

<?php

// Connexion à la bdd
"(trululu...)
   
// Sélection des 10 derniers posts
$sql = "SELECT TP.topic_id, TP.topic_title, TP.topic_replies, PT.post_text
FROM phpbb_topics TP
INNER JOIN phpbb_posts_text PT
ON TP.topic_id = PT.post_id
GROUP BY TP.topic_id
ORDER BY TP.topic_id DESC
LIMIT 10";
$req = mysql_query($sql) or die(mysql_error());

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

// Extrait du post
$post = $db_data['post_text'];
$max_caracteres = 350;
if (strlen($post)>$max_caracteres) {
   $max_caracteres=strrpos(substr($post, 0, $max_caracteres), " ");
   $post = substr($post, 0, $max_caracteres);
   $post .= " (...)";
}

echo "<p><a href=\"url.com?id=".$db_data['topic_id']."\">".$db_data['topic_title']."</a><br />
$post</p>";

}

// Fermeture de la connexion à la bdd
mysql_close();
?>


J'arrive pour le moment à afficher :

Citation:

Le ballon rouge
[u:78da08f766][i:78da08f766]Ce rêve et ses interprétations font partie des archives de la Boîte à rêves. C'est ce qui explique leur présentation spécifique. Vous pouvez toutefois continuer la discussion en répondant normalement...[/i:78da08f766][/u:78da08f766] Le samedi 01 janvier 2005 à 20:07 Un rêveur anonyme a confié le rêve suivant à la (...)


Le problème qui m'est pour le moment posé ce sont ces
"[u:78da08f766][i:78da08f766]" qui semblent correspondent aux balises [ u ] et [ i ] présentes au début d'une bonne partie de mes posts.

Je ne sais absolument pas comment gérer la chose. Je ne suis pas vraiment un pro en php/mysql. Je comprends à peu près les choses de base on va dire Wink.

Pourriez-vous m'aidez svp ?

_________________
L'insolite Yazerty.Net - Interprétation et signification des rêves
Revenir en haut de page
Visiter le site web de l'utilisateur
dcz
Administrateur - Site Admin
Administrateur - Site Admin


Inscrit le: 28 Avr 2006
Messages: 13354

Derniers posts ac infos diverses et premiers mots :[u] :-/ ?Posté le: Mer Nov 01, 2006 12:14 pm    Sujet du message: Re: Derniers posts ac infos diverses et premiers mots :[u] :-/ ?

En fait, tu sort le contenu des messages directement, sans parser les bbcodes etc.

Le truc, c'est que pour pouvoir le faire sans trop ajouter de code, le mieux est encore de puiser dans les fonction de phpBB, il nous faut donc partager les sessions entre cette page et le forum.

Je vais jeter un oeil à tout ça Wink

++

_________________
Useful links :
SEO Forum || SEO Directory || SEO phpBB || SEO phpBB3 || Search
____________________

Liens Utiles :
Forum référencement || Annuaire référencement || Référencement phpBB || Référencement phpBB3 || Recherche
Revenir en haut de page
Visiter le site web de l'utilisateur
yazerty
PR1
PR1


Inscrit le: 30 Oct 2006
Messages: 173

Derniers posts ac infos diverses et premiers mots :[u] :-/ ?Posté le: Mer Nov 01, 2006 3:25 pm    Sujet du message: Re: Derniers posts ac infos diverses et premiers mots :[u] :-/ ?

Il y aurait pas tout simplement (?) moyen de tout simplement supprimer ces balises de mises en forme ? En php il existerait une fonction pour faire ça ? J'ai regardé mais le problème c'est qu'il n'y a pas le même nombre de chiffres à chaque fois apparemment (9 ou 10 en moyenne), non ? D'ailleurs à quoi servent donc ces chiffres étranges :- ?

Car c'est ce que je veux au final : juste le texte brut, avec les saut de ligne (pour garder une présentation homogène sur la page qui affichera ces derniers sujets avec des "infos étendues").

_________________
L'insolite Yazerty.Net - Interprétation et signification des rêves
Revenir en haut de page
Visiter le site web de l'utilisateur
dcz
Administrateur - Site Admin
Administrateur - Site Admin


Inscrit le: 28 Avr 2006
Messages: 13354

Derniers posts ac infos diverses et premiers mots :[u] :-/ ?Posté le: Mer Nov 01, 2006 5:14 pm    Sujet du message: Re: Derniers posts ac infos diverses et premiers mots :[u] :-/ ?

C'est un solution aussi.
Ces chiffres étranges sont le BBcodeUid de chaque message.
C'est vrai qu'on pourrait les enlever avec une expression régulière.

En cache ça donnerait :

Code:
$post = preg_replace('/\:[0-9a-z\:]+\]/si', ']', $post);


Pour se retrouver avec seulement des bbcode sans leur bbcodeUid, ou :

Code:
$post = preg_replace("(\[.*\])U","",$post );

Pour retirer tout ce qui se trouve entre "[" et "]" dans le message, dont les BBcodes. Je veux dire que cela pourrait aussi tronquer du vrai texte qui se trouverait entre ces deux caractères.

Et pour le résumé, si tu veux t'assurer de ne pas casser de BBcodes, qui se trouveraient à cheval sur la limite et ne serait du coup pas filtrés, tu peut utiliser cette fonction bien pratique :

Code:

// Borrowed from www.php.net http://www.php.net/strtok
function summarize($paragraph, $limit){
   $tok = strtok($paragraph, " ");
   $text="";
   $words='0';
   while($tok){
      $text .= " ".$tok;
      $words++;
      if(($words >= $limit) && ((substr($tok, -1) == "!")||(substr($tok, -1) == ".")))
         break;
      $tok = strtok(" ");
   }
   return ltrim($text);
}


Cette fonction limite la sortie en nombre de phrases.

Et il faudrait un petit coup de :

Code:
$post = strip_tags($post);


Pour retirer toutes les balise html éventuelles.

Dans l'ordre ça pourrait donner :
Code:

$max_phrases = 3;
$post = summarize($post, $max_phrases);
$post = strip_tags($post);


Suivit d'une des deux façon de traiter les bbcodes.

++

_________________
Useful links :
SEO Forum || SEO Directory || SEO phpBB || SEO phpBB3 || Search
____________________

Liens Utiles :
Forum référencement || Annuaire référencement || Référencement phpBB || Référencement phpBB3 || Recherche
Revenir en haut de page
Visiter le site web de l'utilisateur
yazerty
PR1
PR1


Inscrit le: 30 Oct 2006
Messages: 173

Derniers posts ac infos diverses et premiers mots :[u] :-/ ?Posté le: Mer Nov 01, 2006 5:36 pm    Sujet du message: Re: Derniers posts ac infos diverses et premiers mots :[u] :-/ ?

Ah vi, en expressions régulières Smile. J'y connais vraiment rien dans ces trucs là, merci pour le code Smile !

J'ai opté pour un mix qui me parait remplir les 2 conditions (supprimer les bbcodes sans supprimer les éventuels autres choses contenues dans des []) :

Code:
// Traitement des variables alphanumériques des bbcodes
$post = preg_replace('/\:[0-9a-z\:]+\]/si', ']', $post);

// Suppression des bbcodes (liste des bbcodes à compléter)
$bbcodes = array("[u]", "[/u]", "[i]", "[/i]");
$post = str_replace($bbcodes, "", "$post");


Par contre je me suis planté dans ma requête SQL, elle ne me donne pas le texte des derniers sujets Confused . Faut que je vois ça de plus près...

_________________
L'insolite Yazerty.Net - Interprétation et signification des rêves
Revenir en haut de page
Visiter le site web de l'utilisateur
dcz
Administrateur - Site Admin
Administrateur - Site Admin


Inscrit le: 28 Avr 2006
Messages: 13354

Derniers posts ac infos diverses et premiers mots :[u] :-/ ?Posté le: Mer Nov 01, 2006 5:48 pm    Sujet du message: Re: Derniers posts ac infos diverses et premiers mots :[u] :-/ ?

Bonne idée pour les BBcode Wink

Et pour ta requête, un truc comme ça plutôt :

Code:
$sql = "SELECT t.*, pt.*
   FROM phpbb_topics AS t, phpbb_posts_text AS pt
      WHERE t.topic_status <> 2
         AND pt.post_id = t.topic_last_post_id
   ORDER BY p.post_id DESC LIMIT 10";


Doit pas être très loin du but Wink

++

_________________
Useful links :
SEO Forum || SEO Directory || SEO phpBB || SEO phpBB3 || Search
____________________

Liens Utiles :
Forum référencement || Annuaire référencement || Référencement phpBB || Référencement phpBB3 || Recherche
Revenir en haut de page
Visiter le site web de l'utilisateur
yazerty
PR1
PR1


Inscrit le: 30 Oct 2006
Messages: 173

Derniers posts ac infos diverses et premiers mots :[u] :-/ ?Posté le: Mer Nov 01, 2006 8:04 pm    Sujet du message: Re: Derniers posts ac infos diverses et premiers mots :[u] :-/ ?

Ah vi, topic_first_post_id m'a aidé (topic_last_post_id serait si je voulais afficher les derniers posts, ou les sujets ayant reçu dernièrement des posts, je veux afficher les derniers sujets sans tenir compte des derniers posts).

Voici à quoi j'aboutis pour le moment

Code:
// Sélection des 5 derniers posts
$sql = "SELECT TP.topic_id, TP.topic_title, TP.topic_replies, PT.post_text, US.username, PST.post_username

FROM phpbb_topics TP

INNER JOIN phpbb_posts_text PT, phpbb_users US, phpbb_posts PST
ON TP.topic_first_post_id = PT.post_id AND US.user_id = TP.topic_poster AND PST.poster_id = TP.topic_poster

GROUP BY TP.topic_id
ORDER BY TP.topic_id DESC
LIMIT 5";
$req = mysql_query($sql) or die(mysql_error());

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

// Extrait du post
$post = $db_data['post_text'];
$max_caracteres = 350;
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('/\:[0-9a-z\:]+\]/si', ']', $post);

// Suppression des bbcodes
$bbcodes = array("[u]", "[/u]", "[i]", "[/i]");
$post = str_replace($bbcodes, "", "$post");

// Traitement du nom de l'auteur
$auteur = $db_data['username'];
if ($auteur == 'Anonymous') {
   if ($db_data['post_username'] == '') {
      $auteur = 'un anonyme';
   }
   else {
      $auteur = $db_data['post_username'];
   }
}

echo "<p><a href=\"http://www.boiteareves.com/reve/topic".$db_data['topic_id'].".html\">".$db_data['topic_title'].", par $auteur, le </a><br />
$post</p>";

}


Par contre mon traitement de $auteur est mauvais. Je ne comprends pas pourquoi. Si vous voyez (?)...

J'avais une petite question sinon.

post_time (dans la table phpbb_posts) retourne l'heure courante, mesurée en secondes depuis le début de l'époque UNIX, (1er janvier 1970 00:00:00 GMT). Mais auriez-vous une petite fonction sous le coude qui permette de transformer ça en heure française compréhensible Wink ?

Je fouille dans les fichiers de phpbb mais pour le moment je ne trouve pas Rolling Eyes ...

_________________
L'insolite Yazerty.Net - Interprétation et signification des rêves
Revenir en haut de page
Visiter le site web de l'utilisateur
dcz
Administrateur - Site Admin
Administrateur - Site Admin


Inscrit le: 28 Avr 2006
Messages: 13354

Derniers posts ac infos diverses et premiers mots :[u] :-/ ?Posté le: Jeu Nov 02, 2006 8:30 am    Sujet du message: Re: Derniers posts ac infos diverses et premiers mots :[u] :-/ ?

La tu classe les sujets par leur ID, je te proposait par dernière modif, mais c'est comme tu veux.

Pour la fonction, gmdate Wink

_________________
Useful links :
SEO Forum || SEO Directory || SEO phpBB || SEO phpBB3 || Search
____________________

Liens Utiles :
Forum référencement || Annuaire référencement || Référencement phpBB || Référencement phpBB3 || Recherche
Revenir en haut de page
Visiter le site web de l'utilisateur
yazerty
PR1
PR1


Inscrit le: 30 Oct 2006
Messages: 173

Derniers posts ac infos diverses et premiers mots :[u] :-/ ?Posté le: Jeu Nov 02, 2006 9:02 am    Sujet du message: Re: Derniers posts ac infos diverses et premiers mots :[u] :-/ ?

Merci, je vais voir cette fonction gmdate() Smile...

Mmm et j'ai encore un petit problème avec mes filtrages de texte : les bbcodes avec des paramètres genre url=, list=, etc. Dans le cas d'un url= par exemple, l'url reste dans le bbcode et n'est donc pas supprimé lors de mon str replace :/.

J'ai tenté de simili-modifier ton regex, mais en vain, je ne comprends rien à ces trucs. D'ailleurs aurais-tu une bonne adresse pour apprendre un peu ces trucs ^^ ?

Code:
// Traitement des variables alphanumériques des bbcodes
$post = preg_replace('/\:[0-9a-z\:]+\]/si', ']', $post);
$post = preg_replace('=:[0-9a-z\:]+\]/si', ']', $post);

// Suppression des bbcodes
$bbcodes = array("[u]", "[/u]", "[i]", "[/i]", "[u]", "[/u]", "[quote]", "[/quote]", "[code]", "[/code]", "[list]", "[/list]", "[list=]", "[/list]", "[img]", "[/img]", "[url]", "[/url]");
$post = str_replace($bbcodes, "", "$post");

_________________
L'insolite Yazerty.Net - Interprétation et signification des rêves
Revenir en haut de page
Visiter le site web de l'utilisateur
dcz
Administrateur - Site Admin
Administrateur - Site Admin


Inscrit le: 28 Avr 2006
Messages: 13354

Derniers posts ac infos diverses et premiers mots :[u] :-/ ?Posté le: Jeu Nov 02, 2006 9:25 am    Sujet du message: Re: Derniers posts ac infos diverses et premiers mots :[u] :-/ ?

C'est pour cela que c'est pratique de retirer tout ce qui se trouve entre "[" et "]".

Pour les Reg-Ex : http://www.expreg.com/

++

_________________
Useful links :
SEO Forum || SEO Directory || SEO phpBB || SEO phpBB3 || Search
____________________

Liens Utiles :
Forum référencement || Annuaire référencement || Référencement phpBB || Référencement phpBB3 || Recherche
Revenir en haut de page
Visiter le site web de l'utilisateur
yazerty
PR1
PR1


Inscrit le: 30 Oct 2006
Messages: 173

Derniers posts ac infos diverses et premiers mots :[u] :-/ ?Posté le: Jeu Nov 02, 2006 9:50 am    Sujet du message: Re: Derniers posts ac infos diverses et premiers mots :[u] :-/ ?

Merci Smile. Je garde précieusement cette adresse qui a l'air d'être assez fournie en articles explicatifs...

De mon côté je vais simplifier ma chose.

Merci pour toute ton aide !

_________________
L'insolite Yazerty.Net - Interprétation et signification des rêves
Revenir en haut de page
Visiter le site web de l'utilisateur
dcz
Administrateur - Site Admin
Administrateur - Site Admin


Inscrit le: 28 Avr 2006
Messages: 13354

Derniers posts ac infos diverses et premiers mots :[u] :-/ ?Posté le: Jeu Nov 02, 2006 8:02 pm    Sujet du message: Re: Derniers posts ac infos diverses et premiers mots :[u] :-/ ?

Regardes aussi bbcode.php et bbcode.tpl pour de belles expressions-régulières qui choppent le = des [liste=...] etc ...

A mon avis avec un ou deux tests et de la bonne volonté, c'est vite réglé Wink

_________________
Useful links :
SEO Forum || SEO Directory || SEO phpBB || SEO phpBB3 || Search
____________________

Liens Utiles :
Forum référencement || Annuaire référencement || Référencement phpBB || Référencement phpBB3 || Recherche
Revenir en haut de page
Visiter le site web de l'utilisateur
KeusssiX
PR0
PR0


Inscrit le: 27 Oct 2006
Messages: 67
Localisation: Lille, 59 France

Derniers posts ac infos diverses et premiers mots :[u] :-/ ?Posté le: Ven Nov 03, 2006 5:58 pm    Sujet du message: Re: Derniers posts ac infos diverses et premiers mots :[u] :-/ ?

pas de problème pour installer le code de yazerty, mais...

dans le code de dcz :
Code:
// Suppression des bbcodes (liste des bbcodes à compléter)
$bbcodes = array("[u]", "[/u]", "[i]", "[/i]");
$post = str_replace($bbcodes, "", "$post");

je n'arrive pas à inclure les bbcodes tel que [color=][/color], etc. je ne dois quand même pas écrire chaque couleur ? et qu'en est-il des autres bbcodes (tel que quote, list, etc) ?

et le code est incomplet, il manque la date du post : posté le ... (la variable n'est pas definie, ni affichée). j'ai bien essayé de l'écrire moi-même, mais c'est encore au dessus de mes compétences de débutant ! Rolling Eyes

si quelqu'un peut m'aider Very Happy

PS, j'ai juste changé TP.topic_first_post_id en TP.topic_last_post_id. mais comme il n'y a pas la date des posts, je ne sais pas si ce sont les derniers posts affichés !
Revenir en haut de page
Visiter le site web de l'utilisateur
KeusssiX
PR0
PR0


Inscrit le: 27 Oct 2006
Messages: 67
Localisation: Lille, 59 France

Derniers posts ac infos diverses et premiers mots :[u] :-/ ?Posté le: Ven Nov 03, 2006 6:16 pm    Sujet du message: Re: Derniers posts ac infos diverses et premiers mots :[u] :-/ ?

j'ai finalement réussi !
vérifiez s'il n'y a pas d'erreur !

(je ne suis pas sur pour le fuseau horaire. je suppose que la plupart des serveurs sont à GMT, donc j'ai ajouté 3600 pour GMT+1 qui est mon fuseau horaire)

voici ce que j'ai changé sur le code de yazerty :
Code:
$sql = "SELECT TP.topic_id, TP.topic_title, TP.topic_replies, TP.topic_time, PT.post_text, US.username, PST.post_username

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

echo "<p><a href=\"http://www.toutalamaison.com/forum/topic".$db_data['topic_id'].".html\">".$db_data['topic_title'].", par $auteur, le $news_time</a><br />
$post</p>";
Revenir en haut de page
Visiter le site web de l'utilisateur
KeusssiX
PR0
PR0


Inscrit le: 27 Oct 2006
Messages: 67
Localisation: Lille, 59 France

Derniers posts ac infos diverses et premiers mots :[u] :-/ ?Posté le: Sam Nov 04, 2006 12:33 pm    Sujet du message: Re: Derniers posts ac infos diverses et premiers mots :[u] :-/ ?

au fait, je me suis emballé, j'ai réussi à sortir l'heure et la formater, mais par contre je ne sais pas quoi faire pour enlever les bbcodes du texte qui font appel à des variables :
KeusssiX a écrit:
pas de problème pour installer le code de yazerty, mais...

dans le code de dcz :
Code:
// Suppression des bbcodes (liste des bbcodes à compléter)
$bbcodes = array("[u]", "[/u]", "[i]", "[/i]");
$post = str_replace($bbcodes, "", "$post");

je n'arrive pas à inclure les bbcodes tel que [color=][/color], etc. je ne dois quand même pas écrire chaque couleur ? et qu'en est-il des autres bbcodes (tel que quote, list, etc) ?
Revenir en haut de page
Visiter le site web de l'utilisateur
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    phpBB SEO » Forum Référencement  » TooLkit phpBB SEO  » MODS phpBB SEO
Page 1 sur 6 Aller à la page 1, 2, 3, 4, 5, 6  Suivante

Navigation Autres sujets de discussion

Sauter vers: