จากตัวอย่างเรื่อง วิธีโหลด xml ไฟล์ และ แบ่งหน้า ด้วย php อย่างง่าย

ถาม-ตอบ แนะนำไอเดียว โค้ดตัวอย่าง แนวทาง วิธีแก้ปัญหา จากตัวอย่างเรื่อง วิธีโหลด xml ไฟล์ และ แบ่งหน้า ด้วย php อย่างง่าย

จากตัวอย่างเรื่อง วิธีโหลด xml ไฟล์ และ แบ่งหน้า ด้วย php อย่างง่าย
//echo file_get_contents('http://www.dla.go.th/servlet/RssServlet');

//$url_feed = 'http://breakingnews.nationchannel.com/rss/breakhot.xml'; // ข่าวจำนวนมากสำหรับ ทดสอบ
$url_feed = 'http://www.dla.go.th/servlet/DocumentServlet'// กำหนด xml feed ที่ต้องการ
 
// ส่วนเริ่มต้นการใช้งานฟังก์ชัน curl ในการเรียกใช้ไฟล์ xml feed
$ch = curl_init($url_feed);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$get_content = curl_exec($ch); // เก็บรูปแบบข้อความ xml ไว้ในตัวแปร $get_content
curl_close($ch);
// สิ้นสุดการใช้งานฟังก์ชัน curl  ในการเรียกใช้ไฟล์ xml feed
 
// แปลงข้อความที่อยู่ในรูปแบบ xml เป็นตัวแปร object
$parsed_xml = simplexml_load_string($get_content);
 
 
// สามารถใช้ฟังก์ชัน simplexml_load_file() แทนการใช้งาน curl และ
// simplexml_load_string() เพื่อแปลงจากไฟล์ xml feed เป็น object ได้เลย 
// $parsed_xml = simplexml_load_file($url_feed);
 
// หาจำนวนรายการ feed ทั้งหมด 
// ถ้ามีจำนวนมาก สามารถกำหนดเอง เพื่อจำกัดการแสดงข้อมูลได้
$total=count($parsed_xml->DOCUMENTS->DOCUMENT);
// $total=20; // กรณีกำหนดเอง
 
// จำนวนรายการที่ต้องการแสดง แต่ละหน้า
$perPage = 10;
 
// คำนวณจำนวนหน้าทั้งหมด
$num_naviPage=ceil($total/$perPage);
 
// กำหนดจุดเริ่มต้น และสิ้นสุดของรายการแต่ละหน้าที่จะแสดง
if(!isset($_GET['page'])){
    $s_key=0;
    $e_key=$perPage;    
    $_GET['page']=1;
}else{
    $s_key=($_GET['page']*$perPage)-$perPage;
    $e_key=$perPage*$_GET['page'];
    $e_key=($e_key>$total)?$total:$e_key;
}
 
// สร้างลิ้งค์เลือกหน้า
for($i=1;$i<=$num_naviPage;$i++){
    echo "  || <a href="?page=".$i."">Page $i</a>"
}
echo "<hr>";
 
// แสดงรายการ
for($indexFeed=$s_key;$indexFeed<$e_key;$indexFeed++){
        $numOrder=$indexFeed+1;
        echo $numOrder.".".$parsed_xml->DOCUMENTS->DOCUMENT[$indexFeed]->DOCUMENT_TOPIC."<br>";
        echo '<strong>หัวข้อ : </strong> '.$parsed_xml->DOCUMENTS->DOCUMENT[$indexFeed]->DOCUMENT_NO.'<br/>';
        echo '<strong>Link :</strong>  '.$parsed_xml->DOCUMENTS->DOCUMENT[$indexFeed]->UPLOAD_FILE1."<br><hr>";
}
 
// แสดงหน้าปัจจุบัน
echo "Page:".$_GET['page'];

?>
ทำตามแต่ไม่แสดงข้อมูล ไม่ทราบว่าผิดตรงไหนครับ


Takabe 113.53.93.xxx 29-06-2020 13:13:37

คำแนะนำ และการใช้งาน

สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก


  • ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ
  • เปลี่ยน


    ( หรือ เข้าใช้งานผ่าน Social Login )

 ความคิดเห็นที่ 1
ตรวจสอบแจ้ง error ที่ขึ้นแจ้ง หากไม่ขึ้แสดง แทรกโค้ดนี้ไว้ด้านบน

<?php
/** Error reporting */
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);
?>


บทความแนะนำที่เกี่ยวข้อง
วิธี load xml ไฟล์ และ แบ่งหน้า ด้วย php อย่างง่ายอ่าน 17,455
แนวทางตรวจสอบ error การเชื่อมต่อ และการคิวรี่ข้อมูลจาก databaseอ่าน 43,235
ninenik 223.24.162.xxx 29-06-2020
 ความคิดเห็นที่ 2
simplexml_load_string(): Entity: line 21: parser error : Input is not proper UTF-8, indicate encoding ! Bytes: 0xC2 0xD4 0xB9 0xB4
ผมลอง

$data = 'http://www.dla.go.th/servlet/DocumentServlet'// กำหนด xml feed ที่ต้องการ
$url_feed = utf8_encode($data);

และ แบบนี้
$url_feed = iconv('TIS-620','UTF-8'$data) ;

ก็ไม่ได้ครับ
error
Warning: simplexml_load_string(): <title>:::�Թ�յ�͹�Ѻ������������û���ͧ��ͧ���:::</title>


takabe 113.53.93.xxx 29-06-2020 14:15
 ความคิดเห็นที่ 3
โครงสร้างไฟล์ที่เรียกใช้ต้องเป็นรูปแบบ xml ไฟล์ 
ตัวอย่าง นำลิ้งค์ไปเปิดผ่าน chrome
http://www.manager.co.th/RSS/Home/Breakingnews.xml
 
ถ้าจากที่ใช้อยู่ xml น่าจะเป็นไฟล์นี้ 
http://www.dla.go.th/servlet/RssServlet
// http://www.dla.go.th/servlet/DocumentServlet // ตัวนี้ไม่ใช่ xml มีการนำมาปรับใช้งาน
 
XML https://www.w3schools.com/xml/
 
สังเกต 
 
$total=count($parsed_xml->channel->item);
กับข้อมูล
 
 
ตัวที่ซ้ำจะเป็น array แท็ก item คือ array จำนวนรายการ
 
อ้างอิงค่า 
echo $numOrder.".".$parsed_xml->channel->item[$indexFeed]->title."<br>";

 
 
$total=count($parsed_xml->DOCUMENT);
กับข้อมูล
 
 
อ้างอิงค่า 
 
echo $numOrder.".".$parsed_xml->DOCUMENT[$indexFeed]->DOCUMENT_TOPIC."<br>";


บทความแนะนำที่เกี่ยวข้อง
วิธี load xml ไฟล์ และ แบ่งหน้า ด้วย php อย่างง่ายอ่าน 17,455
ninenik 223.24.162.xxx 29-06-2020
 ความคิดเห็นที่ 4
ได้แล้วครับ ขอบตุณมากครับผม


takabe 113.53.93.xxx 29-06-2020 15:58
1






เว็บไซต์ของเราให้บริการเนื้อหาบทความสำหรับนักพัฒนา โดยพึ่งพารายได้เล็กน้อยจากการแสดงโฆษณา โปรดสนับสนุนเว็บไซต์ของเราด้วยการปิดการใช้งานตัวปิดกั้นโฆษณา (Disable Ads Blocker) ขอบคุณครับ