Seite 1 von 1

topic_title der letzten nachricht - tricky problem

Verfasst: 08.11.2004 00:27
von bedee
hi, bin nun durch dieses und auch das englische forum durch, falls ich was übersehen habe gibts einen :oops: bisher hab ich in meinem phpbb so einiges an meinen bedürftnissen angepasst und bin ein wenig dahintergekommen wie das alles tickt (schön programmiert ist es ja) - nur nun steh ich nun komplett auf dem schlauch:

in der viewforum.php wird in das viewforum.tpl die tabelle mit der überschrift : {L_TOPICS} / {L_REPLIES}  / {L_AUTHOR} /... generiert,

hier wird auch der beitrags-titel: {topicrow.TOPIC_TITLE} "geparst" -

nun möchte ich, das aber dass nicht der titel der ersten topic - (in diesem fall habt ihr ja auf diese nachricht geclickt mit der überschrift "topic_title der letzten nachricht - tricky problem",

sondern der titel der zuletzt in diesem "faden" geschriebene beitrag in der viewforum geparst wird. wenn ihr mir auf diese nachricht mit z.b. "so könnts funktionieren..." antwortet, so soll diese überschrift ....

versteht ihr was ich meine?

die lösung könnt irgendwie ganz einfach sein oder total kompliziert aussehen, aber ich komm mit meinen minni-php-knowhow nicht weiter - ich glaub es hat irgendwas mit der topic_last_post_id zu tun!?

bitte gebt mir einen kräftigen tritt in die richtige richtung -

besten dank für eure geduld

bedee

bin wohl der einzige...

Verfasst: 09.11.2004 16:04
von bedee
...dems interessiert -
naja,
bedee

Verfasst: 09.11.2004 19:43
von saerdnaer
ähm wenn mich nicht alles täuscht verwechselst du da einige begriffe miteinander...

ein thema (= topic) hat einen titel (=topic_title) und zwar den titel (=post_subject) des ersten beitrags dieses themas.

du möchtest jetzt das der titel des themas mit dem titel des letzten beitrags übschrieben wird?

yep

Verfasst: 09.11.2004 23:32
von bedee
danke für die antwort / für die begrifflichkeit

yep, so isses :grin:
was ich da will scheint vielleicht a bisserl absurd, da man möglicherweise recht schnell den überblick verliert, nicht mehr weiss worins in einem thema geht, ich brauch das aber so, da ich das phpbb stark modifiziert als drogenberatungsplattform nützen möchte

dank
bedee

Verfasst: 10.11.2004 13:01
von saerdnaer
du musst halt die submit_post funktion in der includes/functions_post.php so bearbeiten das immer der letzte beitrag den themen titel überschreibt. außerdem solltest du drauf aufpassen das, wenn man den 1. beitrag ändert der thementitel nicht mehr geändert wird.

mfg saerdnaer

ich versteh

Verfasst: 11.11.2004 01:57
von bedee
ich versteh nun wie es tickt, leider ist mein php/sql so mies, dass ichs nicht schaff -

in der functions_post.php:

schau ich nun, dass jeder beitrag eine überschrift erhält, dass schaff ich mit der ausklammerung der folgenden zeile:
// Check subject
if (!empty($subject))
{
$subject = htmlspecialchars(trim($subject));
}
// ausgeklammert, damit jeder beitrag zwingend eine überschrift hat
// zuvor wurde nur geprüft, ob der erste beitrag (newtopic) ein subject hat

else // if ($mode == 'newtopic' || ($mode == 'editpost' && $post_data['first_post'])) {
$error_msg .= (!empty($error_msg)) ? '<br />' . $lang['Empty_subject'] : $lang['Empty_subject'];
}
..
..
..
folgende zeile hab ich gefunden:
if ($mode == 'newtopic' || ($mode == 'editpost' && $post_data['first_post'] )) {
$topic_vote = (!empty($poll_title) && count($poll_options) >= 2) ? 1 : 0;

$sql = ($mode != "editpost") ? "INSERT INTO " . TOPICS_TABLE . " (topic_title, topic_poster, topic_time, forum_id, topic_status, topic_type, topic_vote) VALUES ('$post_subject', " . $userdata['user_id'] . ", $current_time, $forum_id, " . TOPIC_UNLOCKED . ", $topic_type, $topic_vote)" : "UPDATE " . TOPICS_TABLE . " SET topic_title = '$post_subject', topic_type = $topic_type " . (($post_data['edit_vote'] || !empty($poll_title)) ? ", topic_vote = " . $topic_vote : "") . " WHERE topic_id = $topic_id";

hier passiert also der austausch der "variablen inhalte" -
dieses "austauschen" soll nun aber immer passieren, mit immer mein ich bei $mode == 'editpost' und $mode == 'reply', aber wo und wie schreib ich das in den code? ich habe versucht die zeile zu finden, in der der name des autors des letzten posts gesetzt wird, konnte ich aber nicht finden -


bitte helft mir, bin am verzweifeln

mehr info:
in meinem forum hab ich schon so einiges abgedreht, so ist es nicht möglich anonym zu posten, nur reg. user können das - es gibt auch keine announcements oder polls, einfach nur posts
außerdem solltest du drauf aufpassen das, wenn man den 1. beitrag ändert der thementitel nicht mehr geändert wird.
dass ist mir egal

danke
bedee

Re: ich versteh

Verfasst: 11.11.2004 16:15
von saerdnaer
if ($mode == 'newtopic' || ($mode == 'editpost' && $post_data['first_post'] ))
füg danach am besten einen else if ( $mode == 'reply' ) block mit ner extra sql-aweisung, die den topic titel neu setzt, ein.

hier löscht du am besten das rote raus, dann wird der titel beim bearbeiten nicht geändert.
$sql = ($mode != "editpost") ? "INSERT INTO " . TOPICS_TABLE . " (topic_title, topic_poster, topic_time, forum_id, topic_status, topic_type, topic_vote) VALUES ('$post_subject', " . $userdata['user_id'] . ", $current_time, $forum_id, " . TOPIC_UNLOCKED . ", $topic_type, $topic_vote)" : "UPDATE " . TOPICS_TABLE . " SET topic_title = '$post_subject', topic_type = $topic_type " . (($post_data['edit_vote'] || !empty($poll_title)) ? ", topic_vote = " . $topic_vote : "") . " WHERE topic_id = $topic_id";
ah

Re: ich versteh

Verfasst: 23.11.2004 12:38
von bedee
saerdnaer hat geschrieben:
if ($mode == 'newtopic' || ($mode == 'editpost' && $post_data['first_post'] ))
füg danach am besten einen else if ( $mode == 'reply' ) block mit ner extra sql-aweisung, die den topic titel neu setzt, ein.
mein sql / php ist so mies :oops: , dass ichs nicht auf die reihe bekomm. könntest du mir einen kräftigen kick geben und mir das zeile ausformulieren? shame on me

danke
bedee

Verfasst: 23.11.2004 13:10
von saerdnaer

Code: Alles auswählen

if ( $mode == 'reply' )
{
        $sql = "UPDATE " . TOPICS_TABLE . " SET topic_title = '$post_subject' WHERE topic_id = $topic_id";
        if ( !($result = $db->sql_query($sql)) )
        {
                message_die(GENERAL_ERROR, 'Could not update topic title', '', __LINE__, __FILE__, $sql);
        }
}
ah

funkt

Verfasst: 23.11.2004 20:02
von bedee
:grin: :grin: :grin: :grin: :grin: :grin: ...sagt mehr als 1000 worte

besten dank
funkt wunderbar

bedee