Seite 1 von 1

phpbb als News-System nutzen mit Kommentaren

Verfasst: 19.04.2006 14:40
von Pada
Hallo,

Ich schreibe auf meiner Webseite alle News 2 mal.
Einmal in eine externe php Datei und einmal direkt ins Forum.
Ich mache also zu jeder neuen News, einen extra Thread im Forum "News" auf.

Ich möchte nun unter der Newsnachricht in der externen php Datei, einen Link in den entsprechenden Thread setzen.

Der Link sollte so ausehen:

Code: Alles auswählen

Kommentare (12)
Der Link so also immer automatisch generiert werden und anzeigen, wie oft auf den Thread schon geantortet worden ist.

Welchen SLQ Befhel bracuhe ich da.
(achtung ich bin Anfänger also bitte nicht Fachsprache)

Verfasst: 19.04.2006 14:52
von S2B
Entweder du verwendest den "Cache" aus der Topic-Tabelle:

Code: Alles auswählen

SELECT topic_replies FROM phpbb_topics
  WHERE topic_id = <deine Topic-ID>
oder du lässt die Anzahl der Posts zählen:

Code: Alles auswählen

SELECT COUNT(p.post_id) AS topic_replies FROM phpbb_topics t, phpbb_posts p
  WHERE p.topic_id = t.topic_id
    AND p.post_id <> t.topic_first_post_id
    AND t.topic_id = <deine Topic-ID>
Für <deine Topic-ID> musst du dann die ID des entsprechenden Themas in deinem Forum eintragen.

Das ganze kannst du mit den [php:mysql]-Funktionen (=> mysql_query()) ausführen und entweder mit mysql_fetch_row()/mysql_fetch_array()/mysql_fetch_assoc() oder mit mysql_result() die Anzahl aus dem Ergebnis holen. :wink:

Verfasst: 19.04.2006 15:18
von Pada
Vielen Dank schonmal.

Ich tu mich leider sehr schwer, den Befehl selbstständig zu formulieren. auch mit Hilfe deiner Seite da ich fast kein php kann und gar kein MySLQ...

Mir würde also nur der ganze Befehl weiter helfen...danke

Verfasst: 19.04.2006 15:38
von 123teddy321
das ist doch der ganze befehl :wink:

Verfasst: 19.04.2006 16:38
von S2B
Auf der von mir verlinkten Seite ist (imho) ein Beispiel zu den MySQL-Funktionen. Du musst nur noch das Query ändern und dir die von dir gewünschte Ausgabeart aussuchen (ich würde an der Stelle einfach mysql_result() verwenden, da ja nur ein Wert zurückgegeben wird).

Verfasst: 19.04.2006 17:02
von Pada
S2B hat geschrieben:Auf der von mir verlinkten Seite ist (imho) ein Beispiel zu den MySQL-Funktionen. Du musst nur noch das Query ändern und dir die von dir gewünschte Ausgabeart aussuchen (ich würde an der Stelle einfach mysql_result() verwenden, da ja nur ein Wert zurückgegeben wird).
sorry aber die Seite ist relativ lang und wenn man noch nie was mit MySLQ gemacht hat, ist es schwierig da was heraus zu finden.

Ich hab jetzt seit 1 Stunde herumprobiert, aber nix gefunden was mich weiter bringt.

Wenn das ganze anscheinend so einfach ist, schafft es vielleicht ja doch noch jemand mir den Befehl komplett zugeben, so dass ich nur noch die Verbindungsdaten und die Topic-ID eingeben muss.

Vielen Dank

Verfasst: 19.04.2006 19:54
von S2B
Zuerst mal: MySQL. :wink:

Das ist 1:1 der Beispiel-Code auf der von mir verlinkten Seite:

Code: Alles auswählen

<?php
/* Verbindung aufbauen, auswählen einer Datenbank */
$link = mysql_connect("mysql_host", "mysql_user", "mysql_password")
   or die("Keine Verbindung möglich: " . mysql_error());
echo "Verbindung zum Datenbankserver erfolgreich";
mysql_select_db("Meine_Datenbank") or die("Auswahl der Datenbank fehlgeschlagen");

/* ausführen einer SQL Anfrage */
$query = "SELECT * FROM Meine_Tabelle";
$result = mysql_query($query) or die("Anfrage fehlgeschlagen: " . mysql_error());

/* Ausgabe der Ergebnisse in HTML */
echo "<table>\n";
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
   echo "\t<tr>\n";
   foreach ($line as $col_value) {
       echo "\t\t<td>$col_value</td>\n";
   }
   echo "\t</tr>\n";
}
echo "</table>\n";

/* Freigeben des Resultsets */
mysql_free_result($result);

/* schliessen der Verbinung */
mysql_close($link);
?> 
Man nehme die Ausgabe heraus (wir brauchen ja etwas Anderes) und füge das Query ein. $topic_id ist die Variable für die ID des Topics

Code: Alles auswählen

<?php
/* Verbindung aufbauen, auswählen einer Datenbank */
$link = mysql_connect("mysql_host", "mysql_user", "mysql_password")
   or die("Keine Verbindung möglich: " . mysql_error());
echo "Verbindung zum Datenbankserver erfolgreich";
mysql_select_db("Meine_Datenbank") or die("Auswahl der Datenbank fehlgeschlagen");

/* ausführen einer SQL Anfrage */
$query = "SELECT COUNT(p.post_id) AS topic_replies FROM phpbb_topics t, phpbb_posts p
  WHERE p.topic_id = t.topic_id
    AND p.post_id <> t.topic_first_post_id
    AND t.topic_id = $topic_id";
$result = mysql_query($query) or die("Anfrage fehlgeschlagen: " . mysql_error());

/* An diese Stelle kommt die Auswertung des Queries */

/* Freigeben des Resultsets */
mysql_free_result($result);

/* schliessen der Verbinung */
mysql_close($link);
?>
So weit hättest du eigentlich ohne Probleme kommen können. Was jetzt noch fehlt, ist die Auswertung, also wie du jetzt den abgefragten Wert in eine Variable bekommst und ihn nachher verwenden kannst:

Code: Alles auswählen

// Lösung mit mysql_result
$topic_replies = mysql_result($result, 0);

// Lösung mit mysql_fetch_assoc
$row = mysql_fetch_assoc($result);
$topic_replies = $row['topic_replies'];
Und das war's auch schon... :wink:

Verfasst: 23.06.2006 16:31
von
hallo,
weiss nicht ob's noch hilft aber es gibt da nen ziemlich guten aufsatz für phpbb der dir helfen könnte und zwar der phpbb blog...
man richtet ein neues forum ein (zb. news) und postet dort die news rein, die man dann auch nochmal per phpbb blog auf http://deinedomain.de/blog?undso1 anzeigen kann ...

wenn dir das immer noch zu unflexible ist dann kannst du auch noch phpbb fetch benutzen - selbes prinzip wie oben. allerdings kannst du die post aus forum news per phpbbfetch überall anzeigen lassen - soweit wie ich das verstanden habe ...

Verfasst: 25.06.2006 20:21
von SkullCrusher
Hey Klasse, so was hab ich gesucht! :)

Doch kommt bei mir folgende Fehlermeldung
Warning: mysql_result(): 21 is not a valid MySQL result resource in C:\Programme\xampp\htdocs\phpBB2\news.php on line 30

Dies ist bei beiden Lösungsvorschlägen der Fall. Muss hieran noch etwas geändert werden? Ich kenn mich leider immer noch nicht aus! :(


Hoffe, dass ihr mir auch diesmal helfen könnt!

Danke
SkullCrusher