เรื่องนี้ค่อนข้างละเอียดอ่อนดังนั้นขอให้ไปอ่านเนื้อหาที่เกี่ยวข้อง 2 เรื่องด้วยกันคือ
1. การดึงข้อมูลมาแสดงหน้าเว็บ ด้วยการเชื่อมต่อฐานข้อมูล
2. จะดึงภาพจากฐานข้อมูลโดยใช้ tag [img]...[ img] อ่านสองเรื่องนี้แล้วชีวิตคุณจะดีขึ้น
ปัญหาหนักอกตอนที่เราเริ่มทำครั้งแรกและหลาย ๆ ต่อที่ตามมาก็คือมันดึงไม่ได้ จึงได้ลองเปลี่ยนโค้ด เงื่อนไข จิปาถะ ก็ยังไม่ได้ เลยเปลี่ยนเป็นดึงจากระบบอื่นที่ไม่ใช้บอร์ด phpbb ผลที่ได้คือมันใช้ได้ โค้ดที่ใช้ไม่มีปัญหา ดังนั้นปัญหาอยู่ที่ตัวบอร์ดเอง (ที่จริงมันก็ไม่ใช้ปัญหาหรอก แต่เราไม่เข้าใจมันเองนั้นแหละ) เราลองทำหลายอย่างหนึ่งในนั้นก็คือ ดึงฐานข้อมูลออกมาดูโดยตรง แล้วก็พบกับปัญหาบางอย่างเข้าจนได้
โค้ด: เลือกทั้งหมด
[img:3700tckj]http://siamboss.com/images/art/Virgin%20and%20Child%20with%20Angels%20and%20Saint.jpg[/img:3700tckj]
โค้ด: เลือกทั้งหมด
[img]ที่อยู่รูป[/img]
รูปที่ 1
bbcode_uid มันคือไรหว่า.......? หนูงง จึงได้ดูกระทู้อื่นก็พบว่าเจ้าตัวนี้จะทำหน้าที่กำกับอยู่หลัง bbcode ทุกตัว ของย้ำทุกตัว ด้านล่างคือโค้ดบางส่วนที่ดึงมาจากเว็บเค้าเอง ซึ่งซับซ่อนนิดหนึ่ง ถ้าใครงงว่ามันคืออะไร เจ้านี้คือโค้ดที่ใช้โพสตารางคะแนนส่วนบน สังเกตดูว่าเห็นอะไรใหม?
โค้ด: เลือกทั้งหมด
[thead:u1a8dmtu][/thead:u1a8dmtu]
[tscore:u1a8dmtu][a1:u1a8dmtu]2[/a1:u1a8dmtu]--[a2:u1a8dmtu]http://siamboss.com/images/club-logo/Arsenal.png[/a2:u1a8dmtu]--[a3:u1a8dmtu]อาร์เซนอล[/a3:u1a8dmtu]--[a4:u1a8dmtu]26 17 5 4 48 26 22 56[/a4:u1a8dmtu][/tscore:u1a8dmtu]
มาเริ่มกันเลยพี่น้อง
ก่อนอื่นเชื่อมต่อฐานข้อมูล
ไฟล์ connect
โค้ด: เลือกทั้งหมด
<?
$objConnect = mysql_connect("localhost","root","147") or die("Error Connect to Database");
$objDB = mysql_select_db("vrity");
mysql_query("SET character_set_results=utf8");
mysql_query("SET character_set_client=utf8");
mysql_query("SET character_set_connection=utf8");
?>
<?
$taxe_1 = "2";
$taxe_2 = "3";
$taxe_3 = "4";
$taxe_4 = "5";
?>
1. เริ่มออเดิร์ฟเบา ๆ ด้วยการดึงชื่อหมวดหมู่ที่จริงมันก็ไม่ยากในส่วนนี้
ไฟล์ทดสอบ 1.0
โค้ด: เลือกทั้งหมด
<?
include("connect.php");
?>
<?
$strSQL = "SELECT * FROM phpbb_forums WHERE forum_id = taxe_1";
$objQuery = mysql_query($strSQL) or die ("Error Query [".$strSQL."]");
?>
<?
$i=0;
while($objResult = mysql_fetch_array($objQuery))
{
?>
โค้ด: เลือกทั้งหมด
<a href="./viewforum.php?f=<?=$objResult["forum_id"];?>"><?=$objResult["forum_name"];?></a>
<?
}
?>
<?
mysql_close($objConnect);
?>
2. มาเริ่มมื้อหลักกันเลย
ไฟล์ทดสอบ 2.0
โค้ด: เลือกทั้งหมด
<?
include("connect.php");
?>
<?
$strSQL = "SELECT * FROM phpbb_posts
WHERE post_approved = 1 AND forum_id = taxe_2 ORDER BY topic_id DESC limit 1";
$objQuery = mysql_query($strSQL) or die ("Error Query [".$strSQL."]");
$i=0;
while($objResult = mysql_fetch_array($objQuery))
{
$posttext = $objResult["post_text"];
$bbcodeid = $objResult["bbcode_uid"];
}
?>
<?
$message = "<? echo '$posttext';?>";
preg_match_all("~\[img:$bbcodeid\]([^\[]+)\[\/img:$bbcodeid\]~",$message,$img);
krsort($img [1]);
foreach($img [1] as $image){
$path = $image;
}
$showimg = "$path";
?>
โค้ด: เลือกทั้งหมด
<img src='<? echo "$showimg";?>' />
<?
mysql_close($objConnect);
?>
อธิบายเพิ่มเติมครับ
forum_id = taxe_2 คือไอดีของบอร์ดที่ต้องการดึงรูปมาแสดง
limit 1 แสดง 1 กระทู้ล่าสุด
$posttext = $objResult["post_text"]; ดึงข้อมูลจาก post_text
$bbcodeid = $objResult["bbcode_uid"]; ดึงข้อมูลจาก bbcode_uid
$message = "<? echo '$posttext';?>"; นำสิ่งที่ได้มาวิเคราะห์เพื่อหาสิ่งที่ต้องการ
ซึ่งสามารถนำมาประยุกให้เข้ากับระบบสร้างรูปย่อ แต่ในเว็บเราใช้ม็อดสร้างรูปย่อ First_Topic_[pic]_on_Forum_Index เลยดึงมาจากมันอีกที แต่ก็ต้องใช้โค้ดด้านบนนี้ในการหาชื่อไฟล์รูปเพื่อนำมาใช้ที่หน้าหลักอีกทอด เห็นชื่อมันบอกว่า on_Forum_Index มันดึงมาหน้าแรกไม่ได้นะ ต้องเขียนโค้ดที่ให้ไปนี้เพิ่ม หรือมันทำได้ก็ไม่รู้ ??....
3. เสริมให้อีกนิดการดึงรูปแนบในกระทู้ attachment
ไฟล์ทดสอบ 3.0
โค้ด: เลือกทั้งหมด
<?
include("connect.php");
?>
<?
$strSQL = "SELECT * FROM phpbb_topics
WHERE topic_approved = 1 AND forum_id =$category_1 AND topic_moved_id = 0 AND topic_attachment = 1 ORDER BY topic_id DESC limit 0,1";
$objQuery = mysql_query($strSQL) or die ("Error Query [".$strSQL."]");
?>
<?
$i=0;
while($objResult = mysql_fetch_array($objQuery))
{
$topicID = $objResult["topic_id"];
$topicName = $objResult["topic_title"];
?>
<?
}
?>
<?
$strSQL = "SELECT * FROM phpbb_attachments
WHERE topic_id ='$topicID' ORDER BY topic_id DESC limit 0,1";
$objQuery = mysql_query($strSQL) or die ("Error Query [".$strSQL."]");
?>
<?
$i=0;
while($objResult = mysql_fetch_array($objQuery))
{
$attacID = $objResult["attach_id"];
?>
โค้ด: เลือกทั้งหมด
<img src='./download/file.php?id=<? echo "$attacID";?>' class='Thumbnail thumbnail featured-cat ' width='300' height='180'>
<?
}
?>
<?
mysql_close($objConnect);
?>
การดึงแบบนี้จะสามารถดึงได้ทีละภาพเท่าที่ทำได้ตอนนี้แล้วกำหนดให้แสดงกระทู้ที่เท่าไรโดยใช้ limit 0,1 เช่นแสดงกระทู้ที่สองก็จะเปลี่ยนเป็น limit 1,1 และยังมีข้อเสียอีกประการคือมันดึงรูปใหญ่ออกมาจึงทำให้หน้าเว็บโหลดช้าขึ้น ดังนั้นอย่างที่บอกเราเลยจัดการติดตั้งม็อดสร้างรูปย่อ แล้วดึงรูปนั้นมาแทน ถ้าอยากรู้ว่ามันทำอะไรได้บ้างก็ไปดูเว็บเราได้เลยในลายเซ็น
แล้วก็อันนี้ธีมที่เราทำขาย
siamboss.com/DEMO
ขอเนียนหน่อย อิอิ ระบบทุกอย่างออโต