Uutiset:

SMF 2.1.4 has been released! Take it for a spin! Read more.

Main Menu
Advertisement:

Neueste Themen

Aloittaja Hondo, lokakuu 26, 2005, 02:45:56 IP

« edellinen - seuraava »

Hondo

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

noex

Ä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
"Jetzt, wo ich weiß wie es geht, versteh ich auch die Gebrauchsanleitung"

Hondo

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

noex

#3
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
"Jetzt, wo ich weiß wie es geht, versteh ich auch die Gebrauchsanleitung"

Hondo

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

noex

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
"Jetzt, wo ich weiß wie es geht, versteh ich auch die Gebrauchsanleitung"

Hondo

OK, danke.
Werde das morgen mal ausprobieren.

Gruß Andreas

Hondo

#7
OK, danke,
klappt jetzt.

Andreas

Hondo

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

noex

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
"Jetzt, wo ich weiß wie es geht, versteh ich auch die Gebrauchsanleitung"

Andy42

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

Advertisement: