Les archives de FluxBB.fr
Vous n'êtes pas identifié(e).
Pages : 1
Bonjour tout le monde,
alors voilà j'ai un problème plutôt dérangeant au niveau de l'affichage.
En fait lorsqu'une discussion fait 2-3 pages( ou plus) je n'ai plus de mentions de ces pages. voilà ce que j'ai :

J'ai bien les crochets de pages multiple mais pas de mentions de numéro.
Et en haut de page c'est pareil, rien :

Les pages sont toujours bien présentes (lorsqu'on clique sur le nom du dernier posteur ou sur la mention [nouveau message] on arrivent bien là ou l'on doit.
A noter que je n'ai absolument pas touché à quoi que ce soit niveau code du forum depuis facilement 2 mois et que les pages apparaissaient bien il y a encore 2 semaines.
Si quelqu'un à une idée je suis preneur parce que j'ai beau chercher je ne vois pas (et j'ai du mal à trouver ou ça peux se passer dans les fichiers Punbb) et j'ai fais une recherche sur le forum mais n'ai rien trouvé.
D'avance merci à vous
Kargai
Hors ligne
Es-tu sur de n'avoir rien modifié? Même en base?
ça fait ça seulement sur un topic en particulier ou pas?
As-tu récemment supprimé un utilisateur qui avait posté plusieurs messages?
Hors ligne
Pour ce qui est de la suppression d'utilisateurs je suis sur que non (il s'agit d'un forum de développement d'un outil et nous ne sommes que 4 dessus
)
Je suis certain de ne rien avoir modifié dernièrement. Ni ajout de module, etc... je n'ai même pas chargé un seul fichier de la base depuis plusieurs semaines. En fait je n'ai plus rien touché (hormis poster bien sûr) depuis fin décembre, seule chose que j'aie fait c'est une sauvegarde du forum en début février (un simple copié-collé de mon dossier "Forum" sur mon espace Free).
Or je suis quasiment certain que ce bug est apparu il y a 1 semaine, 10 jours grand maximum.
Et savoir si cela ne se fait que sur ce topic est difficile à dire étant donné que c'est le seul qui comporte 2 pages 
EDIT: Après un test, il s'avère que ça fait pareil dans d'autres sections du forum
Hors ligne
Essaye de réparer la base de donnée.
(s) MT
ex-Apupv
:faq: :recherche:
Gra.
Hors ligne
J'ai essayé.
Forum en maintenance et reconstruction d'index puis remise en marche forum => rien de différent...
Lorsque je ne met que 10-15 topics par page par exemple je n'ai que la première, pas moyen d'aller en page 2, etc... et donc pareil dans les pages d'un topic/sujet précis....
Hors ligne
La fonction qui génère les numéros de page s'appelle "paginate" et est située dans le fichier include/functions.php.
Si le bug apparaît à la fois sur la lecture des forums et sur la lecture des topics, il ya de bonnes chances que le pbm soit situé directement dans cette fonction paginate.
La première chose à faire est donc de faire un "diff" entre ton fichier functions.php et le fichier correspondant d'une version propre, et de regarder au niveau de cette fonction paginate que tout est correct.. (rem: elle est environ aux 3/4 du fichier).
Si jamais c'est pas là qu'est le problème, il faut vérifier dans la table users les champs "disp_topics" et "disp_posts" et faire différents essais avec différentes valeurs (soit en modifiant directement dans la base soit en passant par "profile").
D'ailleurs tu n'as pas indiqué si le problème se posait avec TOUS les utilisateurs ?
Si après tout ça, ça ne fonctionne toujours pas, ça risque d'être plus difficile à trouver..
Hors ligne
Lorsque je compare les 2 fonctions paginate elles ne sont en effet pas pareilles
voilà ce que j'ai :
//
// Generate a string with numbered links (for multipage scripts)
//
function paginate($num_pages, $cur_page, $link_to)
{
global $sword;
if($sword!=null)
$urlword='&words='.$sword;
else
$urlword='';
}
{
$pages = array();
$link_to_all = false;
$nav_links = true;
// If $cur_page == -1, we link to all pages (used in viewforum.php)
if ($cur_page == -1)
{
$cur_page = 1;
$link_to_all = true;
$nav_links = false;
}
if ($num_pages <= 1)
$pages = array('<strong>1</strong>');
else
{
if ($cur_page > 3)
{
$pages[] = '<a href="'.$link_to.'&p=1'.$urlword.'">1</a>';
if ($cur_page != 4)
$pages[] = '…';
}
// Don't ask me how the following works. It just does, OK? :-)
for ($current = $cur_page - 2, $stop = $cur_page + 3; $current < $stop; ++$current)
{
if ($current < 1 || $current > $num_pages)
continue;
else if ($current != $cur_page || $link_to_all)
$pages[] = '<a href="'.$link_to.'&p='.$current.''.$urlword.'">'.$current.'</a>';
else
$pages[] = '<strong>'.$current.'</strong>';
}
if ($cur_page <= ($num_pages-3))
{
if ($cur_page != ($num_pages-3))
$pages[] = '…';
$pages[] = '<a href="'.$link_to.'&p='.$num_pages.''.$urlword.'">'.$num_pages.'</a>';
}
}
if($nav_links)
{
if($cur_page > 1){
$back_page_number = $cur_page-1;
$back_page = '<a href="'.$link_to.'&p='.$back_page_number.'">«--</a>';
array_splice($pages, 0, 0, $back_page);
}
if($cur_page < $num_pages){
$next_page_number = $cur_page+1;
$next_page = '<a href="'.$link_to.'&p='.$next_page_number.'">--»</a>';
array_push($pages, $next_page);
}
}
return implode(' ', $pages);
}Il est très possible que cela provienne d'un mods ajouté mais n'étant pas à la base l'admin du forum je ne sais pas de laquelle il pourrait s'agir précisément.
A moins qu'il n'y aie une erreur dans cette fonction au niveau de l'implémentation ?
Dans un cas comme dans l'autre je ne comprend pas pourquoi cela se produit "d'un coup" alors que j'ai repris en main ce forum il y a 3-4 mois et que je n'ai fais qu'y ajouter le mod "Qui est en ligne" et celui des "Membre en ligne aujourd'hui" qui ne me semblent aucun des 2 toucher à cette fonction.
Lorsque j'essaye de remplacer la fonction paginate par celle du fichier de base j'ai droit à une belle erreur:
Call to a member function on a non-object in ..../footer.php in line 200
Et à cette même ligne dans le-dit fichier j'ai :
// End the transaction
$db->end_transaction();Bref j'avance pas 
Hors ligne
Il est très possible que cela provienne d'un mods ajouté mais n'étant pas à la base l'admin du forum je ne sais pas de laquelle il pourrait s'agir précisément.
C'est la mod "Page Links" (ajout des liens précédent/suivant).
L'erreur se situe aux lignes 12 et 13 de ta fonction. Remplace ces lignes
}
{par une ligne vide et ça devrait marcher. 
Lorsque j'essaye de remplacer la fonction paginate par celle du fichier de base j'ai droit à une belle erreur
Ca ce n'est pas normal, parce que justement l'erreur semble être dans la fonction, donc un remplacement complet aurait dû résoudre le pbm. Peut-être y a t-il une autre erreur du même type ailleurs...
Hors ligne
Merci de tenter de m'aider 
Malheureusement lorsque je retire les accolades des lignes citées j'obtiens l'erreur :
Call to a member function on a non-object in ..../footer.php in line 200
ligne 200 qui du fichier footer.php qui est :
$db->end_transaction();
Si j'ai le temps ce lundi je vais tâcher de prendre le module "Page Links" et faire la manipulation d'installation à l'envers pour revenir à un truc sans ce mod et voir ce que cela donne...
Hors ligne
Si j'ai le temps ce lundi je vais tâcher de prendre le module "Page Links" et faire la manipulation d'installation à l'envers pour revenir à un truc sans ce mod et voir ce que cela donne...
Non, ça ne servira à rien... 
Avant de te donner ma précédente réponse, j'ai pris le temps de comparer ma fonction à la tienne (j'ai également cette mod d'installée) : à part ce pbm d'accolades, la mod a BIEN ETE INSTALLEE. Donc avec ma correction, il n'y a plus de problème dans cette partie.
Maintenant, tu as un autre problème (encore un problème de syntaxe avec une fermeture d'accolade en trop ou en moins), et comme ma correction a induit un message d'erreur, il est fort probable que cette erreur de syntaxe se situe encore dans le fichier functions.php (mais plus dans paginate).
Le problème va être de la trouver...
Tu pourrais toujours vérifier le fichier ligne à ligne, mais malheureusement tu n'as pas de chance, c'est le fichier le plus gros de l'appli, alors il va falloir s'accrocher..
Je ne sais pas combien tu as de mods d'installées, mais si tu n'as que 2 ou 3 petites mods (Page Links est par exemple une toute petite mod qui ne prend que qques minutes à refaire), je te conseillerai de reprendre une version toute propre et de refaire les mods.
Hors ligne
J'ai comparé toutes mes accolades, à chaque ouverture correspond bien sa fermeture (vérifié 3 fois).
Lorsque je fais une recherche de "{" et de "}" j'obtiens le même nombre de chaque.
Et toujours pareil, sans les 2 accolades que tu m'a dit de retirer ça plante toujours avec le message d'erreur ..../footer.php. Si je les laissent en place ça marche mais toujours pas mes numéros de pages 
Pour les mods d'installées j'ai jeté un oeil et l'ancien admin à apparemment installé une bonne dizaine d'entre elles (Another Private Messaging, Forum subscriber, Puntoolbar, smiley manager, ...)
EDIT: Par contre je ne vois trace du mod "Page Links" nulle part et je n'ai pas fais attention directement mais ça me semble être un mod "anglais" non traduit (je ne l'ai pas vu dans la liste des mods ici). Or si c'est le cas je pense à 99% que le gars n'a pas installé de mods hors de ceux que l'ont peut trouver ici.
Dernière modification par Kargai (26-02-2007 09:34:22)
Hors ligne
Lorsque je fais une recherche de "{" et de "}" j'obtiens le même nombre de chaque.
Ben, oui... mais ça ne suffit pas
Encore faut-il qu'elles soient aux bons endroits. Les deux que je t'ai fait enlever NE L'ETAIENT PAS, ça c'est clair.
Si je les laissent en place ça marche mais toujours pas mes numéros de pages
Ben non, justement ça ne marche pas, l'accolade fermante doit être en fin de fonction et pas au milieu, là tu n'as pas les numéros de page parce que tu n'as carrément plus de fonction paginate...
l'ancien admin à apparemment installé une bonne dizaine d'entre elles (Another Private Messaging, Forum subscriber, Puntoolbar, smiley manager, ...)
Alors t'es mal barré, parce que comme je l'ai dit avant, ça va être long de tout vérifier et la seule solution qui est sûre de réussir va être de repartir d'une version vierge de toute mod et de les ré-installer toutes 
ça me semble être un mod "anglais" non traduit (je ne l'ai pas vu dans la liste des mods ici)
Oui, en effet, mais il n'y a aucune "traduction" à effectuer sur cette (minuscule) mod : elle ne fait qu'ajouter un lien vers la page suivante et/ou la page précédente dans les discussions. Et je viens de vérifier sur la version officielle 1.2.14-b fr, elle est DE BASE dans la distribution (elle ne l'était pas sur la 1.2.10), donc forcément plus besoin de la rajouter 
Bref, je ne sais pas bien comment t'aider plus, c'est dommage parce que je suis persuadé (euh.. je peux aussi me tromper
) que c'est juste l'histoire d'une ligne en trop ou en moins quelque part (ou même juste un caractère !)...
A suivre si quelqu'un a une autre piste ?
Hors ligne
Wééééééééééééééééééééééééééééé
J'ai trouvé

J'ai repris les 2 fonction.php une 4ème fois (le mien et celui de base) et vu que j'avais sans arrêt une erreur footer.php j'ai cherché ou le terme apparaissait dans le fichier puis j'ai cherché les lignes environnantes et les accolades autour pour comparer.
J'avais ceci :
<?php
}
require PUN_ROOT.'footer.php';A force de rester concentrer sur la fonction paginate et les mods ajouté j'en avais oublié de me demander si l'admin n'avait pas pu jouer dans le code "fixe" de la page.
Bref c'est résolu 
Merci à toi Mpok pour l'aide 
Hors ligne
Pages : 1