[phpbb] script pour afficher les derniers topic sur l'indexe

WRInaute discret
je vien de bricoler un script pour aficher les derniers topics rewrité sur ma page d'acceuil
et dire que tout le monde l'utilise mais personne le donne :!:

db.php a configuré suivant le serveur
<?php
$serveur = 'localhost';
$pseudo = 'root';
$pass = '';
$base = '';
?>

forum.php
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<?php
require_once($host . "db.php");
$connect = mysql_connect($serveur, $pseudo, $pass);
$db = mysql_select_db($base);
function PrepareName($s)
{
$s = strtolower($s);
{ $change_space = "-";
if ($s != '')
$s = strtr($s,'áâàäéêèëíîìïóôòöúûùüýçñ','aaaaeeeeiiiioooouuuuycn');
$s = preg_replace("/(&gt;|&lt;|&quot;|&amp;)/",$change_space,$s);
$s = preg_replace("/[^a-z0-9_\-]/",$change_space,$s);
$s = preg_replace("/[$change_space]+/",$change_space,$s);
($s{0} == $change_space ? $s = substr($s,1) : '' );
($s{strlen($s)-1} == $change_space ? $s = substr($s,0, strlen($s)-1) : '' );
}
return $s;
return str_replace(' ','-',$r);
}
$sql = "SELECT `topic_id`, `topic_title`, `topic_time`, phpbb_forums.forum_id
FROM `phpbb_topics`, `phpbb_forums`
WHERE phpbb_forums.forum_id = phpbb_topics.forum_id
AND `auth_view` = '0'
AND phpbb_forums.forum_id != '30'
ORDER BY `topic_time` DESC
LIMIT 0,15";
$r_topics = mysql_query($sql) or die(mysql_error());
$i = 0;
$couleur=array("white","#FFCED0");
while ($val = mysql_fetch_array($r_topics)) {
$id = $val['topic_id'];
$name = PrepareName($val['topic_title']);
$time = $val['topic_time'];
$time = date("d/m/Y", $time);
$title = addslashes($title);
$i=1-$i;
$couleur_a_utiliser = $couleur[$i];
echo " <tr><td bgcolor=\"$couleur_a_utiliser\"><a target=\"_blank\" href=\"./forum/".$id."_0-".$name.".html\">".$val['topic_title']."</a>&nbsp;(" . $time . ")<br /></td>";
echo " </tr>";
}
mysql_close($connect);
?>
</table>

pour voir ce que ca donne consultez mon site Actualites Algerie

Ps : je crois que la j'ai gagné le drois d'avoir mon bl :lol:
 
WRInaute accro
T'as du te gourer dans les chemins par rapport à ton installation de phpbb3. Peut-être qu'on peut voir cette fameuse ligne 18 ? ;)
 
Nouveau WRInaute
Oui en effet petite erreur dans le chemin... rien de grave.

En revanche maintenant j'ai une erreur de type:
Fatal error: Call to undefined method: stdClass->format_url() in /homepages/28/d8327892543/htdocs/forum/lastpost.php on line 41

La cause viendrait de cette partie:
// http://www.phpBB-SEO.com SEO TOOLKIT BEGIN
if ( empty($phpbb_seo->seo_url['topic'][$topic_id]) ) {
if ($line[$i]['topic_type'] == POST_GLOBAL) {
$phpbb_seo->seo_opt['topic_type'][$topic_id] = POST_GLOBAL;
}
$phpbb_seo->seo_censored[$topic_id] = $topic_title;
$phpbb_seo->seo_url['topic'][$topic_id] = $phpbb_seo->format_url($phpbb_seo->seo_censored[$topic_id]);
}
if ( empty($phpbb_seo->seo_url['forum'][$forum_id]) ) {
$phpbb_seo->seo_url['forum'][$forum_id] = $phpbb_seo->set_url($line[$i]['forum_name'], $forum_id, $phpbb_seo->seo_static['forum']);
}
Car quand je la supprime, cela fonctionne très bien !
Donc pas gênant, mais réponse oblige :mrgreen:

Merci sinon c'est bien ce que je recherchais :)
 
WRInaute accro
Eu t'es sur que t'as la premod de phpbb3 provenant de phpbb-seo.com ? J'ai plutôt l'impression que tu as le simple phpbb3 sans url rewriting, donc tu n'as pas besoin de ce code. Si tu sais pas ce que c'est, alors vire le, ça marche, c'est normal ;)
 
Nouveau WRInaute
Arff j'ai un autre problème, pour mes fichiers php dans mes sous répertoires, j'ai cette erreur:
Fatal error: Call to a member function on a non-object in /homepages/28/d256879139/htdocs/forum/latesttopics.php on line 18

J'en est marre qu'est ce qu'il a avec cette foutu ligne:
Code:
    $result = $db->sql_query($sql);

Sinon pour les fichiers php à la racine ça fonctionne, le lien de mon include est comme ceci:
Code:
<?php include"/homepages/28/d152423465/htdocs/forum/latesttopics.php/";?>

Et si je mets le lien de ce type:
Code:
<?php include"http:/www.monsite.com/forum/latesttopics.php/";?>
Il me fait l'erreur sur toute les pages !

Comment faire :/
merci
 
WRInaute accro
Code:
<?php include"http:/www.monsite.com/forum/latesttopics.php/";?>

Ou tu as été chercher ça ? Tu mets un chemin local à la machine dans un include, pas un lien web ;)
 
Nouveau WRInaute
Oui en effet, mais j'ai quand même testé !!
En fait, ça fonctionne parfaitement avec mes fichiers php à la racine du site, mais s'il se trouve dans un répertoire, exemple /videos/video01.php (qui appelle latesttopics.php bien sur) j'ai l'erreur cité plus haut, et je ne comprends vraiment pas pourquoi !! Donc j'aimerais de l'aide.

J'ai lu sur un autre forum, quelqu'un avait aussi ce problème même avec " $result = $db->sql_query($sql);" et ils parlaient d'un soit disant require_once ( '?????') à placer en haut... Huhu ?
Voir ici: http://www.outshine.com/forums/viewtopic.php?t=83 (précédente page aussi)
 
WRInaute accro
Mais c'est normal si dans un autre dossier ça ne marche pas, le chemin courrant n'est pas le même et les chemins relatifs dans le script ne sont plus bons !!

Tu te trouves ici:

/videos/

Tu fais appel à

include "/homepages/28/d152423465/htdocs/forum/latesttopics.php/";

Et dans ce script, on veut accéder à des fichiers dans le répertoire du forum (./forum) Il va donc aller chercher les fichiers ici:

/videos/forum/

Dans le script il faut indiquer: (../forum) pour revenir au dossier précédent et puis aller dans le dossier forum.

Tu comprends maintenant ?
 
Nouveau WRInaute
Oui en effet c'est bien ce que je me suis dis :? mais si je change en ../forum ceux à la racine ne marchent plus forcément :x
 
WRInaute accro
Et beh excuse moi d'essayer de te faire réfléchir lol. Tu peux par exemple en faire une fonction et pas toujours faire des includes dès qu'il y a un nouveau script. Comme ça tu pourrais passer le chemin relatif en paramètre.

tafonction('./forum/'); et sur les sous dossiers tafonction('./../forum/');

C'est bon tu me tires plus la gueule ? lol
 
Nouveau WRInaute
Euh, jcomprends pas, tu sais j'y connais pas grand choses les bases point, et j'ai d'autre include du même type et j'ai pas d'erreur comme ça pour les fichiers php dans les dossiers !!

Donc je suis censé le coder comment ?
 
WRInaute accro
Bah au lieu de faire un fichier php avec le script, tu peux en faire une fonction php

function mafonction($path)
{
//tout le code du script que tu as mis dans ton fichier latestsposts.php
//Et phpbb_root_path = $path;
}

Tu devrais apprendre les bases de php, ça t'aiderait grandement !
 
WRInaute impliqué
J'ai modifié mon code depuis le temps mais au début j'utilisais ça :

Code:
include ("config.php");
    $link = mysql_connect ($dbhost,$dbuser,$dbpasswd) or die ('Erreur : '.mysql_error() );
          mysql_select_db($dbname);

          $select = "SELECT topic_title,topic_id,topic_poster,forum_id,topic_first_poster_name,topic_time FROM {$table_prefix}topics ORDER BY topic_id DESC LIMIT 10";
          $result = mysql_query($select,$link);

          while($row = mysql_fetch_array($result))
          {
          $topic_id = $row['topic_id'];
          $titre = utf8_encode($row['topic_title']);
          $posteur = utf8_encode($row['topic_first_poster_name']);
          setlocale(LC_TIME, "fr_FR");
          $date = utf8_encode(strftime("%A %e %B à %H:%M", $row['topic_time']+(0)));

          $annonce= $titre;
          $annonce = preg_replace("`\[.*\]`U","",$annonce);
          $annonce = preg_replace('`&(amp;)?#?[a-z0-9]+;`i','-',$annonce);
          $annonce = htmlentities($annonce, ENT_COMPAT, 'UTF-8');
          $annonce = preg_replace( "`&([a-z])(acute|uml|circ|grave|ring|cedil|slash|tilde|caron|lig);`i","\\1", $annonce );
          $annonce = preg_replace( array("`[^a-z0-9]`i","`[-]+`") , "-", $annonce);
          $annonce = ( $annonce == "" ) ? $type : strtolower(trim($annonce, '-'));

          echo "<a href=\"/forum/".$annonce."-t".$topic_id.".html\">".$titre."</a> par ".$posteur." (<em>".$date."</em>)<br />";
          }
          mysql_close();

Si ça peut t'aider, il marchait très bien ;)
 
Nouveau WRInaute
Beh voilà :D apparemment ça fonctionne niquel là, répertoires aussi :p Merci, je tiens au courant si il y à d'autre problèmes.

EDIT: Ah non :( les urls sont pas bon !
Et euh je sais plus si je l'ai dis, mais moi c'est une version phpbb3 normal !
 
Nouveau WRInaute
C'est possible par contre de mettre la date en format anglais ?
Et comment rewrite mes urls de mon forum ??
merci
 
WRInaute impliqué
J'vais pas te faire tout ton boulot non plus exagère pas. Regarde bien le code, réfléchi un peu et tu saura l'adapter pour un phpbb non rewrité. Et pour la date cherche strftime dans google.
 
Nouveau WRInaute
S'il te plait, ça serait cool, j'ai essayé justement je sais que c'est dans celle ligne:
<a href=\"/forum/".$annonce."-t".$topic_id.".html\">

J'ai essayé quelque trucks mais ça fonctionnais pas :(
J'aimerais de l'aide svp, ça fais un moment que j'essaye de faire marcher... J'ai besoin de ce script.

Et sinon, c'est possible de rewriter les urls d'un forum phpbb3 normal ?

merci
 
WRInaute accro
Il y a tout ce qu'il faut pour réécrire tes url sur phpbb-seo.com comme dit avant, mais évidemment t'as pas lu :roll: .
 
Nouveau WRInaute
J'ai trouvé le pack, je vais essayer, mais si tu pouvais aussi me dire ce qu'il y a à remplacer dans le script pour les non réécrit au cas ou, ça serait sympa please :) merci
 
WRInaute accro
pfff t'abuses quand même légèrement, comme je le pensais, dans le script tu as des commentaires explicites en français, je cite:

Code:
// www.phpBB-SEO.com SEO TOOLKIT BEGIN, à enlever si vous n'avez pas installé les mods phpbb-seo !

Bon c'est fini, tu fais aucun effort. Genre tu veux jouer dans la cours des grands sans rien apprendre, lire, comprendre avant 8O Et là c'est même pas de la programmation, c'est du français.
 
WRInaute impliqué
pendu.gif
 
Nouveau WRInaute
Nan sérieusement juste une dernière chose, j'ai choisis le mod avancé, ils sont bien réécrits, mais si je clique sur un lien, il me renvoie une erreur 404 !! j'ai oublié quelque chose ?
Et j'ai bien fais le .htaccess généré...
 
Nouveau WRInaute
Non résolu, bah merci du coup pour le script ça fonctionne, j'ai trouvé pour la date, et mes urls sont réécrits maintenant :)
Fiouuu c'était quelque chose pour trouver un script des derniers topics affiché dans l'index (et autres) qui fonctionne ! :?
bye
 
Discussions similaires
Haut