ถามเรื่องการดึงหัวข้อใหม่ของ smf มาแสดงแบบหน้าแรกเว็บนี้หน่อยครับ
กระทู้ : 7
คะแนนขอบคุณ : 0
มาจากไทยเสียวนะครับ ขอสอบถามการดึงหัวข้อใหม่มาแสดงตามแต่ละหมวดหมู่แบบหน้าเว็บนี้หน่อยครับหน่อยครับ ขอแบบละเอียดหน่อยนะครับ
ขอบคุณครับ
บันทึกการเข้า
กระทู้ : 16,996
คะแนนขอบคุณ : 45
ตุลาคม 01, 2010, 14:16:00
อันดับแรกสร้างไฟล์ ขึ้น PHP ขึ้นมา 1 ไฟล์เช่น it.php เอาไว้ตำแหน่งเดียวกับไฟล์ ssi_examples.php ของบอร์ด
แล้ว copy โ๊ค๊ดนี้ลงไป
ของผมในตัวอย่างนี้ จะดึงบอร์ด it มาโชว์ 10 กระทู้ล่าสุดนะครับ แล้วบอร์ดข่าว it ของผมรหัสบอร์ดคือ 23
$list = "10"; // ต้องการให้โชว์กี่กระทู้ล่ะ ใส่เข้าไปได้เลย
$sboard = "1"; // ใส่ 0 ถ้าต้องการกระทู้จากบอร์ดทุกบอร์ด และใส่ 1 ถ้าต้องการเจาะจงบอร์ด
if (empty($board)) {
$board = "23.0"; // เปลี่ยนตรงนี้ถ้าอยากให้บอร์ดไหนเป็นค่า default
}
?>
:: =$list ?> กระทู้ล่าสุดจากบอร์ด it
include("Settings.php");
$host = $db_server;
$user = $db_user;
$pass = $db_passwd;
$database = $db_name;
$prefix = $db_prefix."topics";
$prefix2 = $db_prefix."messages";
@mysql_connect($host,$user,$pass) or die("ขออภัยค่ะ ขณะนี้ไม่สามารถติดต่อฐานข้อมูลได้ กรุณาเข้าชมใหม่ภายหลัง");
if ($sboard=="0") {
$Sql = "SELECT * FROM $prefix order by ID_TOPIC DESC limit 0,$list ";
} elseif ($sboard=="1") {
$Sql = "SELECT * FROM $prefix where ID_BOARD='$board' order by ID_TOPIC DESC limit 0,$list ";
}
$result = mysql_db_query($database,$Sql);
$nrow = mysql_num_rows($result);
while ($num = mysql_fetch_array($result)) {
$tid = $num["ID_TOPIC"];
$bid = $num["ID_BOARD"];
$fid = $num["ID_FIRST_MSG"];
$view = $num["numViews"];
$reply = $num["numReplies"];
$msql = "select * from $prefix2 where ID_MSG='$fid'";
$mresult = mysql_db_query($database,$msql);
$marr = mysql_fetch_array($mresult);
$title = $marr["subject"];
$poster = $marr["posterName"];
$today = date("d M Y");
$time = date("d M Y", $marr["posterTime"]);
if ($today==$time) {
$time = date("วันนี้ .", $marr["posterTime"]);
} else {
$time = date("เมื่อวานนี้ .", $marr["posterTime"]);
}
$bgc = $bgc+1;
$title = str_replace('[it]?', '[it] ', $title);
echo '
'.$title.' โดย '.$poster.'
|
';
}
?>
เสร็จเรียบร้อย เราก็ไปแก้หน้า index ของเราหรือหน้าแรกที่ต้องการให้แสดงนั่นเอง
แล้วเพิ่มโค้ดดังนี้
$data = file_get_contents('http://it4x.com/forum/it.php');
$data = iconv('windows-874','UTF-8',$data);
echo $data;
?>
ตรงตำแหน่งไฟล์ it.php ก็แก้เป็นที่คุณอัพลงไปครับ แค่นี้หล่ะ ขอให้สนุกครับ
แต่ถ้ามีหลายๆบอร์ดหล่ะ
ก็สร้างแบบเดียวกันครับ แต่เปลี่ยนชื่อไฟล์จาก it.php เป็นชื่อ อื่นๆ แล้วก็ get_contents หลายๆไฟล์ครับ
« แก้ไขครั้งสุดท้าย: ตุลาคม 01, 2010, 14:21:42 โดย Moshi »
บันทึกการเข้า
( แค่นี้ยังอ่อนหัดอยู่นะ )
กระทู้ : 1,534
คะแนนขอบคุณ : 13
ตุลาคม 01, 2010, 15:23:15
โอ้โฮเฮะ ตามมาจากไทยเสียวด้วย นึกว่าจะสิงอยู่ที่นั่นกันตลอดไม่ไปไหนกันแล้ว
บันทึกการเข้า
กระทู้ : 7
คะแนนขอบคุณ : 0
ตุลาคม 01, 2010, 16:28:03
ลองแล้วมันขึ้น
Warning: file_get_contents() [function.file-get-contents]: URL file-access is disabled in the server configuration in /home/user/domains/xxxxxx.com/public_html/index.php on line 71
Warning: file_get_contents([direct]http://xxxxxx.com/webboard/news.php[/direct]) [function.file-get-contents]: failed to open stream: no suitable wrapper could be found in /home/user/domains/xxxxxx.com/public_html/index.php on line 71
พอดีจะเอาข่าวมาแสดงอะครับ เลยสร้างไฟล์ news.php วางไว้ที่เดี่ยวกับ ssi_examples.php แล้ว เปลี่ยนค่าตามบอร์ดแล้ว
บันทึกการเข้า
กระทู้ : 16,996
คะแนนขอบคุณ : 45
ตุลาคม 01, 2010, 16:42:01
webboard ใช้อยู่ตำแหน่งนี้ป่าว [direct=http://www.domainxxx.com/weboard/]www.domainxxx.com/weboard/[/direct]
็Host ที่ใช้ PHP4 หรือ PHP5 ครับ
จากที่มันฟ้องอย่างนั้นแสดงว่า เจ้าของโฮสเค้าไม่เปิดให้ใช้ function.file-get-contents อ่ะครับ
งั้นแก้ง่ายๆ แต่รูปแบบมันอาจจะออกมาไม่สวยอ่ะครับ โดยการ
« แก้ไขครั้งสุดท้าย: ตุลาคม 01, 2010, 16:44:18 โดย Moshi »
บันทึกการเข้า
กระทู้ : 7
คะแนนขอบคุณ : 0
ตุลาคม 01, 2010, 16:53:02
พอใส่
มันขึ้น
Warning: include() [function.include]: URL file-access is disabled in the server configuration in /home/user/domains/xxxxxx.com/public_html/index.php on line 70
Warning: include([direct]http://xxxxx.com/webboard/news.php[/direct]) [function.include]: failed to open stream: no suitable wrapper could be found in /home/user/domains/xxxxxx.com/public_html/index.php on line 70
Warning: include() [function.include]: Failed opening '[direct]http://xxxxx.com/webboard/news.php'[/direct] for inclusion (include_path='.:/usr/local/lib/php') in /home/user/domains/xxxxxx.com/public_html/index.php on line 70
เริ่มงง
บันทึกการเข้า
กระทู้ : 16,996
คะแนนขอบคุณ : 45
ตุลาคม 01, 2010, 17:09:56
กำจิงๆ งั้น Hosting ที่ใช้อยู่ PHP4 หรือ PHP5 ครับ ใช้ Hosting ของอะไรอยู่อ่ะ
ตอนนี้ก็แก้ขัดไปก่อนนะครับ
อย่าลืม ตอบผมหล่ะ เดียวผมหาคำสั่งขอ PHP5 มาก่อน ลืมละเขียนไง
« แก้ไขครั้งสุดท้าย: ตุลาคม 01, 2010, 17:26:28 โดย Moshi »
บันทึกการเข้า
กระทู้ : 7
คะแนนขอบคุณ : 0
ตุลาคม 01, 2010, 18:19:32
เป็น php5 ครับผม
เอาโค๊ด rep ด้านบนไปใส่มันก็ขึ้นแล้วนะครับ
แต่มันไม่ค่อยสวยแหะ
เพราะสี bg มันเป็นสีฟ้าๆ เรามีวิธีใส่สีให้ bg เป็นสีเดียวกับพื้นหลังบน iframe ป่าวครับ
บันทึกการเข้า
กระทู้ : 16,996
คะแนนขอบคุณ : 45
ตุลาคม 01, 2010, 23:27:16
ลองนี่ดูนะครับ PHP5
$data = @file_get_contents('http://it4x.com/forum/it.php');
$data = iconv('windows-874','UTF-8',$data);
echo $data;
?>
ถ้าไม่ได้ยังไงจะมาแก้ไขให้อีกทีครับ
บันทึกการเข้า
กระทู้ : 7
คะแนนขอบคุณ : 0
ตุลาคม 01, 2010, 23:53:26
ลองใช้โค๊ดตามrepบนไม่ได้แหะ ไม่แสดงอะไรเลย หรือว่าได้แต่iframe อะครับ
บันทึกการเข้า
กระทู้ : 16,996
คะแนนขอบคุณ : 45
ตุลาคม 02, 2010, 07:45:12
เข้าใจแล้วครับ Host ที่ใช้อยู่เค้าไม่เปิด ฟังก์ชั่น File Get Content ให้อ่ะครับ
งั้นแนะนำให้ใช้ Iframe ใสเอาครับ
>> [direct]http://www.it4x.com/forum/index.php/topic,7332.0.html[/direct]
บันทึกการเข้า
( แค่นี้ยังอ่อนหัดอยู่นะ )
กระทู้ : 1,534
คะแนนขอบคุณ : 13
ตุลาคม 02, 2010, 10:58:03
โอ้โฮเฮะ WM เรา PHP แน่นจริงๆ +1 เลยละกัน
บันทึกการเข้า
กระทู้ : 7
คะแนนขอบคุณ : 0
ตุลาคม 04, 2010, 14:03:27
ขอต่ออีกนิดนะครับ ผมลองใช้โค๊ด
include('webboard/news.php');
?>
ดึงมาแสดงได้แล้วครับ แต่ปัญหามันอยู่ตรงที่ว่า ผมต้องการดึงจากหลายหมวดหมู่มาแสดง แต่ทำไมมันแสดงหมวดหมู่เดียวกันหมดเลยอ่ะครับ
จากรูปจะเห็นว่าข่าวกีฬากับตารางการแข่งขันเหมือนดึงมากันเลย คือเป็นกระทู้จากหมวดหมู่กีฬา ทั้งๆที่ตรงตารางการแข่งขัน ผม include มาจากอีกไฟล์นึง (webboard/program.php) แต่มันก็โชว์ของ news.php หมดเลย แต่ถ้าเราเอา program.php ไว้ด้านบน ก็จะแสดงกระทู้จากหมวดหมู่ตารางการแข่งขันแทนทั้งหมด (คือขึ้นอยู่กับinclude ตัวแรกคือไฟล์อะไรอะครับ ถ้าผมอยากให้มันแสดงแต่ละหมวดหมู่ต้องทำยังไงหว่า งง
บันทึกการเข้า
กระทู้ : 16,996
คะแนนขอบคุณ : 45
ตุลาคม 04, 2010, 17:12:50
อ่าเยี่ยมเลยครับ ตอนนี้ ใช้ฟังค์ชั่น include ได้แล้ว น่าจะใช้ Get Content ได้แล้วเหมือนกันนะครับ
แนะนำให้ใช้ get content แทนนะครับ
เพราะ Include นี่เป็นการเรียก ข้อมูลทั้งหมดในไฟล์มาแสดง ซึ่งมันทำให้เกิด reload ข้อมูลของไฟล์แรก หมวดหมู่มันจึงไม่เปลี่ยนอ่ะครับ
จึงแนะนำให้ get content อ่ะครับ
บันทึกการเข้า
กระทู้ : 7
คะแนนขอบคุณ : 0
ตุลาคม 06, 2010, 12:36:28
เราจะใช้คำสั่ง get content ยังไงอะครับ
บันทึกการเข้า