Seite 1 von 1

Beschreibung von Datenbankfeldern phpbb_forums

Verfasst: 15.04.2008 14:01
von McUles
Bastel mir gerade nen kleines Mod zusammen um aus einem externen Projekt automatisch Foren anlegen zu lassen.
Das funktioniert in der theorie auch schon, mir sind nur ein paar felder in der Tabelle phpbb_forums noch schleierhaft:

- left_id
- right_id
- forum_parents

Bei forum_parents wird was Serialisiertes eingetragen, was soll das sein?

Würde mich freuen, wenn ihr mir da mit einer kleinen Beschreibung weiterhelfen könntet.

Re: Beschreibung von Datenbankfeldern phpbb_forums

Verfasst: 15.04.2008 14:44
von nickvergessen
McUles hat geschrieben:- forum_parents

Bei forum_parents wird was Serialisiertes eingetragen, was soll das sein?
Die "Eltern", also praktisch rückwärtig wozu das Forum ein Subforum ist. Soweit ich das weiß, kannst du das leer lassen. dass wird beim ersten Seitenaufruf erzeugt.
McUles hat geschrieben:- left_id
- right_id
Wird benutzt um die Sortierung zu Hand haben (mit dem nach oben und unten verschieben) und die Subforen zu zuordnen. Das solltest du also füllen.
left_id und right_id unterscheiden sich bei neu angelegten Foren um 1
Da noch keine Subforen dazwischenliegen. ( http://de.wikipedia.org/wiki/Nested_sets )
Am besten guckst du dir das in der includes/acp/acp_forums.php an.

Verfasst: 15.04.2008 14:53
von McUles
Dank dir für deine Antwort, dann denke ich das das jetzt funktionieren sollte.

Verfasst: 15.04.2008 17:30
von McUles
Habe dann jetzt doch noch ein Problem.
In welchem Format speichert phpBB die Sonderzeichen in der DB?
Habs schon mit utf8_encode versucht, was mir aber nicht gelingen wollte.

Ich meine diese: ü, ä, ö, usw...

Verfasst: 15.04.2008 17:52
von nickvergessen
die Felder sind eigentlich utf8_bin wichtig beim Daten sammeln ist auch requestvar('name', '', true);

Verfasst: 15.04.2008 17:54
von McUles
Das Problem ist halt, das ich die Funktion request_var nicht nutzen kann, da das Skript und das Forum vom source her getrennt sind.

[Edit]
Okay, ironischer weiße geht es wenn ich den String garnicht erst umwandel sondern direkt nen ü eintrage ^^

Verfasst: 15.04.2008 17:54
von nickvergessen
dann kopier doch einfach die Funktion aus phpbb3?

Verfasst: 15.04.2008 20:26
von McUles
Also, das mit den Sonderzeichen funktioniert problemlos jetzt.

Mit dem left_id right_id das will aber nicht wirklich funktionieren.
In der includes/acp/acp_forums.php habe ich die Stelle auch nicht finden können, in der das festgelegt wird.

Verfasst: 16.04.2008 03:53
von Mahony
Hallo
Das hier sollte dir weiter helfen Create Forum Without Using ACP





Grüße: Mahony

Verfasst: 17.04.2008 05:08
von McUles
Nein das hat mir leider nicht weiter helfen können, weil der mein Code nicht bei dem des Forums liegt und daher auch kein Include möglich ist.
Habe allerdings eine Lösung gefunden.
Ein wenig logisches denken und es hat funktioniert -.-

Die Klasse pgsql stellt bei mir die Datenbank-Verbindung her. Falls jemand was mit der Funktion anfangen kann, wird er das sicherlich hin bekommen.

Hoffe das ich jemanden helfen konnte.

Code: Alles auswählen

function FixTree() {
    $first_row_db = new pgsql();
    $second_row_db = new pgsql();
    $third_row_db = new pgsql();
    $fourth_row_db = new pgsql();
    $first_row_db_update = new pgsql();
    $second_row_db_update = new pgsql();
    $third_row_db_update = new pgsql();
    $fourth_row_db_update = new pgsql();
    $CurRow = 0;
    $first_row_sql = "SELECT parent_id, forum_id, forum_name FROM phpbb_forums WHERE forum_type=1 AND parent_id=0 ORDER by parent_id DESC";
    $first_row_db->query($first_row_sql);
    while ($first_row = $first_row_db->fetch()){
      $first_row_left_id = ++$CurRow;

      if($first_row['forum_id'] != ''){
        $second_row_sql = "SELECT parent_id, forum_id, forum_name FROM phpbb_forums WHERE forum_type=1 AND parent_id=".$first_row['forum_id']." ORDER by forum_name DESC";
        $second_row_db->query($second_row_sql);

        while ($second_row = $second_row_db->fetch()){
          $second_row_left_id = ++$CurRow;
          $third_row_sql = "SELECT parent_id, forum_id, forum_name FROM phpbb_forums WHERE forum_type=1 AND parent_id=".$second_row['forum_id']." ORDER by forum_name DESC";

          if($second_row['forum_id'] != ''){
            $third_row_db->query($third_row_sql);

            while ($third_row = $third_row_db->fetch()){
              $third_row_left_id = ++$CurRow;
              $fourth_row_sql = "SELECT parent_id, forum_id, forum_name FROM phpbb_forums WHERE forum_type=1 AND parent_id=".$third_row['forum_id']." ORDER by forum_name DESC";

              if($third_row['forum_id'] != ''){
                $fourth_row_db->query($fourth_row_sql);

                while ($fourth_row = $fourth_row_db->fetch()){
                  $fourth_row_left_id = ++$CurRow;
                  $fourth_row_right_id = ++$CurRow;
                  $fourth_row_sql_update = "UPDATE phpbb_forums SET left_id=".$fourth_row_left_id.", right_id=".$fourth_row_right_id." WHERE forum_id=".$fourth_row['forum_id'];
                  $fourth_row_db_update->query($fourth_row_sql_update);
                }
              }
              $third_row_right_id = ++$CurRow;
              $third_row_sql_update = "UPDATE phpbb_forums SET left_id=".$third_row_left_id.", right_id=".$third_row_right_id." WHERE forum_id=".$third_row['forum_id'];
              $third_row_db_update->query($third_row_sql_update);
            }
          }
          $second_row_right_id = ++$CurRow;
          $second_row_sql_update = "UPDATE phpbb_forums SET left_id=".$second_row_left_id.", right_id=".$second_row_right_id." WHERE forum_id=".$second_row['forum_id'];
          $second_row_db_update->query($second_row_sql_update);
        }
      }
      $first_row_right_id = ++$CurRow;
      $first_row_sql_update = "UPDATE phpbb_forums SET left_id=".$first_row_left_id.", right_id=".$first_row_right_id." WHERE forum_id=".$first_row['forum_id'];
      $first_row_db_update->query($first_row_sql_update);
    }
  }