วิธี load xml ไฟล์ และ แบ่งหน้า ด้วย php อย่างง่าย

เขียนเมื่อ 10 ปีก่อน โดย Ninenik Narkdee
php แบ่งหน้า xml

คำสั่ง การ กำหนด รูปแบบ ตัวอย่าง เทคนิค ลูกเล่น การประยุกต์ การใช้งาน เกี่ยวกับ php แบ่งหน้า xml



ตัวอย่างต่อไปนี้ เป็นโค้ด สำหรับการโหลด xml ไฟล์ จากเว็บข่าวสารต่างๆ หรือไฟล์ xml feed มาแสดง พร้อมทั้ง ทำการแบ่งหน้า รายการ ใน xml ไฟล์ ด้วย php

ตัวอย่าง   http://www.ninenik.com/demo/php_show_page_xml.php

โค้ดตัวอย่าง
 

<?php
//$url_feed = 'http://breakingnews.nationchannel.com/rss/breakhot.xml'; // ข่าวจำนวนมากสำหรับ ทดสอบ
$url_feed = 'http://www.manager.co.th/RSS/Home/Breakingnews.xml'; // กำหนด 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->channel->item);
// $total=20; // กรณีกำหนดเอง

// จำนวนรายการที่ต้องการแสดง แต่ละหน้า
$perPage = 2;

// คำนวณจำนวนหน้าทั้งหมด
$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->channel->item[$indexFeed]->title."<br>";
		echo '<strong>Description : </strong> '.$parsed_xml->channel->item[$indexFeed]->description.'<br/>';
		echo '<strong>Link :</strong>  '.$parsed_xml->channel->item[$indexFeed]->link."<br><hr>";
}

// แสดงหน้าปัจจุบัน
echo "Page:".$_GET['page'];
?>

สามารถนำไปประยุกต์ใช้งาน เพิ่มเติม เช่น การเพิ่มความเร็ว ในการโหลด xml ไฟล์ การเพิ่มลูกเล่น ด้วย ajax การปรับรูปแบบการแสดง ด้วย css หรือ อื่นๆ ต่อไปได้

 



กด Like หรือ Share เป็นกำลังใจ ให้มีบทความใหม่ๆ เรื่อยๆ น่ะครับ











URL สำหรับอ้างอิง











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