Seite 1 von 1

phpbb schluckt beiträge / probleme mit der anzeige

Verfasst: 27.10.2002 23:42
von Gast
hiho !

ich hoffe, ihr könnt mir weiterhelfen.
folgendes problem:

phpbb (2.0.3) schluckt beiträge.
ein thread ist 4 seiten lang. in der gesamtübersicht werden allerdings nur 3 seiten angezeigt. neue beiträge können zwar hinzugefügt werden, eine ansicht ist allerdings nur bis seite 3 möglich.

hilfe ?

Verfasst: 28.10.2002 00:45
von Mister_X
dies taucht sehr häufig in Verbindung mit Problemen der mail() Funktion oder dem SMTP Server auf, checke da mal alle Einstellungen durch.

Verfasst: 28.10.2002 00:54
von itst
Workaround (nur für Fortgeschrittene):

In der DB in der Tabelle phpbb_topics nach dem betreffenden Topic suchen (topic_id). Die Anzahl der Replies und die des letzten Posts merken.

In der Db in der Tabelle phpbb_posts nach allen Posts des betreffenden Topics suchen. Anzahl merken. Dann nach dem letzten Post zu dem Topic suchen. ID Merken.

Jetzt zurück in phpbb_topics. Die Anzahl der ANtworten mit denen aus phpbb_posts vergleichen. Wenn kleiner (was bei diesem Problem der Fall sein sollte), die Anzahl aus phpbb_posts minus eins eintragen.

Jetzt noch die ID des letzen Posts überprüfen und im Zweiflesfall mit der aus phpbb_posts überschreiben.

Problem gelöst.

Verfasst: 05.01.2003 16:45
von K
danke für den tip

und hoch die suchfunktion :D


frohes neues
K

Verfasst: 09.01.2003 20:53
von HellchiKen
hi, ich habe leider das gleiche problem, aber:

1. @itst: irgendwie fehlt mir die lust, jedes mal in der datenbank rumzuwühlen usw...

2. @Mister_X: folgendes problem:
ich habe vor, das PHP forum (2.0.3) auf nem webserver einer lan-party zur verfügung zu stellen, allerdings teste ich das erstmal lokal.
ich habe in der konfiguration keine daten für smtp server eingeben, sodaß quasi keine mails verschickt werden. allerdings kommt nach jeder antwort auf postings immer "failure sending mail".
also hab ich mich auf die suche gemacht und einfach

Code: Alles auswählen

if ( !$result )
{
  message_die(GENERAL_ERROR, 'Failure sending mail', '', __LINE__, __FILE__);
}
in der emailer.php auskommentiert.
eigentlich läuft alles wunderbar, bis auf das die anzahl der postings und der letzte poster nicht richtig angezeigt wird bzw. nicht aktualisiert wird!

wie mache ich das, daß kein smtp server benutzt wird, aber trotzdem alles aktualisiert wird?

Verfasst: 09.01.2003 21:34
von Mister_X
hm ich dachte eigentlich wenn du diese Zeilen löschst/auskommentierst tritt dieses Aktualisierungsproblem nicht mehr auf :o

hier das passende Thema dazu: http://www.phpbb.de/viewtopic.php?t=186 ... hp&start=0

Verfasst: 05.04.2003 23:50
von Mysterix
Hallo welt,

Nachdem ich nun aktuell das selbe Problem hatte, habe ich mir mal das workaround angesehen und versucht dieses als script für den Adminbereich umzusetzen.

Das Problem was ich nun habe ist, das es als einfaches PHP_Script perfekt funzt und ich damit die Seitenzahl korrigieren konnte, ohne alles von Hand zu machen.

Nun wollte ich es als script für den Admin bereich umsetzen, und habe das Problem das er mir nicht mehr eine Liste macht, sondern nur noch den ersten beitrag aus der DB anzeigt.

Ich denke mal das ich einen ganz simplen Umsetzungsfehler gemacht habe, da dies mein allerserstes phpBBScript ist.
  • <?php

    define('IN_PHPBB', 1);

    if ( !empty($setmodules) )
    {
    $filename = basename(__FILE__);
    $module['Forums']['Resync_Posts'] = $filename;

    return;
    }

    //
    // Load default header
    //
    $phpbb_root_path = '../';
    require($phpbb_root_path . 'extension.inc');
    require('pagestart.' . $phpEx);



    $sql = "SELECT *
    FROM ".TOPICS_TABLE."
    WHERE topic_replies > 0";

    if ( !($result = $db->sql_query($sql)) )
    {
    message_die(GENERAL_ERROR, 'Error getting topic information', '', __LINE__, __FILE__, $sql);
    }


    while($row = $db->sql_fetchrow($result)) {


    $template->set_filenames(array(
    'body' => 'admin/topic_resync_body.tpl')
    );

    $topic_id = $row[topic_id];
    $topic_replies = $row[topic_replies];
    $last_post = $row[topic_last_post_id];

    $sql = "SELECT count(post_id) as post_id
    FROM ". POSTS_TABLE."
    WHERE topic_id = $topic_id";

    if ( !($result = $db->sql_query($sql)) )
    {
    message_die(GENERAL_ERROR, 'Error getting post information', '', __LINE__, __FILE__, $sql);
    }
    list($post_id) = $db->sql_fetchrow($result);

    $post_id = $post_id-1;

    if ($topic_replies < $post_id)
    {
    $sql = "UPDATE ".TOPICS_TABLE."
    SET topic_replies = $post_id
    WHERE topic_id = $topic_id";
    if ( !$db->sql_query($sql) )
    {
    message_die(GENERAL_ERROR, 'Could not update topic', '', __LINE__, __FILE__, $sql);
    }
    $resync = "Korrigiert";

    }
    $sql = "SELECT post_id
    FROM ".POSTS_TABLE."
    WHERE topic_id = $topic_id
    ORDER BY post_id
    DESC LIMIT 1
    ";
    if ( !($result = $db->sql_query($sql)) )
    {
    message_die(GENERAL_ERROR, 'Could not update topic', '', __LINE__, __FILE__, $sql);
    }
    list($last_post_id) = $db->sql_fetchrow($result);

    if ($last_post != $last_post_id) {

    $sql = "UPDATE ".TOPICS_TABLE."
    SET topic_last_post_id = $last_post_id
    WHERE topic_id = $topic_id";
    if ( !$db->sql_query($sql) )
    {
    message_die(GENERAL_ERROR, 'Could not update topic_id', '', __LINE__, __FILE__, $sql);
    }
    $resync_post_id = "Korrigiert";

    }



    $template->assign_vars(array(

    'TOPIC' => $topic_id,
    'REPLIES' => $topic_replies,
    'RREPLIES' => $post_id,
    'RESYNC' => $resync,
    'RESYNC_POST' => $resync_post_id)
    );
    $template->pparse('body');

    }
    include('page_footer_admin.'.$phpEx);
    ?>
Ich habe allerdings auch keine lang-definition miteingebaut, da mir die Übung mit den Templates fehlt.

Das tpl. was ich erzeugt habe, gibt mir zumindest die Zahlen korrekt aus, wie gesagt liegt das problem wohl nur darin das er nur eine Abfrage macht und nicht die ganze db durchgeht.

Es wäre klasse wenn mir da jemand helfen könnte, weil ich denke das das generell recht hilfreich sein kann. Und wie bereits erwähnt, seid gnädig es ist mein erster versuch für phpBB... :wink:

LG Micha (Mysterix - http://sub-port.stayhere.de)

Verfasst: 06.04.2003 13:59
von Gast
so, habe es dann doch noch alleine geschafft, wen das modul interessiert,
der kann es sich bei http://sub-port.stayhere.de/download/Replies_resync.zip downloaden.

Es wäre sehr schön wenn einer der Erfahreneren User dieses script evtl. nochmal durchsehen/überarbeiten könnte, da ich wie gesagt ein noob bei phpBB Scripten bin und mit sichherheit gewisse vorgaben nicht eingehalten habe, und mir bescheid gibt, was man ändern oder verbessern könnte.