02. december 2012 - 15:05Der er
5 kommentarer og 1 løsning
Hjælp med order by funktionen
Hej. Jeg benytter et panel på min side, som viser de senest oprettede tråde for forummet. Jeg vil gerne have, at den skal gå ud fra de seneste oprettede tråde, og ikke de senest oprettede posts i tråden. Nogle der kan hjælpe med dette?
Lige nu er den: ORDER BY tt.thread_lastpost DESC LIMIT ".($min + $max) altså ud fra last post, men jeg vil have det skal være order by thread kun. Nogle der kender løsningen her?
tt.thread_id,tt.thread_locked,tt.thread_subject,tt.thread_author,tt.thread_views, tt.thread_lastpost,tt.thread_lastuser, tt.thread_postcount, tt.thread_lastpostid as last_id, if(tt.thread_lastpost>$lastvisited,1,0) as new_post, tu.user_id, tu.user_name as user_name, tau.user_name as author,
tp.post_message, tp.post_smileys
FROM ".DB_THREADS." tt INNER JOIN ".DB_FORUMS." tf USING(forum_id) INNER JOIN ".DB_POSTS." tp USING(thread_id) INNER JOIN ".DB_USERS." tu ON tt.thread_lastuser=tu.user_id INNER JOIN ".DB_USERS." tau ON tt.thread_author=tau.user_id WHERE ".groupaccess('forum_access')." AND tf.forum_id IN (2,3,4,5,6,7,8) AND tt.thread_lastpostid = tp.post_id ORDER BY tt.thread_lastpost DESC LIMIT ".($min + $max) );
Du vil ordne efter seneste oprettede tråde, ikke som nu efter seneste oprettede posts. Hvordan ved du hvilke tråde er de seneste oprettede tråde? Er de seneste oprettede tråde de med de højeste thread_id? I så fald må det vel være ORDER BY tt.thread_id DESC. Eller sidder der i tabelen DB_THREADS en oprettelsesdato for trådene? Såsom thread_date? I så fald prøv med ORDER BY tt.thread_date DESC.
Hej. mange tak for det :) ORDER BY tt.thread_id DESC var det korrekte. Men jeg har en lignende kode, som jeg ikke rigtig kan få til at gøre det samme.
Jeg har forsøgt, at inkludere thread_id, men det har ikke fungeret. Kan det også lade sig gøre ved denne?
$result = dbquery( "SELECT t.*, tu1.user_name AS usejava script: void(0);r_author, tu1.user_status AS status_author, tu2.user_name AS user_lastuser, tu2.user_status AS status_lastuser
FROM ".DB_THREADS." t LEFT JOIN ".DB_USERS." tu1 ON t.thread_author = tu1.user_id LEFT JOIN ".DB_USERS." tu2 ON t.thread_lastuser = tu2.user_id WHERE t.forum_id='".$_GET['forum_id']."' AND thread_hidden='0' ORDER BY thread_lastpost DESC LIMIT ".$_GET['rowstart'].",$threads_per_page");
Du fortæller, at du 'ikke rigtigt kan få det til at gøre det samme.' Den beskrivelse af problemet giver ikke så meget at gå efter.
Jeg kan ikke rigtigt gennemskue det med usejava script void(0). Jeg foreslår, at du for den følgende test skipper dette og skipper LIMIT ".$_GET['rowstart'].",$threads_per_page og så erstatter ORDER BY thread_lastpost DESC med ORDER BY t.thread_id DESC. Så bliver forespørgslen denne:
$result = dbquery( "SELECT t.*, tu1.user_name AS user_author, tu1.user_status AS status_author, tu2.user_name AS user_lastuser, tu2.user_status AS status_lastuser FROM ".DB_THREADS." t LEFT JOIN ".DB_USERS." tu1 ON t.thread_author = tu1.user_id LEFT JOIN ".DB_USERS." tu2 ON t.thread_lastuser = tu2.user_id WHERE t.forum_id='".$_GET['forum_id']."' AND thread_hidden='0' ORDER BY t.thread_id");
Med denne tilrettede forespørgsel, hvad får du så at se? Forhåbenligt resultatet af søgningen ordnet efter trådenes alder (eller thread_id). Får du noget andet? Var det noget andet du ville have?
Hej. Jeg har forsøgt med din kode, men det gør det omvendte. Forstået på den måde, at de ældeste forum tråde kommer øverst og de nyeste oprettede forum tråde ligger nederst. Det skal være omvendt, så de nyeste forum tråde ligger øverst..
Nu kommunikerer vi - du forklarer hvad du forventer og hvad der sker i stedet. Så kan vi gøre noget ved det. Du siger, at "ORDER BY t.thread_id" sorterer trådene i rækkefølge med det ældste først. Du vil have de nyeste først. Det får du så med "ORDER BY t.thread_id DESC.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.