Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > PHP > PHP Forum > จะใช้ ajax ดึง rss ของ rssthai.com มาแสดงเพื่อทำให้โหลดได้เร็วขึ้น



 

จะใช้ ajax ดึง rss ของ rssthai.com มาแสดงเพื่อทำให้โหลดได้เร็วขึ้น

 



Topic : 037596



โพสกระทู้ ( 187 )
บทความ ( 0 )



สถานะออฟไลน์




ไฟล์ index.php
Code
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" href="style.css" type="text/css" />
<script src="news.js" type="text/javascript"></script>
<div class="news">
<div id="newsdiv"></div>
<div class="newslink">[ <a href="javascript:newsdivx.nextnews('-1')">ก่อนหน้า</a> | <a href="javascript:newsdivx.nextnews('+1')">ถัดไป</a> ]</div>
</div>
<br />
<div class="news">
<div id="newsdiv2"></div>
<div class="newslink">[ <a href="javascript:newsdivx2.nextnews('-1')">ก่อนหน้า</a> | <a href="javascript:newsdivx2.nextnews('+1')">ถัดไป</a> ]</div>
</div>
<script type="text/javascript">
var newsdivx=new rssthainews('http://www.rssthai.com/rss/entertain.xml', 'newsdiv', 6);
var newsdivx2=new rssthainews('http://www.rssthai.com/rss/it.xml', 'newsdiv2', 4);
</script>


ไฟล์ reader.php
Code
<?
$feedURL = $_POST['url'];
$count = (int)$_POST['count'];
if ($count==0) $count = -1; //¶éÒäÁèä´é¡Ó˹´ÁÒãËé¤×¹¤èÒ¡ÅѺ·Ø¡ÃÒ¡ÒâèÒÇ

$imagewidth = 75; //¤ÇÒÁ¡ÇéÒ§¢Í§ÃÙ»·ÕèáÊ´§ (default)
$imageheight = 79; //¤ÇÒÁÊÙ§¢Í§ÃÙ»·ÕèáÊ´§ (default)
$detaillength = 170; //¤ÇÒÁÂÒǢͧ ÃÒÂÅÐàÍÕ´ ¶éÒà»ç¹ 0 ¨ÐäÁèäáÊ´§ÃÒÂÅÐàÍÕ´ -1 áÊ´§·Ñé§ËÁ´

if($feedURL && preg_match("/^https?:\/\/.+$/",$feedURL) && ($feedRef = @fopen($feedURL, 'rb'))) {
$contents = '';
while(!feof($feedRef)) {
$contents .= fread( $feedRef, 8192 );
}
fclose($feedRef);
$charset=getXMLHeader($contents);
if ($charset=="") $charset="UTF-8";
header("content-type: application/x-javascript; charset=$charset"); //à¢Õ¹ header ¢Í§àÍ¡ÊÒà ¨Ò¡ XML ·Õèèä´éÃѺ

$rss = RSStoArray($contents); //parse RSS ÍÍ¡à»ç¹ array

$listcount = $count;
for ($i=0; $i<count($rss) && ($listcount>0 || $count==-1); $i++) {
echo getimage($rss[$i][link][data], "./", false, $imagewidth, $imageheight).chr(1); //¤×¹¤èÒÃÙ»
echo $rss[$i][link][data].chr(1); //¤×¹¤èÒ link ¢Í§ÃÙ»
echo $rss[$i][title][data].chr(1); //¤×¹¤èÒ ËÑÇ¢éÍ¢èÒÇ
$description=$rss[$i][description][data];
if (strlen($description)>$detaillength && $detaillength>0) $description=substr($description, 0, $detaillength)."...";
if ($detaillength!=0) echo $description; //¤×¹¤èÒ à¹×éÍËҢͧ¢èÒÇ (¶éÒµéͧ¡ÒÃ)
echo chr(2); //»Ô´ÃÒ¡ÒôéÇ chr(2)
$listcount--;
}
}

//ÍèÒ¹ header
function getXMLHeader($xml) {
$headers = explode("<?xml", $xml);
$ret="";
for ($i=0; $i<count($headers); $i++) {
$ret.=parseXMLHeader(trim($headers[$i]));
}
return $ret;
}

//á¡àÍÒ attributies ÍÍ¡
function parseXMLHeader($data) {
if ($data!="") {
$EndPos = strpos($data, '?>'); //¤é¹ËÒ tag »Ô´¢Í§ header
$datas = explode(" ", substr($data, 0, $EndPos));
for ($i=0; $i<count($datas); $i++) {
$temps = explode("=", $datas[$i]);
if (trim($temps[0])=='encoding') {
$value = trim($temps[1]);
$value = str_replace('"', '', $value);
$value = str_replace("'", '', $value);
return $value;
}
};
}
return;
}

//ÍèÒ¹ÃÒ¡Òà item ·Ñé§ËÁ´
function RSStoArray($xml) {
$items = preg_split('/<item[\s|>]/', $xml, -1, PREG_SPLIT_NO_EMPTY);
array_shift($items);
$i = 0;

foreach ($items as $item) {
$array[$i]['title'] = getTextBetweenTags($item, 'title');
$array[$i]['link'] = getTextBetweenTags($item, 'link');
$array[$i]['description'] = getTextBetweenTags($item, 'description');
$array[$i]['author'] = getTextBetweenTags($item, 'author');
$array[$i]['category'] = getTextBetweenTags($item, 'category');
$array[$i]['comments'] = getTextBetweenTags($item, 'comments');
$array[$i]['enclosure'] = getTextBetweenTags($item, 'enclosure');
$array[$i]['guid'] = getTextBetweenTags($item, 'guid');
$array[$i]['pubDate'] = getTextBetweenTags($item, 'pubDate');
$array[$i]['source'] = getTextBetweenTags($item, 'source');
$i++;
}

return $array;
}

//ÍèÒ¹ tag áÅÐ property
function getTextBetweenTags($text, $tag) {
$StartTag = "<$tag";
$EndTag = "</$tag";

$StartPosTemp = strpos($text, $StartTag);
$StartPos = strpos($text, '>', $StartPosTemp);
$StartPos = $StartPos + 1;
$EndPos = strpos($text, $EndTag);

$StartAttr = $StartPosTemp + strlen($StartTag) + 1;
$EndAttr = $StartPos;
if ($EndAttr > $StartAttr) {
$attribute = substr ($text, $StartAttr, $EndAttr - $StartAttr - 1);
$datas = explode(" ", $attribute);
for ($i=0; $i<count($datas); $i++) {
$temps = explode("=", $datas[$i]);
$name = trim($temps[0]);
if ($name!="/" && $name!="") {
$value = trim($temps[1]);
$value = str_replace('"', '', $value);
$value = str_replace("'", '', $value);
$items[$name] = trim($value);
}
}
};

if($EndPos > $BeginPos) {
$text = substr ($text, $StartPos, ($EndPos - $StartPos));
} else {
$text = '';
}
if (strpos($text, '[CDATA[')==false) {
$text = str_replace('&lt;', '<', $text);
$text = str_replace('&gt;', '>', $text);
$text = str_replace('&amp;', '&', $text);
$text = str_replace('&quot;', '"', $text);
} else {
$text = str_replace('<![CDATA[', '', $text);
$text = str_replace(']]>', '', $text);
}
$items["data"] = trim($text);

return $items;
}

function getimage($itemlink, $imagedir, $imageresize, $imagewidth, $imageheight) {
$parsedlink = parse_url($itemlink);
list($tx,$rx) = split("&",$parsedlink["query"]);
list($t,$type) = split("=",$tx);
list($r,$rid) = split("=",$rx);
$urlquery = "http://www.rssthai.com/images/?t=$type&r=$rid";
if (! (strpos($itemlink,"mreader.php") === false)) $urlquery = "http://www.rssthai.com/images/?u=$type&r=$rid";

if (! file_exists($imagedir)) {
mkdir($imagedir);
}

$imagefilename = $imagedir.$type."_".$rid."_" . $imagewidth . "x" . $imageheight .".jpg";

if (! file_exists($imagefilename)) {
$imgContents = null;

$fileHandle = @fopen($urlquery, "r");
$fileuri = fread($fileHandle, 8192);
fclose($fileHandle);

$fileHandle = @fopen($fileuri, "rb");

if($fileHandle) {
while (!feof($fileHandle)) {
$imgContents .= fread($fileHandle, 8192);
}
fclose($fileHandle);

if ($imgContents) {
if ($imageresize==false || function_exists("imagecreatefromstring")==false) {
$handle = fopen($imagefilename, "wb");
fwrite($handle, $imgContents);
fclose($handle);
} else {
$source = imagecreatefromstring($imgContents);
$imageX = imagesx($source);
$imageY = imagesy($source);
if ($imagewidth >= $imageX) {
$handle = fopen($imagefilename, "wb");
fwrite($handle, $imgContents);
fclose($handle);
} else {
$thumbX = $imagewidth;
$thumbY = (int)(($thumbX*$imageY) / $imageX );
$dest = imagecreatetruecolor($thumbX, $thumbY);
imagecopyresampled ($dest, $source, 0, 0, 0, 0, $thumbX, $thumbY, $imageX, $imageY);
imagejpeg($dest,$imagefilename,75);
imagedestroy($dest);
}
imagedestroy($source);
}
}
}
}

return $imagefilename;
}
?>


ไฟล์ news.js
Code
var path="" //path ¢Í§â»Ãá¡ÃÁ¹Ñº¨Ò¡Ë¹éÒ·ÕèàÃÕ¡ãªé µéͧÁÕ / »Ô´·éÒ ¶éÒà»ç¹ path à´ÕÂǡѹäÁèµéͧ¡Ó˹´ÍÐäÃàÅÂ

function rssthainews(url, newsdiv, count) {
this.newsdiv=newsdiv
this.divcurr='div1_'+newsdiv
this.divnext='div2_'+newsdiv
this.url=url
this.count=count
this.news=Array ()
this.req=this.Inint_AJAX()
var HInstance=this
this.req.onreadystatechange=function(){HInstance.initialize()}
this.req.open("POST", path+"reader.php", true); //ÊÃéÒ§ connection
this.req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
this.req.send("url="+url+"&count="+count); //Ê觤èÒ
if (navigator.userAgent.indexOf("MSIE")==-1) { //¶éÒäÁèãªè IE
var obj=document.getElementById(newsdiv);
obj.style.position="relative";
obj.innerHTML='<div id="div1_'+newsdiv+'" style="position:Absolute;Left:0px;Top:0px;"></div><div id="div2_'+newsdiv+'" style="position:Absolute;Left:0px;Top:0px;"></div>';
}
}

rssthainews.prototype.initialize=function(){
if (this.req.readyState == 4) {
if (this.req.status==200) {
var ret=this.req.responseText //ÃѺ¤èÒ¡ÅѺÁÒ
this.news=ret.split(String.fromCharCode(2)) //á¡ÍÍ¡à»ç¹¢èÒǵèÒ§æ
if (this.news.length>0) {
document.getElementById(this.newsdiv).style.backgroundImage = "url()"
//áÊ´§¢èÒÇáá
this.displaynews(0)
//¨ÑºàÇÅÒáÊ´§¢èÒǤÃÑ駵èÍä»
var HInstance=this
this.newsinterval=window.setInterval(function(){HInstance.displaynews(HInstance.newsid)}, 10000)
}
}
}
}

rssthainews.prototype.displaynews=function(id) {
if (id>=this.news.length-1) id=0 //¶Ö§¢èÒÇÊØ´·éÒ¡ÅѺä»áÊ´§¢èÒÇáá
var datas=this.news[id].split(String.fromCharCode(1)) //á¡ÍÍ¡à»ç¹ÃÒ¡ÒõèÒ§æ
var data="<div class='rss_image'><img src='"+path+datas[0]+"' alt='' /></div><div class='rss_detail'><a href='"+datas[1]+"' target='_blank'>"+datas[2]+"</a><br />"+datas[3]+"</div>" //à¹×éÍËÒ¢èÒÇ
this.displaynewsdata(data) //áÊ´§¢èÒÇ·Õè¡Ó˹´
this.newsid=id+1 //¢èÒǵèÍä»
}

rssthainews.prototype.displaynewsdata=function(val) {
if (document.getElementById) {
if (navigator.userAgent.indexOf("MSIE")>-1) { //¶éÒà»ç¹ IE áÊ´§ effect
//ÊØèÁ effect
switch (Math.floor(Math.random()*7)) {
case 6: filterstring="progid:DXImageTransform.Microsoft.Checkerboard(squaresX=24, squaresY=16, direction='right', duration=1)"; break
case 5: filterstring="progid:DXImageTransform.Microsoft.Pixelate(duration=2)"; break
case 4: filterstring="progid:DXImageTransform.Microsoft.Fade(duration=3,overlap=1.0)"; break
case 3: filterstring="progid:DXImageTransform.Microsoft.GradientWipe(GradientSize=1.0, Duration=3, Motion=reverse, wipeStyle=1)"; break
case 2: filterstring="progid:DXImageTransform.Microsoft.GradientWipe(GradientSize=1.0, Duration=3, wipeStyle=1)"; break
case 1: filterstring="progid:DXImageTransform.Microsoft.GradientWipe(GradientSize=1.0, Duration=3, Motion=reverse)"; break
default: filterstring="progid:DXImageTransform.Microsoft.GradientWipe(GradientSize=1.0, Duration=3)"; break
}
var imgobj=document.getElementById(this.newsdiv)
if (imgobj.filters && window.createPopup) {
imgobj.style.filter=filterstring
imgobj.filters[0].Apply()
}
imgobj.innerHTML=val
if (imgobj.filters && window.createPopup) imgobj.filters[0].Play()
} else { //Browser Í×è¹æ áÊ´§ ¢èÒÇ´éÇ fade Effect
this.blenddiv(val)
}
}
}

//áÊ´§¼Å ¨Ñ´¡ÒÃáÊ´§¼Å
rssthainews.prototype.blenddiv=function(val) {
var newsdiv=this.newsdiv

//ÊÅѺ Layer
this.divcurr=this.divnext
this.divnext=(this.divcurr=='div1_'+newsdiv) ? 'div2_'+newsdiv : 'div1_'+newsdiv;

//«è͹ Layer divcurr ¡è͹
this.changeOpac(0, this.divcurr);
document.getElementById(this.divcurr).innerHTML=val;
document.getElementById(this.divcurr).style.visibility='visible'

//fade in divcurr áÅÐ fade out divnext
this.fade(0, this.divcurr, this.divnext)
}

//áÊ´§ effect äÁèãªè ie
rssthainews.prototype.fade=function(val, divcurr, divnext) {
this.changeOpac(val, divcurr);
this.changeOpac(100-val, divnext);
if (val<=100) {
var HInstance=this
HInstance.val=val+5
HInstance.divcurr=divcurr
HInstance.divnext=divnext
setTimeout(function() {HInstance.fade(HInstance.val, HInstance.divcurr, HInstance.divnext)}, 50);
} else {
document.getElementById(divnext).style.visibility='hidden'
}
}

//áÊ´§¢èÒÇ¶Ñ´ä» +1 ¡è͹˹éÒ -1
rssthainews.prototype.nextnews=function(id) {
clearInterval(this.newsinterval) //¡àÅÔ¡¡ÒÃáÊ´§¢èÒÇàÁ×èÍÁÕ¡ÒÃàÅ×Í¡¢èÒÇ
if (id=='-1') { //áÊ´§¢èÒǶÍÂËÅѧ
this.newsid=this.newsid-2
if (this.newsid==-1) this.newsid=this.news.length-2 //¶ÍÂËÅѧ¶Ö§ÃÒ¡ÒÃÊØ´·éÒ¡ÅѺä»áÊ´§¢èÒÇËÅѧÊØ´
}
this.displaynews(this.newsid)
//¨ÑºàÇÅÒáÊ´§¢èÒǤÃÑ駵èÍä»
var HInstance=this
this.newsinterval=window.setInterval(function(){HInstance.displaynews(HInstance.newsid)}, 10000)
}

//AJAX function
rssthainews.prototype.Inint_AJAX=function() {
try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) {} //IE
try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) {} //IE
try { return new XMLHttpRequest(); } catch(e) {} //Native Javascript
alert("XMLHttpRequest not supported");
return null;
}

//change the opacity for different browsers
rssthainews.prototype.changeOpac=function(opacity, id) {
var object=document.getElementById(id).style
object.opacity=(opacity/100)
object.MozOpacity=(opacity/100)
object.KhtmlOpacity=(opacity/100)
object.filter="alpha(opacity="+opacity+")"
}


มันดึงไม่มาครับ ผิดตรงไหนช่วยบอกทีครับ



Tag : - - - -







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2010-01-24 12:52:53 By : sawet50 View : 1401 Reply : 1
 

 

No. 1



โพสกระทู้ ( 74,058 )
บทความ ( 838 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook

การตัดคำของ description ข่าวจาก rssthai ค่ะ นำข่าวจาก rssthai มาแสดงที่เว็บ แต่อยากให้ Description






Date : 2010-10-31 07:06:55 By : webmaster
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : จะใช้ ajax ดึง rss ของ rssthai.com มาแสดงเพื่อทำให้โหลดได้เร็วขึ้น
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 03
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่