Beschreibung von Datenbankfeldern phpbb_forums

In diesem Forum kann man Fragen zur Programmierung stellen, die bei der Entwicklung von Mods für phpBB 3.0.x oder dem Modifizieren des eigenen Forums auftauchen.
Forumsregeln
phpBB 3.0 hat das Ende seiner Lebenszeit überschritten
phpBB 3.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 3.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf die neuste phpBB-Version, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
McUles
Mitglied
Beiträge: 40
Registriert: 27.08.2007 20:57
Wohnort: Schweinfurt

Beschreibung von Datenbankfeldern phpbb_forums

Beitrag 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.
Benutzeravatar
nickvergessen
Ehrenadmin
Beiträge: 11559
Registriert: 09.10.2006 21:56
Wohnort: Stuttgart, Germany
Kontaktdaten:

Re: Beschreibung von Datenbankfeldern phpbb_forums

Beitrag 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.
kein Support per PN
McUles
Mitglied
Beiträge: 40
Registriert: 27.08.2007 20:57
Wohnort: Schweinfurt

Beitrag von McUles »

Dank dir für deine Antwort, dann denke ich das das jetzt funktionieren sollte.
Never touch a running system.
McUles
Mitglied
Beiträge: 40
Registriert: 27.08.2007 20:57
Wohnort: Schweinfurt

Beitrag 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...
Never touch a running system.
Benutzeravatar
nickvergessen
Ehrenadmin
Beiträge: 11559
Registriert: 09.10.2006 21:56
Wohnort: Stuttgart, Germany
Kontaktdaten:

Beitrag von nickvergessen »

die Felder sind eigentlich utf8_bin wichtig beim Daten sammeln ist auch requestvar('name', '', true);
kein Support per PN
McUles
Mitglied
Beiträge: 40
Registriert: 27.08.2007 20:57
Wohnort: Schweinfurt

Beitrag 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 ^^
Zuletzt geändert von McUles am 15.04.2008 17:56, insgesamt 1-mal geändert.
Never touch a running system.
Benutzeravatar
nickvergessen
Ehrenadmin
Beiträge: 11559
Registriert: 09.10.2006 21:56
Wohnort: Stuttgart, Germany
Kontaktdaten:

Beitrag von nickvergessen »

dann kopier doch einfach die Funktion aus phpbb3?
kein Support per PN
McUles
Mitglied
Beiträge: 40
Registriert: 27.08.2007 20:57
Wohnort: Schweinfurt

Beitrag 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.
Never touch a running system.
Benutzeravatar
Mahony
Ehemaliges Teammitglied
Beiträge: 12178
Registriert: 17.11.2005 22:33
Wohnort: Ostfildern Kemnat
Kontaktdaten:

Beitrag von Mahony »

Hallo
Das hier sollte dir weiter helfen Create Forum Without Using ACP





Grüße: Mahony
Taekwondo in Berlin
Wer fragt, ist ein Narr für fünf Minuten, wer nicht fragt, ist ein Narr für immer.
McUles
Mitglied
Beiträge: 40
Registriert: 27.08.2007 20:57
Wohnort: Schweinfurt

Beitrag 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);
    }
  }
Never touch a running system.
Antworten

Zurück zu „[3.0.x] Mod Bastelstube“