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

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

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

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

#21
Moshi
Moshi
16,996 โพสต์
— King69 link=topic=7327.msg18370#msg18370 date=1286343388

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


ผมไปหาวิธีแก้มาละใช้ curl แทน

<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "insert.php");
curl_setopt($ch, CURLOPT_HEADER, 0);
$ch = iconv('windows-874','UTF-8',$ch);
curl_exec($ch);
curl_close($ch);
?>


ลองดุนะครับ
#22
step69
step69
2 โพสต์
:'( พี่ ๆครับผมตามอ่านมาจนหมดละ ผมขอถามเรื่อง การแสดงกระทู้ต่อจากที่พี่ ๆถามาเเล้วนะครับคือ

หลังจากที่ผมเพิ่ม code ไปเเล้วมัน Error แบบนี้ครับ
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/stepcom/domains/xxxx.com/public_html/webbroad/showborad.php on line 42

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/stepcom/domains/xxxxx.com/public_html/webbroad/showborad.php on line 43


พี่ผมพออ่านเเล้วเข้าใจว่าประมาณ ว่าตรงที่
@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 ";

}

อันนี้ตามตัวอย่างที่พี่ได้โพสไว้คราวนี้ผมไม่รู้ว่าจะให้เชื่อกับตารางไหนหนะครับ ผมอยากว่าหัวข้อกระทู้มันอยู่ตรงตารางไหนเพราะว่า smf มันมีหลายตารางมากเลย รบกวนพี่ๆ ด้วยครับ

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

#23
Moshi
Moshi
16,996 โพสต์
— step69 link=topic=7327.msg18511#msg18511 date=1286523817

:'( พี่ ๆครับผมตามอ่านมาจนหมดละ ผมขอถามเรื่อง การแสดงกระทู้ต่อจากที่พี่ ๆถามาเเล้วนะครับคือ

หลังจากที่ผมเพิ่ม code ไปเเล้วมัน Error แบบนี้ครับ
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/stepcom/domains/step69.com/public_html/webbroad/showborad.php on line 42

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/stepcom/domains/step69.com/public_html/webbroad/showborad.php on line 43


พี่ผมพออ่านเเล้วเข้าใจว่าประมาณ ว่าตรงที่
@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 ";

}

อันนี้ตามตัวอย่างที่พี่ได้โพสไว้คราวนี้ผมไม่รู้ว่าจะให้เชื่อกับตารางไหนหนะครับ ผมอยากว่าหัวข้อกระทู้มันอยู่ตรงตารางไหนเพราะว่า smf มันมีหลายตารางมากเลย รบกวนพี่ๆ ด้วยครับ


ผมไม่เข้าใจอ่ะครับ หมายถึง แสดงหน้า showborad.php ได้ยังครับ แอบอ่านจากชื่อ

กด เปิดหน้า showborad.php แล้วมัน ERRor ว่าอะไรบ้างครับ
#24
step69
step69
2 โพสต์
มัน error เเบนี้ครับ ขอบคุณมากนะครั ที่กรุณาตอบ

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

#25
metal4x
metal4x
12 โพสต์
กระทู้นี้..ท่าจะยาวว....ของผมต่อนะท่านโมชิ...(เรื่องการเอา 15กระทู้ล่าสุดจากเว็บบอร์ด..มาไว้หน้าแรก Home)

รูปแรกนี้คือ รูปที่ไม่มีปัญหา(แต่ผมไม่ค่อยต้องการ อิอิ)...ใช้เทคนิคแรก คือสร้างไฟล์ ขึ้น PHP ขึ้นมา 1 ไฟล์ แล้วเอาไปไว้ตำแหน่งเดียวกับไฟล์ ssi_examples.php ของบอร์ด.....แล้วใช้โค๊ด..ตอบ #8 ของท่าน....$data = @file_get_contents




ส่วนที่มีปัญหาคือ รูปถัดไป ..ใช้โค๊ดจาก ตอบ #19...
แล้วมันได้ผลตามรูปนี้ครับ


จากรูปข้างบนนี้

1.ถ้าจะให้แสดงภาษาไทยถูกต้อง ต้องแก้ยังไงครับ ? (เว็บผมใช้ charset=tis-620)

2.ถ้าจะเอาส่วนที่เป็นชื่อ หมวดบอร์ด ด้านหน้าออก ต้องเพิ่มคำสั่งอะไร ที่   (ผมจะเอาจากพวก Re: เป็นต้นไป)

3.ข้อความมันล้น
แก้ยังไง (อันนี้ถามเพื่อประหยัดเวลา...จริงๆรูปบนสุด ตอนแรกก็เป็นแบบนี้แหละ...แก้มั่วๆเอา ชักจะลืม อิอิ)

ขอบคุณนะครับผม (พอดีผมหัดทำเว็บได้ไม่นานนะคัรบ)
#26
Moshi
Moshi
16,996 โพสต์
ทั้ง 2 คนเดียวผมมาตอบให้นะครับ พึ่งกลับมาจากต่างจังหวัดเหนื่อยๆ หุหุ
#27
Moshi
Moshi
16,996 โพสต์
— step69 link=topic=7327.msg18545#msg18545 date=1286596524

มัน error เเบนี้ครับ ขอบคุณมากนะครั ที่กรุณาตอบ



อยากให้ลอง COPY ของผมก่อนครับ แป๊ะๆเลยว่าได้ไหม

คล้ายๆ มันฟ้องว่า SQl ไม่สามารถทำการหา คิวรี่ ได้นี่หล่ะครับ แล้วบอร์ดคุณใช้เป้น RC2 ด้วยมันอาจจะใช้คนละตัว

แต่ลอง เอา ของผม แป๊ะๆเลยลองดูก่อนว่าจะได้ไหมครับ


แวะมา Edit เพิ่มเติม

หลังจากแอบไปเปิดดู ssi_examples.php -rc2

มันมีฟังก์ชั่นทำได้อยู่แล้วครับโดยอันแรกง่ายๆ

ผมดูของเจ้าของเว็บนะ  webbroad/ssi_examples.php ตามที่อยู่นี้

แล้วไปดูตรง Recent Topics

มันจะให้

เอาอันนี้ไว้บนสุด

<?php require("SSI.php"); ?>


จากนั้น ใช้แบบ advance

<?php ssi_recentTopics($num_recent = 8, $exclude_boards = null, $include_boards = null, $output_method = 'echo'); ?>



ตรง $exclude_boards ค่า Null ก็ลองเปลี่ยนเป็น รหัสบอร์ดดูครับ น่าจะใช่มั้ง หุหุ ถ้าเดาไม่ผิด ลองดูครับๆ

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

#28
Moshi
Moshi
16,996 โพสต์
— metal4x link=topic=7327.msg18653#msg18653 date=1286878447

กระทู้นี้..ท่าจะยาวว....ของผมต่อนะท่านโมชิ...(เรื่องการเอา 15กระทู้ล่าสุดจากเว็บบอร์ด..มาไว้หน้าแรก Home)

รูปแรกนี้คือ รูปที่ไม่มีปัญหา(แต่ผมไม่ค่อยต้องการ อิอิ)...ใช้เทคนิคแรก คือสร้างไฟล์ ขึ้น PHP ขึ้นมา 1 ไฟล์ แล้วเอาไปไว้ตำแหน่งเดียวกับไฟล์ ssi_examples.php ของบอร์ด.....แล้วใช้โค๊ด..ตอบ #8 ของท่าน....$data = @file_get_contents




ส่วนที่มีปัญหาคือ รูปถัดไป ..ใช้โค๊ดจาก ตอบ #19...
แล้วมันได้ผลตามรูปนี้ครับ


จากรูปข้างบนนี้

1.ถ้าจะให้แสดงภาษาไทยถูกต้อง ต้องแก้ยังไงครับ ? (เว็บผมใช้ charset=tis-620)

2.ถ้าจะเอาส่วนที่เป็นชื่อ หมวดบอร์ด ด้านหน้าออก ต้องเพิ่มคำสั่งอะไร ที่   (ผมจะเอาจากพวก Re: เป็นต้นไป)

3.ข้อความมันล้น
แก้ยังไง (อันนี้ถามเพื่อประหยัดเวลา...จริงๆรูปบนสุด ตอนแรกก็เป็นแบบนี้แหละ...แก้มั่วๆเอา ชักจะลืม อิอิ)

ขอบคุณนะครับผม (พอดีผมหัดทำเว็บได้ไม่นานนะคัรบ)



ทำง่ายๆครับผม

ขั้นตอนแรก ให้เพิ่ม

<meta http-equiv="Content-Type" content="text/html; charset=', $context['character_set'], '" />


ลงไว้ในหน้า index ก่อนครับ ที่เรา include ssi ไว้แล้วนะ

จากนั้นเปิดไฟล์ SSI.php

ให้ค้นหา

// Recent post list:   [board] Subject by Poster    Date


แล้วเพิ่ม อันนี้ด้านบน

function ssi_recentPosts2($num_recent = 8, $exclude_boards = null, $output_method = 'echo')
{
    global $context, $settings, $scripturl, $txt, $db_prefix, $ID_MEMBER;
    global $user_info, $modSettings, $func;

    if ($exclude_boards === null && !empty($modSettings['recycle_enable']) && $modSettings['recycle_board'] > 0)
        $exclude_boards = array($modSettings['recycle_board']);
    else
        $exclude_boards = empty($exclude_boards) ? array() : $exclude_boards;

    // Find all the posts.  Newer ones will have higher IDs.
    $request = db_query("
        SELECT
            m.posterTime, m.subject, m.ID_TOPIC, m.ID_MEMBER, m.ID_MSG, m.ID_BOARD, b.name AS bName,
            IFNULL(mem.realName, m.posterName) AS posterName, " . ($user_info['is_guest'] ? '1 AS isRead, 0 AS new_from' : '
            IFNULL(lt.ID_MSG, IFNULL(lmr.ID_MSG, 0)) >= m.ID_MSG_MODIFIED AS isRead,
            IFNULL(lt.ID_MSG, IFNULL(lmr.ID_MSG, -1)) + 1 AS new_from') . ", LEFT(m.body, 384) AS body, m.smileysEnabled
        FROM ({$db_prefix}messages AS m, {$db_prefix}boards AS b)
            LEFT JOIN {$db_prefix}members AS mem ON (mem.ID_MEMBER = m.ID_MEMBER)" . (!$user_info['is_guest'] ? "
            LEFT JOIN {$db_prefix}log_topics AS lt ON (lt.ID_TOPIC = m.ID_TOPIC AND lt.ID_MEMBER = $ID_MEMBER)
            LEFT JOIN {$db_prefix}log_mark_read AS lmr ON (lmr.ID_BOARD = m.ID_BOARD AND lmr.ID_MEMBER = $ID_MEMBER)" : '') . "
        WHERE m.ID_MSG >= " . ($modSettings['maxMsgID'] - 25 * min($num_recent, 5)) . "
            AND b.ID_BOARD = m.ID_BOARD" . (empty($exclude_boards) ? '' : "
            AND b.ID_BOARD NOT IN (" . implode(', ', $exclude_boards) . ")") . "
            AND $user_info[query_see_board]
        ORDER BY m.ID_MSG DESC
        LIMIT $num_recent", __FILE__, __LINE__);
    $posts = array();
    while ($row = mysql_fetch_assoc($request))
    {
        $row['body'] = strip_tags(strtr(parse_bbc($row['body'], $row['smileysEnabled'], $row['ID_MSG']), array('
' => '&#10;')));
        if ($func['strlen']($row['body']) > 128)
            $row['body'] = $func['substr']($row['body'], 0, 128) . '...';

        // Censor it!
        censorText($row['subject']);
        censorText($row['body']);

        // Build the array.
        $posts[] = array(
            'board' => array(
                'id' => $row['ID_BOARD'],
                'name' => $row['bName'],
                'href' => $scripturl . '?board=' . $row['ID_BOARD'] . '.0',
                'link' => '<a href="' . $scripturl . '?board=' . $row['ID_BOARD'] . '.0">' . $row['bName'] . '</a>'
            ),
            'topic' => $row['ID_TOPIC'],
            'poster' => array(
                'id' => $row['ID_MEMBER'],
                'name' => $row['posterName'],
                'href' => empty($row['ID_MEMBER']) ? '' : $scripturl . '?action=profile;u=' . $row['ID_MEMBER'],
                'link' => empty($row['ID_MEMBER']) ? $row['posterName'] : '<a href="' . $scripturl . '?action=profile;u=' . $row['ID_MEMBER'] . '">' . $row['posterName'] . '</a>'
            ),
            'subject' => $row['subject'],
            'short_subject' => shorten_subject($row['subject'], 25),
            'preview' => $row['body'],
            'time' => timeformat($row['posterTime']),
            'timestamp' => forum_time(true, $row['posterTime']),
            'href' => $scripturl . '?topic=' . $row['ID_TOPIC'] . '.msg' . $row['ID_MSG'] . ';topicseen#new',
            'link' => '<a href="' . $scripturl . '?topic=' . $row['ID_TOPIC'] . '.msg' . $row['ID_MSG'] . '#msg' . $row['ID_MSG'] . '">' . $row['subject'] . '</a>',
            'new' => !empty($row['isRead']),
            'new_from' => $row['new_from'],
        );
    }
    mysql_free_result($request);

    // Just return it.
    if ($output_method != 'echo' || empty($posts))
        return $posts;

    echo '
        <table border="0" class="ssi_table">';
    foreach ($posts as $post)
        echo '
            <tr>
                <td valign="top">
                    <a href="', $post['href'], '">', $post['subject'], '</a>
                    ', $txt[525], ' ', $post['poster']['link'], '
                    ', $post['new'] ? '' : '<a href="' . $scripturl . '?topic=' . $post['topic'] . '.msg' . $post['new_from'] . ';topicseen#new"><img src="' . $settings['images_url'] . '/' . $context['user']['language'] . '/new.gif" alt="' . $txt[302] . '" border="0" /></a>', '
                </td>
                <td align="right" nowrap="nowrap">
                    ', $post['time'], '
                </td>
            </tr>';
    echo '
        </table>';
}


หมายเหตุ อยากตัดให้มันแสดงผลอะไรก็แก้ตรง table ข้างล่างนี้

กลับไปที่หน้า index ให้ใช้ Function นี้ในการแสดงแทน

<?php ssi_recentPosts2(15); ?>


ลองศึกษาทำตามดูน่าจะเข้าใจ
#29
metal4x
metal4x
12 โพสต์
คำสั่งนี้
<meta http-equiv="Content-Type" content="text/html; charset=', $context['character_set'], '" />

มันส่งผล ยังไงบ้างครับผม....เพราะเท่าที่ผมลอง...มันไม่มีการเปลี่ยนแปลงใดๆ เลยครับ

....ผมเอาไปใช้งานแบบตามที่คุณโมชิบอกมาคือ... " ขั้นตอนแรก ให้เพิ่ม  " .....ไม่รู้ว่าใช้ถูกป่ะ...แบบนี้คัรบ
<?php require("/home/phanom/domains/phanom.go.th/public_html/webboard/SSI.php"); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;
<html xmlns="http://www.w3.org/1999/xhtml&quot;&gt;
<head>
<meta http-equiv="Content-Type" content="text/html; charset=tis-620">
<meta http-equiv="Content-Type" content="text/html; charset=', $context['character_set'], '" />
<META NAME="robots" CONTENT="index,nofollow">


ืNote..
** ผมลองแก้ปัญหา โดยการเปลี่ยน charset=tis-620 เป็น charset=utf-8 ...มันก็โอเค...แต่มันก็ไปมีปัญหากับข่าวประจำวันที่ดึงมา ซะงั้น (คือข่าว ดันเป็นภาษาต่างดาวซะอีก) ==>> http://www.phanom.go.th/indextest5.php ....อันนี้สลับกัน==>>http://www.phanom.go.th/indextest6.php**

** ไปแอบดูก็ได้คัรบ อิอิ ...จริงๆแล้วเว็บบอร์ดที่ผมจะเอามาโชว์หน้าแรก..มันไม่มีไรน่าโชว์เลย...มันเป็นเว็บราชการ...แต่ผมทำเพราะผมอยากรู้หน่ะครับ **

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

#30
Moshi
Moshi
16,996 โพสต์
ตอบคุณ metal4x นะครับ

เนี่ยครับใยนเว็บคุณ มี

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 


ดังนั้นไม่จำเป็นต้องใส่ ลบโค้ดออกได้เลย

<meta http-equiv="Content-Type" content="text/html; charset=', $context['character_set'], '" />


ผมจะพาแก้ที่หน้า index5 นะครับ

ตรงข่าวล่าสุดของคุณอ่ะ ผมไม่รุ้ว่าใช้โค้ดอะไรนะ แต่จะพาแก้ง่ายๆครับ

สมมุติละกัน ข่าวของคุณ echo $data; ใช่ป่ะ

ให้เราเพิ่มบรรทัดนี้เข้าไปก่อน

$data = iconv('windows-874','UTF-8',$data);


คำสั่งนี้คือแปลงจาก tis-620 ให้เป็น Utf-8 เพื่อที่จะแสดงผลไม่เพี๊ยน

จะได้แบบนี้


$data = iconv('windows-874','UTF-8',$data);
echo $data;
#31
metal4x
metal4x
12 โพสต์
ครับผม.....ขอบคุณมากครับ..สำหรับคำแนะนำทั้งหมด

มาขอบคุณช้าเพราะ Bot เข้ามาในเว็บบอร์ดตรึมเลยครับ

ขอแปะลิงค์กำจัด Bot SMF หน่อยนะคัรบ ...เผื่อมีประโยชน์สำหรับเพื่อนๆ

ระบบป้องกัน Spam ต่างชาติ [SMF] ===>> http://www.thaiseoboard.com/index.php/topic,113551.msg1564827/topicseen.html#new

การป้องกัน Spam สำหรับบอร์ด SMF ===>> http://hackerskill.net/2514/msg/6930

....มีปัญหาจะมารบกวนใหม่....ขอบคุณมากครับผม