| |
|
| :: |
| Auteur |
Message |
dcz Administrateur - Site Admin

Inscrit le: 28 Avr 2006 Messages: 14854
|
Posté le: Sam Nov 04, 2006 7:05 pm Sujet du message: Re: Derniers posts ac infos diverses et premiers mots :[u] :-/ ? |
|
|
| dcz a écrit: | 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é  |
Tu as jeté un oeil ?
A mon avis il faut faire ça en plusieurs passes, c'est pour cela que la solution de tout virer est pas mal, tu utilises tant de "[" et de "] dans le corps de tes messages ?
Si oui, un autre caractères ne ferait-il pas l'affaire ?
| Code: | | $post = preg_replace("(\[.*\])U","",$post ); |
C'est simple pour tout faire d'un coup
++ |
_________________ 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 |
|
 |
|
 |
KeusssiX PR0

Inscrit le: 27 Oct 2006 Messages: 67 Localisation: Lille, 59 France
|
Posté le: Dim Nov 05, 2006 2:51 pm Sujet du message: Re: Derniers posts ac infos diverses et premiers mots :[u] :-/ ? |
|
|
oui, ben c'est nickel.
j'ai remis ton code :
| Code: | | $post = preg_replace("(\[.*\])U","",$post ); |
et pis voilà, c'est comme je veux
seulement si qqn utilise [] dans le corps de son message, mais je ne pense pas que sur un forum qui a pour thème la maison et les services, qqn ait besoin de ces symboles... et si ça arrive une fois, ce ne sera pas dramatique
merci dcz pour ton aide toujours rapide et précieuse.  |
|
|
| Revenir en haut de page |
|
 |
KeusssiX PR0

Inscrit le: 27 Oct 2006 Messages: 67 Localisation: Lille, 59 France
|
Posté le: Dim Nov 05, 2006 4:49 pm Sujet du message: Re: Derniers posts ac infos diverses et premiers mots :[u] :-/ ? |
|
|
bon, voici le code complet que j'utilise maintenant.
mais j'ai encore besoin d'aide...
je voudrais garder le titre du premier message posté, mais changer le nom et l'heure de celui qui a posté en premier, par le nom du dernier à avoir répondu et l'heure à laquelle il a répondu (si réponse il ya eu, sinon, évidemment laisser le nom et heure de celui qui a créé le post).
c'est possible ??
| Code: | // Sélection des 5 derniers posts
$sql = "SELECT TP.topic_id, TP.topic_title, TP.topic_replies, TP.topic_time, PT.post_text, US.username, PST.post_username
FROM forum_topics TP
INNER JOIN forum_posts_text PT, forum_users US, forum_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 = 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 );
// Suppression des bbcodes
$bbcodes = array("[u]", "[/u]", "[i]", "[/i]", "[color]", "[/color]");
$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'];
}
}
// 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 |
|
 |
dcz Administrateur - Site Admin

Inscrit le: 28 Avr 2006 Messages: 14854
|
Posté le: Lun Nov 06, 2006 8:36 am Sujet du message: Re: Derniers posts ac infos diverses et premiers mots :[u] :-/ ? |
|
|
tu n'as plus besoin de filtrer les bbcodes du coup, ils le sont déjà tous.
Et le nom de l'éventuel invité qui aurait pris le temps d'en mettre un est post_username dans la table phpbb_post, tu as simplement inversé username et post_username dans ton script du coup.
Et aussi, $lang['Guest'], c'est mieux que "un anonyme" non ?
++ |
_________________ 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 |
|
 |
KeusssiX PR0

Inscrit le: 27 Oct 2006 Messages: 67 Localisation: Lille, 59 France
|
Posté le: Lun Nov 06, 2006 6:20 pm Sujet du message: Re: Derniers posts ac infos diverses et premiers mots :[u] :-/ ? |
|
|
merci
code nettoyé* !
par contre sais tu comment le modifier pour :
| Citation: | je voudrais garder le titre du premier message posté et son contenu, mais changer le nom et l'heure de celui qui a posté en premier, par le nom du dernier à avoir répondu et l'heure à laquelle il a répondu (si réponse il ya eu, sinon, évidemment laisser le nom et heure de celui qui a créé le post).
c'est possible ?? |
*euh...enfin, j'ai essayé...
ok pour les bbcodes, j'ai supprimé les lignes superflus de suppression des bbcodes
ok pour le $lang, effectivement plus joli
par contre j'ai du mal avec cette partie là, je ne comprends pas les appels à la BD, que signifie les TP, PT, US et PST ? (et donc forcément, je ne sais pas faire la modif que je te demande ci dessus)
| Code: | $sql = "SELECT TP.topic_id, TP.topic_title, TP.topic_replies, TP.topic_time, PT.post_text, US.username, PST.post_username
FROM forum_topics TP
INNER JOIN forum_posts_text PT, forum_users US, forum_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 |
|
Dernière édition par KeusssiX le Lun Nov 06, 2006 6:32 pm; édité 1 fois |
|
| Revenir en haut de page |
|
 |
dcz Administrateur - Site Admin

Inscrit le: 28 Avr 2006 Messages: 14854
|
Posté le: Lun Nov 06, 2006 6:29 pm Sujet du message: Re: Derniers posts ac infos diverses et premiers mots :[u] :-/ ? |
|
|
Possible oui, mais un peut plus complexe, il faut sélectionner deux fois la table POST avec un p2.post_time as last_post_time, dans le select et une jointure supplémentaire sur p2.post_id = TP.topic_last_post_id.
Du coup si $db_data['last_post_time'] est supérieur à $db_data['post_time'] (le temps tu premier message) alors c'est lui que tu veux
++ |
_________________ 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 |
|
 |
KeusssiX PR0

Inscrit le: 27 Oct 2006 Messages: 67 Localisation: Lille, 59 France
|
Posté le: Lun Nov 06, 2006 6:38 pm Sujet du message: Re: Derniers posts ac infos diverses et premiers mots :[u] :-/ ? |
|
|
tu as répondu trop vite ! j'étais en train d'éditer mon message !
plus rapide que lucky lucke
je crois comprendre ce que tu dis, par contre, comme je viens de l'éditer, je ne sais pas comment appeler les données... |
|
|
| Revenir en haut de page |
|
 |
KeusssiX PR0

Inscrit le: 27 Oct 2006 Messages: 67 Localisation: Lille, 59 France
|
Posté le: Lun Nov 06, 2006 9:29 pm Sujet du message: Re: Derniers posts ac infos diverses et premiers mots :[u] :-/ ? |
|
|
| ++ |
|
|
| Revenir en haut de page |
|
 |
dcz Administrateur - Site Admin

Inscrit le: 28 Avr 2006 Messages: 14854
|
Posté le: Lun Nov 06, 2006 9:59 pm Sujet du message: Re: Derniers posts ac infos diverses et premiers mots :[u] :-/ ? |
|
|
lol, évites les doubles post tout de même
Donc, les PT, TP etc sont des alias (raccourcis) pour associer une valeur que l'on demande (par le select) à une table, ce qui est utile vu que l'on en sélectionne plus d'une.
TP.topic_title est associé à FROM forum_topics TP, ou en version plus longue FROM forum_topics AS TP.
en fait je croyais que tu préférais les INNER JOIN à ma requête, et que donc tu t'en sortais
Du coup :
| Code: | $sql = "SELECT t.*, p.*, pt.*, p2.post_time AS last_post_time, p2.post_username AS last_post_username
FROM phpbb_topics AS t, phpbb_posts AS p, phpbb_posts_text AS pt, phpbb_posts AS p2
WHERE t.topic_status <> 2
AND p.post_id = t.topic_first_post_id
AND pt.post_id = t.topic_first_post_id
AND p2.post_id = t.topic_last_post_id
ORDER BY p.post_id DESC LIMIT 10"; |
C'est classé par ordre de dernière réponse et limité à 10 messages, tu peux modifier.
Avec ça, tu aura $db_data['last_post_time'] et $db_data['last_post_username'] pour comparer avec $db_data['post_time'] et $db_data['post_username'] (les données du premier message).
Mais tu n'as que le contenu du premier message.
++ |
_________________ 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 |
|
 |
KeusssiX PR0

Inscrit le: 27 Oct 2006 Messages: 67 Localisation: Lille, 59 France
|
Posté le: Mar Nov 07, 2006 1:54 am Sujet du message: Re: Derniers posts ac infos diverses et premiers mots :[u] :-/ ? |
|
|
ok et désolé
donc voici mon code finalement.
par contre, je ne comprends pas, cela sort bien la date du dernier post (le premier par défaut), là pas de souci,
mais pas moyen d'avoir un auteur... rien ne sort avec ce code ???
pourtant, je n'arrive pas à voir la faille...
PS : est-ce que le lien ne crée pas un duplicate ?
le lien est de la forme topicXX.html, qui correspond à titre_du_topic.vtXX.html, ça fait 2 liens affichés pour une seule page ?
| Code: | // Sélection des 5 derniers posts
$sql = "SELECT t.*, p.*, pt.*, p2.post_time AS last_post_time, p2.post_username AS last_post_username
FROM forum_topics AS t, forum_posts AS p, forum_posts_text AS pt, forum_posts AS p2
WHERE t.topic_status <> 2
AND p.post_id = t.topic_first_post_id
AND pt.post_id = t.topic_first_post_id
AND p2.post_id = t.topic_last_post_id
ORDER BY p.post_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 = 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
$auteur = $db_data['username'];
if ($auteur == 'Anonymous') {
if ($db_data['last_post_username'] == '') {
$auteur = $lang['Guest'];
}
else {
$auteur = $db_data['last_post_username'];
}
}
// Traitement de la date post
$news_time = gmdate("d M Y \à H:i:s", $db_data['last_post_time']+(3600));
// Traitement des réponses
$nombre = $db_data['topic_replies'];
$reponses = $lang['Replies'];
echo "<p align=\"left\"><a href=\"http://www.toutalamaison.com/forum/topic".$db_data['topic_id'].".html\">".$db_data['topic_title'].", <span class=\"Style100\">par $auteur, le $news_time ($nombre $reponses)</span></a><br />
$post</p>";
} |
|
|
|
| Revenir en haut de page |
|
 |
dcz Administrateur - Site Admin

Inscrit le: 28 Avr 2006 Messages: 14854
|
Posté le: Mar Nov 07, 2006 10:04 am Sujet du message: Re: Derniers posts ac infos diverses et premiers mots :[u] :-/ ? |
|
|
Erf, ils faudrait encore ajouter un select sur la table user pour ça.
Ça alourdit un peut :
| Code: | $sql = "SELECT t.*, p.*, pt.*, p2.post_time AS last_post_time, p2.post_username AS last_post_username, u.username
FROM phpbb_topics AS t, phpbb_posts AS p, phpbb_posts_text AS pt, phpbb_posts AS p2, phpbb_users as u
WHERE t.topic_status <> 2
AND p.post_id = t.topic_first_post_id
AND pt.post_id = t.topic_first_post_id
AND p2.post_id = t.topic_last_post_id
AND u.user_id = t.topic_first_post_id
ORDER BY p.post_id DESC LIMIT 10"; |
Et là tu peux, si post_username est vide, mettre $db_data['username'] à la place
++ |
_________________ 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 |
|
 |
KeusssiX PR0

Inscrit le: 27 Oct 2006 Messages: 67 Localisation: Lille, 59 France
|
Posté le: Mar Nov 07, 2006 12:45 pm Sujet du message: Re: Derniers posts ac infos diverses et premiers mots :[u] :-/ ? |
|
|
ayayaïe !
je ne comprends pas, j'ai essayé dans tous les sens, j'obtiens de droles de résultats :
les posts ne sont plus ordonnés par ordre du plus récent au plus vieux (je n'arrive pas à trouver la logique...)
et pire, si la date correspond à la date du dernier post du topic affiché, le nom sort de on ne sait où et ne correspond à rien ???
j'ai enlevé le cas du post d'un invité car je n'arrive déjà pas le cas normal, mais j'aimerais le réintégrer.
je conseille d'aller voir le résultat sur ma page d'accueil : www.toutalamaison.com (en bas "quoi de neuf sur le forum").
et voici le code que j'ai changé :
| Code: | $sql = "SELECT t.*, p.*, pt.*, p2.post_time AS last_post_time, p2.post_username AS last_post_username, u.username
FROM forum_topics AS t, forum_posts AS p, forum_posts_text AS pt, forum_posts AS p2, forum_users as u
WHERE t.topic_status <> 2
AND p.post_id = t.topic_first_post_id
AND pt.post_id = t.topic_first_post_id
AND p2.post_id = t.topic_last_post_id
AND u.user_id = t.topic_first_post_id
ORDER BY p.post_id DESC LIMIT 5"; |
| Code: | // Traitement du nom de l'auteur
$auteur = $db_data['post_username'];
if ($auteur == '') {
$auteur = $db_data['username'];
}
else {
$auteur = $db_data['post_username'];
} |
keskis passe ???
++ |
|
|
| Revenir en haut de page |
|
 |
yazerty PR1

Inscrit le: 30 Oct 2006 Messages: 173
|
Posté le: Mar Nov 07, 2006 4:01 pm Sujet du message: Re: Derniers posts ac infos diverses et premiers mots :[u] :-/ ? |
|
|
So,
Après un petit débug de mon code, voilà mon code pour afficher les 5 derniers posts de tous les forums.
Je crois que c'est à peu près ce que tu veux. Il te suffira de rajouter l'affichage des réponses, que j'ai supprimé de mon code (mais facile à remettre) , non ?
| Code: | <?php
// Connexion à la BDD
$db = mysql_connect('xxx', 'xxx', 'xxx');
mysql_select_db('xxx',$db);
// Sélection des 5 derniers posts
$sql = "SELECT TP.topic_id, TP.topic_title, PT.post_text, PST.post_time, PST.poster_id, PST.post_username, US.username
FROM phpbb_topics TP, phpbb_posts_text PT, phpbb_posts PST, phpbb_users US
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
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)) {
// Titre du post
$post_title = "<a href=\"http://www.boiteareves.com/reve/topic".$db_data['topic_id'].".html\">".$db_data['topic_title']."</a>";
// Extrait du post
$post = $db_data['post_text'];
$max_caracteres = 400;
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/membre".$db_data['poster_id']).".html\" class=\"nav\" >".$db_data['username']."</a>";
}
else {
$poster = $db_data['post_username'];
}
// Traitement de la date du post, affichage en joli français
setlocale(LC_TIME, 'fr_FR');
$post_time = strftime("%A %e %B à %H:%M", $db_data['post_time']+(0));
echo "<p align=\"left\">$post_title, par $poster, le $post_time<br />
$post</p>";
}
?> |
Cela donne ce résultat, avec un lien sur le nom du sujet et un autre sur le nom de l'auteur du sujet (et non de la dernière réponse - debug) vers son profil :
| Citation: | Les invités doivent entrer leur nom, par yazerty, le jeudi 2 novembre à 13:08
Suite à un sujet sur lequel il y avait des "invités" qui répondaient à des "invités", j'ai décidé de mettre en place un système obligeant les personnes qui proposent des rêves et des interprétations à donner un "nom d'utilisateur" (pseudonyme). Si cela n'est pas concluant, nous serons contrait de mettre en place un système obligeant les personnes souhaitant (...) |
Par contre je me suis rendu compte que ni dans mon code ni dans le code last active topics dont on parle ici, les url vers les profils des membres ne sont url rewrités. J'ai feinté, mais je trouve ça moyen, pas propre. Car cela correspond uniquement à un rewriting phpbb SEO simple, et ce n'est donc pas immédiatement adapté pour les 3 solutions de rewritting phpbb SEO...
Pour ça je suis complètement incompétent et dcz serait le bienvenu ... |
_________________ L'insolite Yazerty.Net - Interprétation et signification des rêves |
|
| Revenir en haut de page |
|
 |
dcz Administrateur - Site Admin

Inscrit le: 28 Avr 2006 Messages: 14854
|
|
| Revenir en haut de page |
|
 |
yazerty PR1

Inscrit le: 30 Oct 2006 Messages: 173
|
Posté le: Mar Nov 07, 2006 6:19 pm Sujet du message: Re: Derniers posts ac infos diverses et premiers mots :[u] :-/ ? |
|
|
Mm mais il ne s'agit pas de topic anywhere mais d'un script totalement indépendant à placer sur n'importe quelle page du site :/.
Ce que je ne comprends pas c'est que ça passe par le append_sid(), qui est censé être utilisé pour le rewrite made in phpbb SEO si je me rappelle bien. So, ça devrait marcher de base, non ? |
_________________ L'insolite Yazerty.Net - Interprétation et signification des rêves |
|
| Revenir en haut de page |
|
 |
|
|
| Navigation |
Autres sujets de discussion |
|
|
|
|
|
|
|