จากตัวอย่างเรื่อง วิธีโหลด xml ไฟล์ และ แบ่งหน้า ด้วย php อย่างง่าย
ถาม-ตอบ แนะนำไอเดียว โค้ดตัวอย่าง แนวทาง วิธีแก้ปัญหา จากตัวอย่างเรื่อง วิธีโหลด xml ไฟล์ และ แบ่งหน้า ด้วย php อย่างง่าย
จากตัวอย่างเรื่อง วิธีโหลด xml ไฟล์ และ แบ่งหน้า ด้วย php อย่างง่าย
จากตัวอย่างนี้ครับ
https://www.ninenik.com/วิธี_load_xml_ไฟล์_และ_แบ่งหน้า_ด้วย_php_อย่างง่าย-296.html
<?php
https://www.ninenik.com/วิธี_load_xml_ไฟล์_และ_แบ่งหน้า_ด้วย_php_อย่างง่าย-296.html
<?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'];
?>
ทำตามแต่ไม่แสดงข้อมูล ไม่ทราบว่าผิดตรงไหนครับ
ทำตามแต่ไม่แสดงข้อมูล ไม่ทราบว่าผิดตรงไหนครับ

คำแนะนำ และการใช้งาน
สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก
- ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ
ความคิดเห็นที่
1
ตรวจสอบแจ้ง error ที่ขึ้นแจ้ง หากไม่ขึ้แสดง แทรกโค้ดนี้ไว้ด้านบน
1 2 3 4 5 6 | <?php /** Error reporting */ error_reporting (E_ALL); ini_set ( 'display_errors' , TRUE); ini_set ( 'display_startup_errors' , TRUE); ?> |
บทความแนะนำที่เกี่ยวข้อง | |
---|---|
วิธี load xml ไฟล์ และ แบ่งหน้า ด้วย php อย่างง่าย | อ่าน 18,206 |
แนวทางตรวจสอบ error การเชื่อมต่อ และการคิวรี่ข้อมูลจาก database | อ่าน 45,226 |

ความคิดเห็นที่
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>
ก็ไม่ได้ครับ
error
Warning: simplexml_load_string(): <title>:::�Թ�յ��Ѻ������������û���ͧ��ͧ���:::</title>

ความคิดเห็นที่
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/
สังเกต
1 | $total = count ( $parsed_xml ->channel->item); |
กับข้อมูล
ตัวที่ซ้ำจะเป็น array แท็ก item คือ array จำนวนรายการ
อ้างอิงค่า
1 | echo $numOrder . "." . $parsed_xml ->channel->item[ $indexFeed ]->title. "<br>" ; |
1 | $total = count ( $parsed_xml ->DOCUMENT); |
กับข้อมูล
อ้างอิงค่า
1 | echo $numOrder . "." . $parsed_xml ->DOCUMENT[ $indexFeed ]->DOCUMENT_TOPIC. "<br>" ; |
บทความแนะนำที่เกี่ยวข้อง | |
---|---|
วิธี load xml ไฟล์ และ แบ่งหน้า ด้วย php อย่างง่าย | อ่าน 18,206 |

ความคิดเห็นที่
4
ได้แล้วครับ ขอบตุณมากครับผม


ขอบคุณทุกการสนับสนุน
![]()