ถามเรื่องการดึงหัวข้อใหม่ของ smf มาแสดงแบบหน้าแรกเว็บนี้หน่อยครับ

มาจากไทยเสียวนะครับ ขอสอบถามการดึงหัวข้อใหม่มาแสดงตามแต่ละหมวดหมู่แบบหน้าเว็บนี้หน่อยครับหน่อยครับ  ขอแบบละเอียดหน่อยนะครับ 

ขอบคุณครับ  :-*

💬 การตอบกลับ 31

#1
Moshi
Moshi
16,996 โพสต์
อันดับแรกสร้างไฟล์ ขึ้น PHP ขึ้นมา 1 ไฟล์เช่น  it.php  เอาไว้ตำแหน่งเดียวกับไฟล์ ssi_examples.php ของบอร์ด

แล้ว copy โ๊ค๊ดนี้ลงไป

ของผมในตัวอย่างนี้ จะดึงบอร์ด it มาโชว์ 10 กระทู้ล่าสุดนะครับ แล้วบอร์ดข่าว it ของผมรหัสบอร์ดคือ 23

<?php 

$list = "10"; // ต้องการให้โชว์กี่กระทู้ล่ะ ใส่เข้าไปได้เลย

$sboard = "1"; // ใส่ 0 ถ้าต้องการกระทู้จากบอร์ดทุกบอร์ด  และใส่ 1 ถ้าต้องการเจาะจงบอร์ด


if (empty($board)) {
$board = "23.0"; // เปลี่ยนตรงนี้ถ้าอยากให้บอร์ดไหนเป็นค่า default
}


?>

<html>

<head>

<meta http-equiv="Content-Language" content="th">
<meta http-equiv="Content-Type" content="text/html; charset=windows-874">



<title>:: <?=$list ?> กระทู้ล่าสุดจากบอร์ด it</title>
<base target="_blank">

</head>

<body bgcolor=#E5E5FF>
<span class="style1">
<table class="ssi_table" border="0" cellspacing="0" cellpadding="0" width="670">
<?
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("<font color='#FF0000'><b>วันนี้ .</font></b>", $marr["posterTime"]);
} else {
$time = date("<b>เมื่อวานนี้ .</b>", $marr["posterTime"]);
}
$bgc = $bgc+1;
$title = str_replace('[it]?', '[it] ', $title);
echo '
<tr class="', $bgc % 2 == 0 ? 'bg1' : 'bg2', '">
<td>
<a href="forum/index.php/topic,'.$tid.'.0.html" target="_blank"><b>'.$title.'</b></a> &#3650;&#3604;&#3618; '.$poster.'
</td>
</tr>
';
}

?>
</table>
</span>
</body>

</html>



เสร็จเรียบร้อย เราก็ไปแก้หน้า index ของเราหรือหน้าแรกที่ต้องการให้แสดงนั่นเอง

แล้วเพิ่มโค้ดดังนี้

  <?php 
  $data = file_get_contents('http://it4x.com/forum/it.php&#039;);
$data = iconv('windows-874','UTF-8',$data);
  echo $data;
 ?>



ตรงตำแหน่งไฟล์  it.php  ก็แก้เป็นที่คุณอัพลงไปครับ แค่นี้หล่ะ ขอให้สนุกครับ

แต่ถ้ามีหลายๆบอร์ดหล่ะ

ก็สร้างแบบเดียวกันครับ แต่เปลี่ยนชื่อไฟล์จาก it.php เป็นชื่อ อื่นๆ แล้วก็ get_contents หลายๆไฟล์ครับ

✏️ แก้ไขล่าสุด: 1 ตุลาคม 2553

#2
ßë©äûšë
ßë©äûšë
Teelek Programmer · 1,534 โพสต์
โอ้โฮเฮะ ตามมาจากไทยเสียวด้วย นึกว่าจะสิงอยู่ที่นั่นกันตลอดไม่ไปไหนกันแล้ว ;)
#3
King69
King69
7 โพสต์
ลองแล้วมันขึ้น

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  แล้ว  เปลี่ยนค่าตามบอร์ดแล้ว  :P
#4
Moshi
Moshi
16,996 โพสต์
webboard ใช้อยู่ตำแหน่งนี้ป่าว [direct=http://www.domainxxx.com/weboard/]www.domainxxx.com/weboard/[/direct]

็Host ที่ใช้ PHP4 หรือ PHP5 ครับ

จากที่มันฟ้องอย่างนั้นแสดงว่า เจ้าของโฮสเค้าไม่เปิดให้ใช้ function.file-get-contents อ่ะครับ

งั้นแก้ง่ายๆ แต่รูปแบบมันอาจจะออกมาไม่สวยอ่ะครับ โดยการ

<?php include("news.php"); ?>

✏️ แก้ไขล่าสุด: 1 ตุลาคม 2553

#5
King69
King69
7 โพสต์
พอใส่

<?php include("news.php"); ?>


มันขึ้น

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&#39;[/direct] for inclusion (include_path='.:/usr/local/lib/php') in /home/user/domains/xxxxxx.com/public_html/index.php on line 70


เริ่มงง  :P
#6
Moshi
Moshi
16,996 โพสต์
กำจิงๆ งั้น Hosting ที่ใช้อยู่ PHP4 หรือ PHP5 ครับ ใช้ Hosting ของอะไรอยู่อ่ะ

ตอนนี้ก็แก้ขัดไปก่อนนะครับ

<iframe src="news.php" frameborder="0"></iframe>


อย่าลืม ตอบผมหล่ะ เดียวผมหาคำสั่งขอ PHP5 มาก่อน ลืมละเขียนไง

✏️ แก้ไขล่าสุด: 1 ตุลาคม 2553

#7
King69
King69
7 โพสต์
เป็น php5 ครับผม

เอาโค๊ด rep ด้านบนไปใส่มันก็ขึ้นแล้วนะครับ

แต่มันไม่ค่อยสวยแหะ  :P

เพราะสี bg มันเป็นสีฟ้าๆ  เรามีวิธีใส่สีให้ bg เป็นสีเดียวกับพื้นหลังบน iframe ป่าวครับ
#8
Moshi
Moshi
16,996 โพสต์
ลองนี่ดูนะครับ PHP5

  <?php 
      $data = @file_get_contents('http://it4x.com/forum/it.php&#039;);
    $data = iconv('windows-874','UTF-8',$data);
      echo $data;
  ?>


ถ้าไม่ได้ยังไงจะมาแก้ไขให้อีกทีครับ
#9
King69
King69
7 โพสต์
ลองใช้โค๊ดตามrepบนไม่ได้แหะ ไม่แสดงอะไรเลย  หรือว่าได้แต่iframe อะครับ  :P
#10
Moshi
Moshi
16,996 โพสต์
เข้าใจแล้วครับ Host ที่ใช้อยู่เค้าไม่เปิด ฟังก์ชั่น File Get Content ให้อ่ะครับ

งั้นแนะนำให้ใช้ Iframe ใสเอาครับ

>> [direct]http://www.it4x.com/forum/index.php/topic,7332.0.html[/direct]

#11
ßë©äûšë
ßë©äûšë
Teelek Programmer · 1,534 โพสต์
โอ้โฮเฮะ WM เรา PHP แน่นจริงๆ +1 เลยละกัน :D
#12
King69
King69
7 โพสต์
ขอต่ออีกนิดนะครับ  ผมลองใช้โค๊ด

<?php
include('webboard/news.php');
?>


ดึงมาแสดงได้แล้วครับ  แต่ปัญหามันอยู่ตรงที่ว่า  ผมต้องการดึงจากหลายหมวดหมู่มาแสดง แต่ทำไมมันแสดงหมวดหมู่เดียวกันหมดเลยอ่ะครับ



จากรูปจะเห็นว่าข่าวกีฬากับตารางการแข่งขันเหมือนดึงมากันเลย คือเป็นกระทู้จากหมวดหมู่กีฬา ทั้งๆที่ตรงตารางการแข่งขัน ผม include มาจากอีกไฟล์นึง (webboard/program.php)  แต่มันก็โชว์ของ news.php หมดเลย แต่ถ้าเราเอา program.php ไว้ด้านบน ก็จะแสดงกระทู้จากหมวดหมู่ตารางการแข่งขันแทนทั้งหมด (คือขึ้นอยู่กับinclude ตัวแรกคือไฟล์อะไรอะครับ  ถ้าผมอยากให้มันแสดงแต่ละหมวดหมู่ต้องทำยังไงหว่า  งง  :-X :-X
#13
Moshi
Moshi
16,996 โพสต์
อ่าเยี่ยมเลยครับ ตอนนี้ ใช้ฟังค์ชั่น include ได้แล้ว น่าจะใช้ Get Content ได้แล้วเหมือนกันนะครับ

แนะนำให้ใช้ get content แทนนะครับ

เพราะ Include นี่เป็นการเรียก ข้อมูลทั้งหมดในไฟล์มาแสดง ซึ่งมันทำให้เกิด reload ข้อมูลของไฟล์แรก หมวดหมู่มันจึงไม่เปลี่ยนอ่ะครับ

จึงแนะนำให้ get content อ่ะครับ
#14
King69
King69
7 โพสต์
เราจะใช้คำสั่ง get content ยังไงอะครับ  :P
#15
Moshi
Moshi
16,996 โพสต์
— King69 link=topic=7327.msg18370#msg18370 date=1286343388

เราจะใช้คำสั่ง get content ยังไงอะครับ  :P


แบบที่ตอบครั้งเเรกเลยไงครับ
#16
metal4x
metal4x
12 โพสต์
มีประโยชน์มากครับ....กะลังทำตามอยู่ครับ
............................................
รหัสบอร์ด ดูตรงใหนครับ ???... ผมต้องการในส่วนของ " กระทู้เมื่อเร็วๆ นี้  " ...ไม่ทราบว่ามีรหัสบอร์ด้วยป่ะ...กะลังหาครับ

✏️ แก้ไขล่าสุด: 6 ตุลาคม 2553

#17
Moshi
Moshi
16,996 โพสต์
— metal4x link=topic=7327.msg18391#msg18391 date=1286358686

มีประโยชน์มากครับ....กะลังทำตามอยู่ครับ
............................................
รหัสบอร์ด ดูตรงใหนครับ ???... ผมต้องการในส่วนของ " กระทู้เมื่อเร็วๆ นี้  " ...ไม่ทราบว่ามีรหัสบอร์ด้วยป่ะ...กะลังหาครับ


รหัสบอร์ดก็ดูจาก หน้าแรกของบอร์ดเลยไงครับ

ให้เราลอง copy link มันมา แบบนี้ >> [direct]http://www.it4x.com/forum/index.php/board,2.0.html[/direct]

รหัสบอร์ดคือ 2.0 หรือ 2 นั่นเองคงเดาออกแล้วใช่ไหมครับว่าดูตรงไหน
#18
metal4x
metal4x
12 โพสต์
ขอบคณมากคับ ต่ออีกนิดนะคับ....จริงๆ แล้วผมอยากจะเอา ..." กระทู้เมื่อเร็วๆ นี้  " ...ไปไว้หน้าแรกมากกว่าคับ..อยากจะเน้นที่คนโพสท์ตอบล่าสุดมากกว่านะคับ ..ลองหาดูๆแล้วมันไม่มีลิงค์ แบบคล้ายๆรหัสบอร์ดนะคับ...ทำไงดีเอ่ย ??

..." กระทู้เมื่อเร็วๆ นี้  " แบบของ it4x ตามรูปนี้คับ

อยากเอาไปวางไว้หน้าแรกซัก 15 โพสท์
รอ k.Moshi ตอบอีกแหละคับ...ขอบคุณคับผม
#19
Moshi
Moshi
16,996 โพสต์
ตอนแรกนะครับ เข้าหน้า ssi_examples.php

>> เช่นบอร์ดผม [direct=http://www.it4x.com/forum/ssi_examples.php]www.it4x.com/forum/ssi_examples.php[/direct]

จากนั้น หาคำว่า

To use SSI.php in your page add at the very top of your page before the tag on line 1:



เอาบรรทัดตรงสีแดงของผมเนี่ย แต่เอาของเว็บคุณนะ ไปไว้บนสุดของหน้า Index

จากนั้น อยากให้หัวข้อล่าสุดแสดงตรงไหนของหน้า index ก็ใช้ Function นี้

จากตัวอย่างให้แสดง 15 หัวข้อล่าสุดนะครับ เป็นหัวข้อแบบไม่มีคำ่ว่า RE:

<?php ssi_recentTopics(15); ?>


แต่ถ้าอยากให้มีคำว่า RE หรือหัวข้อที่ตอบล่าสุด ทั้งหมดเลย

<?php ssi_recentPosts(15); ?>


ลองไปประยุกต์ใช้ดูนะครับ

#20
metal4x
metal4x
12 โพสต์
ขอบคุณครับผม...จะลองดูคับ...(ตอบไวมากเลย... ยอดเยี่ยมคับ)