Seite 3 von 4

Verfasst: 18.11.2006 11:34
von marjac99
Da werd ich jetzt überhaupt nicht schlau draus, aus dem was da zu sehen ist... :roll:

Verfasst: 18.11.2006 12:07
von Miriam
Sehr schön,


Suche in Deiner jetzigen portal.php

Code: Alles auswählen

$sql = "SELECT post_id FROM " . POSTS_TABLE;
if ( !($result = $db->sql_query($sql)) )
{
        message_die(GENERAL_ERROR, 'Could not obtain matched posts list', '', __LINE__, __FILE__, $sql);
}
und ersetze ihn gegen:

Code: Alles auswählen

$sql = "SELECT post_id FROM " . POSTS_TABLE . " LIMIT 100";
if ( !($result = $db->sql_query($sql)) )
{
        message_die(GENERAL_ERROR, 'Could not obtain matched posts list', '', __LINE__, __FILE__, $sql);
}

Verfasst: 18.11.2006 12:22
von marjac99
:o Es funktioniert!!! [ externes Bild ]

Du bist genial, Danke!!!!! :D

Verfasst: 18.11.2006 12:46
von marjac99
Ähh.. Miriam? :oops:

Die "letzten Beiträge" sind aber nicht die letzten Beiträge... :-?
Wie kommt das?

Siehst du hier

Verfasst: 18.11.2006 13:02
von easygo
Wen wunderts? LIMIT setzen ohne ORDER
- das ist dann halt wie Lotto

Versuch(t)s mal so

Code: Alles auswählen

$sql = "SELECT post_id FROM " . POSTS_TABLE . "
	ORDER BY post_time DESC LIMIT 0,100";
wobei das mit der 100 als LIMIT ja auch für die Wiesen ist, falls die letzten hundert Posts
im schlimmsten Fall mal in nem einzigen Laberthread stehn und so gesehn..

Code: Alles auswählen

$sql = "SELECT DISTINCT(topic_id), post_id FROM " . POSTS_TABLE . "
	ORDER BY post_time DESC LIMIT 0,$limit";

Verfasst: 18.11.2006 15:21
von mgutt
Was soll dieser Quatsch überhaupt. Um die letzten Posts anzuzeigen braucht man nur zwei Abfragen.. einmal welche Foren, darf der User nicht sehen und dann dann ruft man die letzten Beiträge ab.

Das ist jetzt keinesfalls die Lösung, aber der ungefähre Ansatz zum Verständnis:

Code: Alles auswählen

		// read topics
		$limit = 25; // so viele sollen angezeigt werden
		$auth_sql = ''; // hier müssen die foren ids rein, in der der User Zugang hat.. z.B.  AND f.forum_id NOT IN(' . implode(', ', $exclude_forums) . ')' es geht aber auch f.forum_id <> $exclude_forum_id, wenn es nur eins ist.
		$sql = 'SELECT t.*
					FROM ' . TOPICS_TABLE . ' t, ' . FORUMS_TABLE . ' f
					WHERE f.forum_id = t.forum_id
						AND ' . $auth_sql . '
					ORDER BY t.topic_last_time DESC
					LIMIT ' . $limit; 
Gruß

Verfasst: 18.11.2006 15:58
von Miriam
So, ihr Feintuner,
die Problem-SQL Abfrage, die das Fass zum Überlaufen gebracht hat, wurde also erst einmal lokalisiert.
easygo hat geschrieben:wobei das mit der 100 als LIMIT ja auch für die Wiesen ist, falls die letzten hundert Posts
im schlimmsten Fall mal in nem einzigen Laberthread stehn und so gesehn..

Code: Alles auswählen

$sql = "SELECT DISTINCT(topic_id), post_id FROM " . POSTS_TABLE . "
	ORDER BY post_time DESC LIMIT 0,$limit";
Und was passiert, wenn blöderweise die letzten $limit-Topics in einem Forum stehen, die der User nicht betreten oder sonst irgendwie schauen darf?

Also ist hier wohl noch eine kleine WHERE-Klausel fällig. *gell*

Aber ich denke mal, dass es reichen sollte, anstatt

Code: Alles auswählen

$sql = "SELECT post_id FROM " . POSTS_TABLE . " LIMIT 100;
easys ersten Vorschlag einzusetzen. Also:

Code: Alles auswählen

$sql = "SELECT post_id FROM " . POSTS_TABLE . "
   ORDER BY post_time DESC LIMIT 0,100";
Vllt noch das LIMIT etwas heraufsetzen und gut is'.

Jemand weitere Vorschläge?

Verfasst: 19.11.2006 01:03
von marjac99
Miriam hat geschrieben:So, ihr Feintuner,
die Problem-SQL Abfrage, die das Fass zum Überlaufen gebracht hat, wurde also erst einmal lokalisiert.

Code: Alles auswählen

$sql = "SELECT post_id FROM " . POSTS_TABLE . "
   ORDER BY post_time DESC LIMIT 0,100";
Vllt noch das LIMIT etwas heraufsetzen und gut is'.

Jemand weitere Vorschläge?
Da nix anderes mehr von euch Spezialisten kommt, ergänze ich oben den Teil, gelle? :wink:

Edit: Habs reingesetzt, getestet.... es klappt! :grin:

Danke euch!

Verfasst: 19.11.2006 10:37
von Miriam
Das sollte jetzt halten.... Bis auf weiteres. :D

Verfasst: 19.11.2006 13:54
von mgutt
Sowas tut in den Augen weh. Aber ich guck dann mal weg. Wird Zeit, dass den Portal Mod mal jemand überarbeitet :roll: