Simple Machines Community Forum

SMF Support => Language Specific Support => Hilfe zu SMF (German) => Aiheen aloitti: Hondo - lokakuu 26, 2005, 02:45:56 IP

Otsikko: Neueste Themen
Kirjoitti: Hondo - lokakuu 26, 2005, 02:45:56 IP
Hallo,
ich versuche gerade auf der Portalseite www.mkportal-support.de einen Block neueste Themen zu erstellen. Hierzu folgende Abfrage:

$sql = "
Select
t.ID_TOPIC, t.ID_BOARD, t.ID_FIRST_MSG, t.ID_LAST_MSG, t.ID_MEMBER_STARTED, t.ID_MEMBER_UPDATED, t.numReplies, t.numViews, b.name AS bName
FROM {$db_prefix}topics AS t, {$db_prefix}boards AS b
Where b.ID_BOARD = t.ID_BOARD" . (!empty($modSettings['recycle_enable']) && $modSettings['recycle_board'] > 0 ? " AND b.ID_BOARD != $modSettings[recycle_board]" : '') . "
AND $user_info[query_see_board]
Order by t.ID_TOPIC DESC
Limit $limit";

Das Funktioniert ja auch schon soweit, aber wenn jemand auf einen älteren Beitrag eine Antwort schreibt wird dies nicht berücksichtigt. Wie könnte ich obige Abfrage ändern dass nicht die neuesten Themen sondern die Themen mit den neuesten Antworten gezeigt werden.

Gruß Andreas
Otsikko: Re: Neueste Themen
Kirjoitti: noex - lokakuu 26, 2005, 03:24:34 IP
Ähm, Frage. Wenn ich mir diesen SQL Befehl so ansehe liefert der ja keine "Titel/Betreffs" mit!?
Noch eine Frage: Wieso verwendest du dazu nicht die SSI.php? die würde dir doch das gewünschte liefern, oder?

lg
noex
Otsikko: Re: Neueste Themen
Kirjoitti: Hondo - lokakuu 26, 2005, 03:27:24 IP
Richtig.
Die Abfrage liefert mir nur sämtliche ID´s die ich benötige. In der While-Abfrage habe ich dann weitere Queries.
SSI.php? Ich weiss zwar dass es die gibt aber wozu keine Ahnung.

Andreas
Otsikko: Re: Neueste Themen
Kirjoitti: noex - lokakuu 26, 2005, 03:32:22 IP
SSI liefert dir Daten von deinem SMF Forum für deine Homepage, dieses PHP Script bindest du in deiner Homepage ein und kannst dir dann die verschiedensten Funktionen aufrufen. Login / Logout / Wer ist Online / Neueste Themen / Neueste Topics / uvm.....


Hier einmal die Funktionen der SSI.php:
http://www.simplemachines.org/community/ssi_examples.php

und wenn du die SSI.php aufrust, zB.: mit RecentTopics würde eine ausgabe so aussehen:
http://www.simplemachines.org/community/SSI.php?ssi_function=recentTopics

Weitere Infos zu SSI gibts in den FAQ.

Du kannst bei fast jeder Funktion auch noch Parameter übergeben, zB. wieviele von den neuesten Topics, etc.

Am besten mal in die SSI.php reinschauen.

lg
noex

:EDIT
du würdest eher das hier brauchen (SSI Funktion recentPosts, da sind auch die Themen mit Antworten dabei):
http://www.simplemachines.org/community/SSI.php?ssi_function=recentPosts
Otsikko: Re: Neueste Themen
Kirjoitti: Hondo - lokakuu 26, 2005, 03:39:01 IP
Das sieht ja schon sehr gut aus.
So wie ich gesehen habe werden die Daten in der Funktion in einem Array abgelegt das zurückgegeben wird.
Kann ich dann von einer anderen Funktion aus SSI includieren und die Funktion aufrufen?
Wie komm ich dann an das Array dran?

Andreas
Otsikko: Re: Neueste Themen
Kirjoitti: noex - lokakuu 26, 2005, 03:44:07 IP
Ich habe es so gemacht:

SSI.php includen
<?php require("SSI.php"); ?>
(Pfad anpassen)

Dann:
$ssi_NewsOutput = ssi_boardNews(32,1,0,1700,'array');

Du müsstest natürlich deine SSI Funktion aufrufen und die Übergabeparameter anpassen.
Somit kannst du mit $ssi_NewsOutput auf das Array zugreifen.

lg
noex
Otsikko: Re: Neueste Themen
Kirjoitti: Hondo - lokakuu 26, 2005, 03:46:09 IP
OK, danke.
Werde das morgen mal ausprobieren.

Gruß Andreas
Otsikko: Re: Neueste Themen
Kirjoitti: Hondo - lokakuu 27, 2005, 03:13:50 AP
OK, danke,
klappt jetzt.

Andreas
Otsikko: Re: Neueste Themen
Kirjoitti: Hondo - lokakuu 27, 2005, 04:11:54 AP
Hallo,
einen großen Nachteil hat das ganze aber schon.
Die Funktion ssi_recentTopics liefert nur die Daten über den den letzten Poster, nichtst über den Themenstarter, nicht über die anzahl der Antworten oder der Views.

Andreas
Otsikko: Re: Neueste Themen
Kirjoitti: noex - lokakuu 27, 2005, 03:14:14 IP
Wenn du den SQL Befehl erweiterst bekommst du die Anzahl der Antworten und der Views.
Ändere den SQL Befehl von:
m.posterTime, ms.subject, m.ID_TOPIC, m.ID_MEMBER, m.ID_MSG, b.ID_BOARD, b.name AS bName,

auf:
m.posterTime, ms.subject, m.ID_TOPIC, m.ID_MEMBER, m.ID_MSG, b.ID_BOARD, b.name AS bName, t.numViews, t.numReplies,


und erweitere das Array:
Suche
'topic' => $row['ID_TOPIC'],


Ersetze:
'topic' => $row['ID_TOPIC'],
'num_replies' => $row['numReplies'],
'num_views' => $row['numViews'],


Ist ungetestet, sollte aber funktionieren.

Das mit dem Themenstarter weiß ich jetzt leider nicht auswending. Muss ich mir noch genauer ansehen, wenn du dies unbedingt benötigst.

lg
noex
Otsikko: Re: Neueste Themen
Kirjoitti: Andy42 - marraskuu 15, 2006, 04:39:16 IP
Lainaus käyttäjältä: Hondo - lokakuu 26, 2005, 02:45:56 IP
$sql = "
Select
t.ID_TOPIC, t.ID_BOARD, t.ID_FIRST_MSG, t.ID_LAST_MSG, t.ID_MEMBER_STARTED, t.ID_MEMBER_UPDATED, t.numReplies, t.numViews, b.name AS bName
FROM {$db_prefix}topics AS t, {$db_prefix}boards AS b
Where b.ID_BOARD = t.ID_BOARD" . (!empty($modSettings['recycle_enable']) && $modSettings['recycle_board'] > 0 ? " AND b.ID_BOARD != $modSettings[recycle_board]" : '') . "
AND $user_info[query_see_board]
Order by t.ID_TOPIC DESC
Limit $limit";
Hallo

Liest sich sehr interessant und ich möchte auch einen solchen Block erstellen. Doch was für einen Block braucht es dazu und kann ich die obige Abfrage einfach dort reinkopieren oder muss sie in eine Datei?

MfG
Andy42