Seite 5 von 6

Verfasst: 18.07.2006 18:31
von Fogg
Noe, das phpMyAdmin sollte nicht das Problem sein ;)

Hast Du die Code-Veränderungen vorgenommen wie ich geschrieben hab? Und geht trotzdem nicht? Doof.

Was das mit der sortierung bei Dir ist hab ich grad kein Plan. Ich schau grad mal ein anderes Forum an welches ich mal probekonvertiert hab und muss Dir recht geben... das sieht etwas doof aus. Hat ich in meinem Board nicht das Prob.

....
Edit:
Hab grad nochmal Code und Boardsruktur angetan. So langsam blick ich glaub ich durch. Das liegt wohl in der Tat an der Art wie umgestellt wird. Dabei geht die sortierung flöten, bzw. wir neu aufgebaut. Und da gibt es zwangsläufig eine andere wie vorher da war. Das ist nicht so einfach umzustellen.....

Auch mein Gedächtnis kommt etwas zurück... ich glaub meine Mods sind damals hin und haben alle aktuellen wichtigen Themen durchgekramt und überall ein Post reingesetzt und den wieder gelöscht. Somit sind die neuen zumindest alle auf der ersten Seite. Der Rest ergibt sich dann von selbst.


......
Edit2:
Erklärung: Das phpBB sortiert bei der Anzeige der Foren nach der POst ID, einer automatisch vergebenen aufsteigenden Nummer. Logischerweise muss die höchste Nummer der neuste Post sein - bei einem aktiven Board!! In der Migration krieg ich die Themen ja in willkürlicher Reihenfolge, und somit werden auch die IDs willkürlich vergeben. Prinzipiell müsste man in der viewforum.php folgende Query ändern:

Zeile: 372 - 382:

Code: Alles auswählen

//
// Grab all the basic data (all topics except announcements)
// for this forum
//
$sql = "SELECT t.*, u.username, u.user_id, u2.username as user2, u2.user_id as id2, p.post_username, p2.post_username AS post_u
        FROM " . TOPICS_TABLE . " t, " . USERS_TABLE . " u, " . POSTS_TABLE . " p, " . POSTS_TABLE . " p2, " . USERS_TABLE . "
        WHERE t.forum_id = '$forum_id'
                AND t.topic_poster = u.user_id
                AND p.post_id = t.topic_first_post_id
                AND p2.post_id = t.topic_last_post_id
                AND u2.user_id = p2.poster_id
                AND t.topic_type <> " . POST_ANNOUNCE . "
                $limit_topics_time
        ORDER BY t.topic_type DESC, t.topic_last_post_id DESC
Besser wäre:

Code: Alles auswählen

//
// Grab all the basic data (all topics except announcements)
// for this forum
//
$sql = "SELECT t.*, u.username, u.user_id, u2.username as user2, u2.user_id as id2, p.post_username, p2.post_username AS post_u
        FROM " . TOPICS_TABLE . " t, " . USERS_TABLE . " u, " . POSTS_TABLE . " p, " . POSTS_TABLE . " p2, " . USERS_TABLE . "
        WHERE t.forum_id = '$forum_id'
                AND t.topic_poster = u.user_id
                AND p.post_id = t.topic_first_post_id
                AND p2.post_id = t.topic_last_post_id
                AND u2.user_id = p2.poster_id
                AND t.topic_type <> " . POST_ANNOUNCE . "
                $limit_topics_time
        ORDER BY t.topic_type DESC, p.post_time DESC

Verfasst: 18.07.2006 21:20
von S1lv3R
An genau das hatte ich auch schon gedacht, vielen Dank für deine Hilfe, wenn das echt funkioniert bist du ein Gott ... ich probiers sofort mal aus ... :D
*edit* Funktioniert leider noch nicht ... aber der Ansatz muss ja schon richtig sein. Die Zeit wird bei mir im Forum ja auch schon richtig angezeigt, er ordnet bloss immernoch nicht danach :(
*edit2* Hab es jetzt mal ASC statt DESC ordnen lassen ... also die Ordnung ist anders als bei DESC aber ASC ist das auch nicht, immer noch total durcheinander. Muss wohl noch irgendwas anderes die Sortierung beeinflussen. :cry:

Verfasst: 19.07.2006 08:50
von Fogg
Hi Silver,

gut, dann gab es gestern bei dir das gleiche ergebnis wie bei mir :(
Warum das nicht tut ist mir bis jetzt noch ein Rätsel....

Verfasst: 19.07.2006 19:20
von S1lv3R
Hey Fogg,
meinste du kriegst das noch irgendwie hin?
Ich hab noch die ganze Nacht drüber gebrütet und nichts gefunden.
Stehe leider ein bischen unter Zeitdruck, am 1. ist die alte Domain und der alte Webspace weg. :(
Werde es wohl wie du machen müssen und es manuell ordnen, zum Glück nur 500 Threads ;)

Verfasst: 21.07.2006 13:08
von Fogg
Die Sortierung musst auf alle Fälle manuell machen. Das ist schon etwas grösserer Aufwand....

klappt das registrierdatum in der zwischenzeit?


Edit:
Hab da noch ein Fehler gefunden, er verschiebt die Daten nun um einen Monat.... So sollte die return-Zeile von weiter oben richtig aussehen:

return mktime(0,0,0,$month,1,$year);M

;)

Verfasst: 21.07.2006 13:15
von Fogg
Ha!!!

Glaub habs doch..... änder mal die obige Query am ende in:

Code: Alles auswählen

ORDER BY t.topic_type DESC, p2.post_time DESC 

Wichtig ist das p2

Dann sollte die Sortierung stimmen!!!

Verfasst: 21.07.2006 14:37
von S1lv3R
Das mit dem Regestrierungsdatum muss ich später nochmal probieren,
Topics werden aber jetzt richtig geordnet. :D
Vielen dank für den Converter und die Hilfe hier nochmal ;)
Eine kleine Sache ist da allerdings noch - ist jetzt nicht so wichtig, ich wollts nur erwähnen - und zwar wird in Users keine ID erstellt in user_sig_bbcode_uid. Diese ID wird dann eigentlich in user_sig eingesetzt. In user_sig müsste es also korrekt heißen:

Code: Alles auswählen

[b:*bbcode_uid*]test bbcode signatur [/b:*bbcode_uid*]
da steht nach der Konvertierung nur:

Code: Alles auswählen

[b]test bbcode signatur[/b]
Führt nur dazu das man in der Signatur keinen bbcode angezeigt kriegt.
Ach und die Resyncfunktion funktioniert natürlich auch nicht. ;)
includes/functions_admin.php - ich blick da aber nicht durch :roll:
Müsste eigentlich der Query bei Zeile 124 drum sein.

Code: Alles auswählen

			$sql = "UPDATE " . FORUMS_TABLE . "
				SET forum_last_post_id = $last_post, forum_posts = $total_posts, forum_topics = $total_topics
				WHERE forum_id = $id";
Wenn du Lust und zuviel Freizeit hast kannste dich ja nochmal drum kümmern, dann ist er aber wirklich perfekt :D

Verfasst: 22.07.2006 10:44
von Fogg
Noe, der Fehler sitzt schon etwas höher :) Aber so falsch warst nicht.

Etwa hier:

Code: Alles auswählen

                                case 'forum':
                        $sql = "SELECT MAX(post_id) AS last_post, COUNT(post_id) AS total
                                FROM " . POSTS_TABLE . "
                                WHERE forum_id = $id";
                        if ( !($result = $db->sql_query($sql)) )
                        {
                                message_die(GENERAL_ERROR, 'Could not get post ID', '', __LINE__, __FILE__, $sql);
                        }

                        if ( $row = $db->sql_fetchrow($result) )
                        {
                                $last_post = ( $row['last_post'] ) ? $row['last_post'] : 0;
                                $total_posts = ($row['total']) ? $row['total'] : 0;
                        }
                        else
                        {
                                $last_post = 0;
                                $total_posts = 0;
                        }
Das select max(post_id) ist mal wieder das Problem.
Wenn ich die Query umstelle kriew ich leider nicht den count gleichzeitig mehr :( Also müssen es dann zwei sein.


Es müsste richtig heissen:

Code: Alles auswählen

                               case 'forum':
             // first get latest post
                       $sql = "SELECT post_id, forum_id
                                FROM " . POSTS_TABLE . "
                                WHERE forum_id = $id
                                ORDER BY post_time DESC LIMIT 0 , 1";

                        if ( !($result = $db->sql_query($sql)) )
                        {
                                message_die(GENERAL_ERROR, 'Could not get post ID', '', __LINE__, __FILE__, $sql);
                        }

                        if ( $row = $db->sql_fetchrow($result) )
                        {
                                $last_post = ( $row['last_post'] ) ? $row['last_post'] : 0;
                        }
                        else
                        {
                                $last_post = 0;
                        }


             // now get count
                       $sql = "SELECT COUNT(post_id) as total
                                FROM " . POSTS_TABLE . "
                                WHERE forum_id = $id";

                        if ( !($result = $db->sql_query($sql)) )
                        {
                                message_die(GENERAL_ERROR, 'Could not get post count', '', __LINE__, __FILE__, $sql);
                        }

                        if ( $row = $db->sql_fetchrow($result) )
                        {
                                $total_posts = ($row['total']) ? $row['total'] : 0;
                        }
                        else
                        {
                                $total_posts = 0;
                        }



So sollte das tun.... habs aber leider net probiert.... :)




Was die Signatur betrifft....

Hierzu muss in der converer_phpbb.php folgendes geändert werden:

In der Funktion create_user($tbb_uid) folgende Zeile unterhalb von

Code: Alles auswählen

$akt_user_data[2] = md5(get_rand_string(8));
einfügen:

Code: Alles auswählen

$akt_user_data[7] = convert_bbcodes($akt_user_data[7]);

Zusätzlich muss das INSERT kurz dahinter angepasst werden:

Code: Alles auswählen

$sql = "INSERT INTO " .$tbl_prefix."users (username, user_email, user_website, user_regdate, user_icq, user_sig, user_posts, user_lang, user_sig_bbcode_uid) values ('".mysql_escape_string($akt_user_data[0])."','".mysql_escape_string($akt_user_data[3])."','".mysql_escape_string($akt_user_data[9])."','".$akt_user_data[6]."','".$akt_user_data[13]."','".mysql_escape_string(tbb1_demutate(br2nl($akt_user_data[7])))."','".$akt_user_data[5]."','german', '1111111111')";
Dann sollte das auch funktionieren.

Verfasst: 23.07.2006 01:04
von S1lv3R
Ok, Signatur funktioniert, Regestrierungsdatum funktioniert aber Resync funktioniert leider noch nicht :-?
Aber sonst saubere Arbeit :)
*edit*
Ich dachte grad schon das ein paar Posts verloren gegangen wären, nochmal Glück gehabt :lol: Allerdings giebt es eine überflüssige 8. Seite, ist aber mehr ein Schönheitsfehler ;)
http://ru.allianz-dgnsa.de/thema-anzeig ... 4-s90.html
Außerdem werden Sonderzeichen in der Signatur nicht korrekt dargestellt, auch ein Schönheitsfehler - hab mir aber schon die Mühe gemacht den manuell zu beseitigen, will dich ja nicht mit solchem Kleinkram nervern ;) Sag es nur damit es mal erwähnt wurde. :)

Verfasst: 23.07.2006 09:39
von Fogg
Huhu,

das mit der überflüssigen 8. Seite kann ich mir nun nicht erklären. Hatte ich mit phpBB aber durchaus auch schon. Noch ein Post reinmachen, dann gehts wieder.

Umlaute in Signaturen... ich schau nochmal rein. Was Du nicht alles findest ;)