[SMF] การแสดงหัวข้อหรือกระทู้ล่าสุด (RecentTopics) แบบเขียนเอง
การเขียน php + sql เพื่อแสดงกระทู้ล่าสุดของ SMF อันที่จริงบอร์ด smf เขามีให้ใช้อยู่ แต่ผมไม่ถนัดในการตกแต่งแบบนั้นซะเท่า่ไหร่ จึงเขียนขึ้นมาเอง เพราะสามารถใช้ bootstrap ในการแสดงผลที่สวยงามได้ดีกว่า ที่สำคัญทำให้กระทู้มีคำว่า new หรือ ล่าสุด หรือ ใหม่ หรือ update หรือรูปแสดงอารมณ์บ่งบอกได้ดีกว่า ผมว่านะ
คิดอยู่ทั้งคืนว่าจะเขียนออกมายังไง เอาค่าเวลาไปเซ็คกับกระทู้ยังไงให้ ออกมาว่ามีคนมาตอบแล้วนะ ให้ขึ้นล่าสุด ถ้าเพิ่งมาตั้งกระทู้ใหม่ก็ให้ขึ้นว่า
แบบนี้จะออกมาเป็น code แบบไหนกันมาดูเลยครับ
ส่วน function ที่เรียกหาคือ
การเขียน php + sql เพื่อแสดงกระทู้ล่าสุดของ SMF อันที่จริงบอร์ด smf เขามีให้ใช้อยู่ แต่ผมไม่ถนัดในการตกแต่งแบบนั้นซะเท่า่ไหร่ จึงเขียนขึ้นมาเอง เพราะสามารถใช้ bootstrap ในการแสดงผลที่สวยงามได้ดีกว่า ที่สำคัญทำให้กระทู้มีคำว่า new หรือ ล่าสุด หรือ ใหม่ หรือ update หรือรูปแสดงอารมณ์บ่งบอกได้ดีกว่า ผมว่านะ
คิดอยู่ทั้งคืนว่าจะเขียนออกมายังไง เอาค่าเวลาไปเซ็คกับกระทู้ยังไงให้ ออกมาว่ามีคนมาตอบแล้วนะ ให้ขึ้นล่าสุด ถ้าเพิ่งมาตั้งกระทู้ใหม่ก็ให้ขึ้นว่า
แบบนี้จะออกมาเป็น code แบบไหนกันมาดูเลยครับ
< ?php include("config.php"); $cupreportdb = "forum"; mysql_connect($host,$user,$passwd) ; mysql_select_db($cupreportdb); mysql_query("SET NAMES UTF8"); mysql_query("SET character_set_results=utf8"); mysql_query("SET character_set_client=utf8"); mysql_query("SET character_set_connection=utf8"); $sql6="SELECT *,MAX(poster_time) as postreply FROM smf_messages a,smf_boards b WHERE a.id_board=b.id_board and b.id_cat='2' and a.id_board='16' GROUP BY id_topic ORDER BY poster_time DESC limit 10"; $result6=mysql_query($sql6); while($rs6=mysql_fetch_array($result6)) { $id_board=$rs6[id_board]; $id_topic=$rs6[id_topic]; $subject=$rs6[subject]; $poster_name=$rs6[poster_name]; $poster_timex=$rs6[poster_time]; $postreply=$rs6[postreply]; $poster_time=date("Y-m-d H:i:s",$poster_timex); //เพิ่มรูปกระทู้ใหม่ if($Logtime<=($poster_timex+86400) && $poster_timex>0) { //172800 วินาที = 2วัน 86400 = 1day $chknew="<img src='new-icon.gif'/>"; }else { $chknew=""; } //เพิ่มรูปตอบกลับ if($Logtime< =($postreply+179800) && $postreply>0) { //172800 วินาที = 2วัน 86400 = 1day $chknew2="<img src='update.gif'/>"; }else { $chknew2=""; } // แสดงคำถาม echo "<a href="http://cupphonsai.thaiddns.com/forum/index.php?topic=$id_topic.0" target="_blank" class="list-group-item"><i class="fa fa-comment fa-fw"></i>$subject <span class="pull-right text-muted small"><em>by $poster_name : $poster_time $chknew $chknew2 </em></span> </a>"; } ?>ช่วงแสดงคำถามก็จัด style bootstrap ได้เลย
ส่วน function ที่เรียกหาคือ
//(1) ปรับเวลาให้ตรงกับเวลาเมืองไทย กรณีที่ server อยู่ที่เมืองนอก โดยความสำคัญอยู่ที่ตัวแปร $hour และ $min $hour = 0; //ปรับให้ตรงตามต้องการ เช่น เป็นค่าบวก หรือค่าลบ เพื่อให้เวลาของ server ตรงกับเวลาจริง $min = 0; //ปรับให้ตรงตามต้องการ $Year = date("Y")+543; $thaimonth=array("ม.ค.","ก.พ.","มี.ค.","เม.ย.","พ.ค.","มิ.ย.","ก.ค.","ส.ค.","ก.ย.","ต.ค.", "พ.ย.","ธ.ค."); // 12:36 $mtime = date("H:i",mktime( date("H")+$hour, date("i")+$min )); // 03 ส.ค. 2544 $m2date = date("d ",mktime( date("H")+$hour, date("i")+$min )). $thaimonth[date("m")-1]." ".$Year; // ได้ค่าเป็น วินาที นับจากปี ค.ศ.1900 $Logtime = date("U",mktime( date("H")+$hour, date("i")+$min ));
[SMF] การแสดงหัวข้อหรือกระทู้ล่าสุด (RecentTopics) แบบเขียนเอง
Reviewed by IOffer
on
กรกฎาคม 15, 2560
Rating:
ไม่มีความคิดเห็น:
แสดงความคิดเห็น