Ik wilde zonet wat toevoegen aan mijn script, maar blijkbaar vind MySQL het moeilijk om de laatste reactie van een onderwerp te pakken. Ook pakt hij het verkeerde id en het begint ondertussen nogal vervelend te worden. Dit is mijn query:
$result = mysqli_query($db, "
SELECT t.title, t.id, t.laster, t.board, u.username, u.id, t.last_msg, t.last_date
FROM " . $sfp['db_pref'] . "threads as t
LEFT JOIN " . $sfp['db_pref'] . "users as u ON t.laster = u.id
WHERE t.id='" . $id_msg . "'
ORDER BY last_msg DESC
");
Blijkbaar pakt hij alleen het bericht met het id "1" en ik kan de fout echt niet vinden. Ik denk dat het komt omdat het id van de gebruiker 1 is, maar ik kan er echt niet meer achter komen. Alvast bedankt voor de reacties!
Dit is de last post functie of altans dat van de query (sfp_last_post):
// Get the message id, user id etc
$result = mysqli_query($db, "
SELECT t.title, t.id, t.laster, t.board, u.username, u.id, t.last_msg, t.last_date
FROM " . $sfp['db_pref'] . "threads as t
LEFT JOIN " . $sfp['db_pref'] . "users as u ON t.laster = u.id
LEFT JOIN " . $sfp['db_pref'] . "boards as b ON t.board = b.id_board
WHERE t.id='" . $id_msg . "'
ORDER BY b.last_msg DESC
");
// Now return the information
while($msginfo = mysqli_fetch_array($result))
echo '
<a href="' . $sfp['forum_file'] . '?thread=' . $msginfo['id'] . '">' . $msginfo['title'] . '</a><br />
By <a href="' . $sfp['forum_file'] . '?act=profile&u=' . sfp_get_id($msginfo['username']) . '">' . $msginfo['username'] . '</a><br />
On ' . date("F j, Y, g:i a", $msginfo['last_date']);
En dit is de query die de topics laat zien:
$result = mysqli_query($db, "
SELECT t.id, t.title, t.thread, t.closed, t.sticky, t.last_msg,
t.replies, t.views, u.id, u.username, t.board
FROM " . $sfp['db_pref'] . "threads as t
LEFT JOIN " . $sfp['db_pref'] . "users as u on t.starter = u.id
LEFT JOIN " . $sfp['db_pref'] . "users as su on t.laster = su.id
WHERE t.board='" . $board . "' AND thread='yes'
");
Zoals ik het nu zie heb je alle replies in de threads tabel, dit kan je beter met een aparte tabel doen. Je kan dan vanuit de reply tabel gaan selecteren en sorteren op de datum, bv (ingekort):
SELECT
r.reply_date,
t.title,
u.user_name,
b.board
FROM
replies AS r
INNER JOIN
threads AS t ON r.thread_id = t.thread_id
users AS u ON t.user_id = u.user_id
boards AS b ON t.board_id = b.board_id
GROUP BY
r.thread_id
ORDER BY
r.reply_date DESC
LIMIT 10
Oke mensen ik schaam me heel erg, maar blijkbaar had ik het id gewoon verkeerd ingesteld in de database. =/ Toch iedereen ontzettend bedankt voor het helpen :)