Themen automatisch in der Datenbank erstellen
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.
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.
-
- Mitglied
- Beiträge: 7
- Registriert: 25.05.2013 15:02
Themen automatisch in der Datenbank erstellen
Hallo zusammen,
ich habe über die Suche im Forum und per Google leider nur eine alte Anleitung gefunden, die aber nicht mehr aktuell ist.
Ich möchte in meinem Forum eine Art Archiv von Nachrichten-Meldungen anlegen. So dass in einem Unterforum jeden Tag automatisch ein neues Thema generiert wird, in dem als Posts immer ein paar Meldungen automatisch eingetragen werden.
Bisher habe ich diese Meldungen in einer eigenen MySQL-Datenbank archiviert, es wäre aber praktischer diese ins Forum zu stellen, damit sie durchsuchbar sind.
Ich habe also:
1. ein eigenes phpBB Forum mit entsprechender MySQL-Daten
2. ein php-Skript dass bisher jeden Abend die aktuellen Nachrichten-Meldungen von meiner Homepage in eine andere MySQL-Datenbank schreibt
Nun will ich dieses Skript am besten so anpassen, dass es die Meldungen zusätzlich in die Datenbank des Forum schreibt, damit diese eben als Themen dort erscheinen.
In einem alten Eintrag habe ich gelesen, dass ich die Meldunge in die phpbb_posts schreiben könnte. Das habe ich probiert, aber sie erscheinen nicht im Forum. Vermutlich, weil ich keine richtige post_checksum und bbcode_uid anlege, kann das sein?
Kurzum: Wie bekomme ist also externe Daten am besten automatisch als Themen ins Forum generiert?
Danke für jeden Tipp!
ich habe über die Suche im Forum und per Google leider nur eine alte Anleitung gefunden, die aber nicht mehr aktuell ist.
Ich möchte in meinem Forum eine Art Archiv von Nachrichten-Meldungen anlegen. So dass in einem Unterforum jeden Tag automatisch ein neues Thema generiert wird, in dem als Posts immer ein paar Meldungen automatisch eingetragen werden.
Bisher habe ich diese Meldungen in einer eigenen MySQL-Datenbank archiviert, es wäre aber praktischer diese ins Forum zu stellen, damit sie durchsuchbar sind.
Ich habe also:
1. ein eigenes phpBB Forum mit entsprechender MySQL-Daten
2. ein php-Skript dass bisher jeden Abend die aktuellen Nachrichten-Meldungen von meiner Homepage in eine andere MySQL-Datenbank schreibt
Nun will ich dieses Skript am besten so anpassen, dass es die Meldungen zusätzlich in die Datenbank des Forum schreibt, damit diese eben als Themen dort erscheinen.
In einem alten Eintrag habe ich gelesen, dass ich die Meldunge in die phpbb_posts schreiben könnte. Das habe ich probiert, aber sie erscheinen nicht im Forum. Vermutlich, weil ich keine richtige post_checksum und bbcode_uid anlege, kann das sein?
Kurzum: Wie bekomme ist also externe Daten am besten automatisch als Themen ins Forum generiert?
Danke für jeden Tipp!
Verschoben von phpBB 3.0: Administration und Benutzung nach phpBB 3.0: Mod-Bastelstube am 25.05.2013 16:15 durch Kirk
- Elsensee
- Ehemaliges Teammitglied
- Beiträge: 832
- Registriert: 19.05.2010 15:14
- Wohnort: Hamburg
- Kontaktdaten:
Re: Themen automatisch in der Datenbank erstellen
Ich glaube, was du suchst, ist das: https://wiki.phpbb.com/Function.submit_post 

Posts mostly powered by GitHub and phpBB.de Cross-Reference
2015-03-20 - Never forget
2015-03-20 - Never forget

-
- Mitglied
- Beiträge: 7
- Registriert: 25.05.2013 15:02
Re: Themen automatisch in der Datenbank erstellen
Hallo Elsensee,
das sieht gut aus, vielen Dank!
Leider hilft es mir aber nur bedingt, bin nämlich absoluter Anfänger was das Umprogrammieren von phpBB angeht. Einfache PHP-Skripte und MySQL-Abfragen kriege ich hin...
Daher: Wie kann die phpBB-Funktionalität in mein bestehendes PHP-Skript einbauen? Das Skript soll sich quasi im Forum anmelden und einen Text posten.
Gibt es vielleicht irgendwo ein gutes Tutorial für Einsteiger? Ich habe bisher nur das hier https://wiki.phpbb.com/Deutsch:Vorlage_ ... ene_Seiten gefunden. Damit komme ich aber leider nicht klar... Ich brauche ja keine Seite und keine Templates...
das sieht gut aus, vielen Dank!
Leider hilft es mir aber nur bedingt, bin nämlich absoluter Anfänger was das Umprogrammieren von phpBB angeht. Einfache PHP-Skripte und MySQL-Abfragen kriege ich hin...
Daher: Wie kann die phpBB-Funktionalität in mein bestehendes PHP-Skript einbauen? Das Skript soll sich quasi im Forum anmelden und einen Text posten.
Gibt es vielleicht irgendwo ein gutes Tutorial für Einsteiger? Ich habe bisher nur das hier https://wiki.phpbb.com/Deutsch:Vorlage_ ... ene_Seiten gefunden. Damit komme ich aber leider nicht klar... Ich brauche ja keine Seite und keine Templates...
- HabNurNeFrage
- Ehemaliges Teammitglied
- Beiträge: 1627
- Registriert: 17.01.2010 20:22
- Wohnort: An der Ostsee
- Kontaktdaten:
Re: Themen automatisch in der Datenbank erstellen
Hi,
vielleicht findest Du in dieser Mod ein paar passende Passagen:
https://www.phpbb.com/community/viewtop ... 0&t=587212
LG
vielleicht findest Du in dieser Mod ein paar passende Passagen:
https://www.phpbb.com/community/viewtop ... 0&t=587212
LG
| HomeStory.org - the friendly Community | Forum für alle Lebenslagen | <"}))}~ | Nicht nachmachen: Meine phpBB Spielereien |
var shoppen = geld.replace (/geld/g, 'bloedsinn'); if (geld < 1) { return home; };
var shoppen = geld.replace (/geld/g, 'bloedsinn'); if (geld < 1) { return home; };
- Elsensee
- Ehemaliges Teammitglied
- Beiträge: 832
- Registriert: 19.05.2010 15:14
- Wohnort: Hamburg
- Kontaktdaten:
Re: Themen automatisch in der Datenbank erstellen
Ich habe dich so verstanden, dass du das alles in einem externen Skript hast. Das heißt, dass du deine Datei folgendermaßen starten musst:
Nun hast du alles an phpBB-Funktionen parat, was du brauchst... Obwohl.. eine Sache fehlt da noch...
Ich nehme an, du hast einen eigenen User für das Posten der News-Beiträge erstellt. Wie auch immmer.. du brauchst zumindest irgendeinen, der die Themen postet.
Von diesem brauchst du die User-ID.
Hast du die User-ID gefunden, kannst du sie in der folgenden Passage einfügen, die wiederum nach den Zeilen, die ich eben schrieb, einzufügen ist:USER-ID ersetzt du einfach mit der User-ID. Übrigens wird der User, der die Themen schreibt, als unsichtbar angezeigt werden.
Nun musst du noch folgende Zeile hinzufügen, die das bitfield und die bbcode_uid initialisiert:Wenn jetzt deine Nachricht in der Variable $message sein sollte, lautet die nächste Zeile:Dadurch hast du alle Daten zusammen. (Übrigens sind die letzten beiden "true" einmal dafür, dass URLs erlaubt sind und einmal für Smileys.)
Wenn du dachtest, du wärst schon fertig.. Nein.. Nun musst du noch das $data array für die Funktion zum korrekten Eintragen deines Posts erstellen:Fertig? Fast...
Jetzt noch folgende Zeile, um den Post abzusenden:
Wenn alles geklappt hat, liefert diese Funktion übrigens die URL zum Thema. Wenn nicht, liefert sie "false".
Möchtest du dich jetzt noch ganz korrekt abmelden, lautet die nächste Zeile:
Und das war's. 
Code: Alles auswählen
<?php
define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
Ich nehme an, du hast einen eigenen User für das Posten der News-Beiträge erstellt. Wie auch immmer.. du brauchst zumindest irgendeinen, der die Themen postet.
Von diesem brauchst du die User-ID.
Hast du die User-ID gefunden, kannst du sie in der folgenden Passage einfügen, die wiederum nach den Zeilen, die ich eben schrieb, einzufügen ist:
Code: Alles auswählen
$user->session_create(USER-ID, false, false, false);
$auth->acl($user->data);
Nun musst du noch folgende Zeile hinzufügen, die das bitfield und die bbcode_uid initialisiert:
Code: Alles auswählen
$bbcode_uid = $bbcode_bitfield = '';
Code: Alles auswählen
generate_text_for_storage($message, $bbcode_uid, $bbcode_bitfield, $bbcode_flags, true, true);
Wenn du dachtest, du wärst schon fertig.. Nein.. Nun musst du noch das $data array für die Funktion zum korrekten Eintragen deines Posts erstellen:
Code: Alles auswählen
$data = array(
'forum_id' => FOREN_ID, // Die ID des Forums, in welchem das Thema erstellt werden soll
'topic_id' => 0, // 0 heisst: Thema wird neu erstellt.. willst du ja, oder?
'icon_id' => false, // Kein spezielles Icon
'enable_bbcode' => true,
'enable_smilies' => false,
'enable_urls' => true,
'enable_sig' => true,
'message' => $message, // Die Nachricht ist in $message...
'message_md5' => md5($message),
'bbcode_bitfield' => $bbcode_bitfield,
'bbcode_uid' => $bbcode_uid,
'post_edit_locked' => 0,
'topic_title' => THEMEN-TITEL, // Der Titel des Themas.. sei kreativ.. du kannst hier ja auch eine Variable einsetzen.. ;-)
'notify_set' => false,
'notify' => false,
'post_time' => 0,
'forum_name' => '',
'enable_indexing' => true,
'force_approved_state' => true,
);
Jetzt noch folgende Zeile, um den Post abzusenden:
Code: Alles auswählen
submit_post('post', $data['topic_title'], $user->data['username'], POST_NORMAL, $poll_data = array(), $data);
Möchtest du dich jetzt noch ganz korrekt abmelden, lautet die nächste Zeile:
Code: Alles auswählen
$user->session_kill();

Posts mostly powered by GitHub and phpBB.de Cross-Reference
2015-03-20 - Never forget
2015-03-20 - Never forget

-
- Mitglied
- Beiträge: 7
- Registriert: 25.05.2013 15:02
Re: Themen automatisch in der Datenbank erstellen
Hey, Du bist super! Vielen, vielen Dank!
Es läuft auch alles soweit mit den neuen Meldungen, perfekt!
Nur eine Sache klappt nicht: Ich möchte auch die alten Meldungen aus der Datenbank übertragen - und dabei die alten Daten als Post-Zeit nehmen.
Jetzt dachte ich mir einfach, ich nehme das Datum der Archivmeldung, wandele es per strtotime($datum) in eine UNIX-Code um und gebe sie als 'post_time' an.
Das geht aber nicht. Der Post wird trotzdem zur gerade aktuellen Zeit erstellt.
Wenn ich jetzt direkt in die MySQL-Datenbank des Forums gehe und in der Tabelle phpbb_posts die Post-Time und in der Tabelle phpbb-topics die Topic-Time manuell übeschreibe geht's. Aber das wäre bei fast 1000 Archivmeldungen ja viel zu aufwändig.
Wieso übernimmt die Funktion submit_posts meine angegebene post_time nicht? Gibt es eine Alternative?
Edit: Ist das vielleicht ein Fehler in der functions_posting.php? Oder Absicht:
Vielleicht kann ich mir ja - nur für das Überspielen des Archivs - eine passende functions_posting.php basteln?
Es läuft auch alles soweit mit den neuen Meldungen, perfekt!

Nur eine Sache klappt nicht: Ich möchte auch die alten Meldungen aus der Datenbank übertragen - und dabei die alten Daten als Post-Zeit nehmen.
Jetzt dachte ich mir einfach, ich nehme das Datum der Archivmeldung, wandele es per strtotime($datum) in eine UNIX-Code um und gebe sie als 'post_time' an.
Das geht aber nicht. Der Post wird trotzdem zur gerade aktuellen Zeit erstellt.
Wenn ich jetzt direkt in die MySQL-Datenbank des Forums gehe und in der Tabelle phpbb_posts die Post-Time und in der Tabelle phpbb-topics die Topic-Time manuell übeschreibe geht's. Aber das wäre bei fast 1000 Archivmeldungen ja viel zu aufwändig.
Wieso übernimmt die Funktion submit_posts meine angegebene post_time nicht? Gibt es eine Alternative?
Edit: Ist das vielleicht ein Fehler in der functions_posting.php? Oder Absicht:
Code: Alles auswählen
'icon_id' => $data['icon_id'],
'post_time' => $current_time, // hier werden die Daten aus dem $data-Array nicht übernommen
'enable_bbcode' => $data['enable_bbcode'],
'enable_smilies' => $data['enable_smilies'],
'enable_magic_url' => $data['enable_urls'],
'enable_sig' => $data['enable_sig'],
- Elsensee
- Ehemaliges Teammitglied
- Beiträge: 832
- Registriert: 19.05.2010 15:14
- Wohnort: Hamburg
- Kontaktdaten:
Re: Themen automatisch in der Datenbank erstellen
Oh - das ist mir noch gar nicht aufgefallen...
Öffne: includes/functions_posting.php
Suche:Ersetze mit:
Nun kannst du mit strtotime deine Zeit so umwandeln und sie mit dem Array-Key post_time übergeben und dann sollte die jeweilige Zeit so erscheinen. 

Klar.. Ich habe mir mal die Freiheit genommen und das für dich gemacht:bb-newbie2013 hat geschrieben:Vielleicht kann ich mir ja - nur für das Überspielen des Archivs - eine passende functions_posting.php basteln?

Öffne: includes/functions_posting.php
Suche:
Code: Alles auswählen
$current_time = time();
Code: Alles auswählen
$current_time = ($data['post_time']) ? $data['post_time'] : time();

Posts mostly powered by GitHub and phpBB.de Cross-Reference
2015-03-20 - Never forget
2015-03-20 - Never forget

-
- Mitglied
- Beiträge: 7
- Registriert: 25.05.2013 15:02
Re: Themen automatisch in der Datenbank erstellen
Du bist ja der Hammer, tausend Dank!
Läuft wie geschmiert!
Läuft wie geschmiert!
-
- Mitglied
- Beiträge: 7
- Registriert: 25.05.2013 15:02
Re: Themen automatisch in der Datenbank erstellen
Hallo... Sorry, ich brauche doch noch mal einen Tipp:
Habe das alles jetzt ans Laufen gebracht, habe aber die ganze Zeit mit einem extra dafür installierten phpBB3-Froum gearbeitet - falls was schief geht.
Jetzt läuft aber ja alles - zumindest in dem neuen Forum. Ich wollte das Script jetzt also nur schnell mit dem original-Forum laufen lassen - und es kommt sofort eine Fehlermeldung. Vielleicht bin ich zu blöd, aber ich finde den Fehler nicht.
So läuft es prima:
Und so nicht:
Bei dem zweiten stolpert er ein paar Zeilen später über diesen Befehl, der die Nachrichten aus dem Archiv holt:
Es kommt die Fehlermeldung: "[phpBB Debug] PHP Warning: in file /homepages/archiv_ins_forum_posten.php on line 30: mysql_fetch_row() expects parameter 1 to be resource, boolean given"
Aber nur, wenn ich das Root-Verzeichnis des einen Forums angebe, nicht bei dem anderen...
Ich steh total auf dem Schlauch: Warum sollte es mit dem einen Forum gehen, mit dem anderen nicht? Was habe ich übersehen?
Habe das alles jetzt ans Laufen gebracht, habe aber die ganze Zeit mit einem extra dafür installierten phpBB3-Froum gearbeitet - falls was schief geht.
Jetzt läuft aber ja alles - zumindest in dem neuen Forum. Ich wollte das Script jetzt also nur schnell mit dem original-Forum laufen lassen - und es kommt sofort eine Fehlermeldung. Vielleicht bin ich zu blöd, aber ich finde den Fehler nicht.
So läuft es prima:
Code: Alles auswählen
define('IN_PHPBB', true);
$phpbb_root_path = '../phpBB3/'; // das ist mein Forum zum experimentieren
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
include($phpbb_root_path . 'includes/functions_posting.' . $phpEx);
include($phpbb_root_path . 'includes/message_parser.' . $phpEx);
Code: Alles auswählen
define('IN_PHPBB', true);
$phpbb_root_path = '../forum/'; // das ist mein Original-Forum
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
include($phpbb_root_path . 'includes/functions_posting.' . $phpEx);
include($phpbb_root_path . 'includes/message_parser.' . $phpEx);
Code: Alles auswählen
$result=mysql_query("SELECT * FROM News ORDER BY ID ASC");
Aber nur, wenn ich das Root-Verzeichnis des einen Forums angebe, nicht bei dem anderen...
Ich steh total auf dem Schlauch: Warum sollte es mit dem einen Forum gehen, mit dem anderen nicht? Was habe ich übersehen?
- Elsensee
- Ehemaliges Teammitglied
- Beiträge: 832
- Registriert: 19.05.2010 15:14
- Wohnort: Hamburg
- Kontaktdaten:
Re: Themen automatisch in der Datenbank erstellen
Poste doch mal Zeile 30, wenns geht.
Und.. aus welcher Datenbank sind denn die News-Beiträge? Ist die Tabelle in der Datenbank eines bestimmten Forums oder ist die Tabelle in einer externen Datenbank?
Und.. aus welcher Datenbank sind denn die News-Beiträge? Ist die Tabelle in der Datenbank eines bestimmten Forums oder ist die Tabelle in einer externen Datenbank?
Posts mostly powered by GitHub and phpBB.de Cross-Reference
2015-03-20 - Never forget
2015-03-20 - Never forget
