สอบถามการเขียน Rss Feed ดึงข้อมูลมาจาก DB แบบ Write ทีละหลายๆไฟล์ตามเงื่อนไข
สอบถามนิดนึงครับ
คือว่าเนื่องจาก ผมต้องการเขียน php ให้กลายเป็นไฟล์ xml ครับ
โดย ให้ทำการดึงข้อมูลจาก database มาแสดง และข้อมูลทั้งหมดมี 10 ประเภทอะครับ ต้องการให้แบบว่า ประเภทที่ 1 write ลง 1 ไฟล์ ประเภทที่ 2 ลง 1 ไฟล์ คือของใครของมันอะครับ
ประเภทผมตั้งชื่อใน DB ว่า type_id
นี่คือโค้ดที่ผมดึงข้อมูลทั้งหมดจาก DB เขียนลงเป็นไฟล์เดียว ผมต้องการทำการ Loop ยังไงอะครับ
<?
include('connect.php');
$sql = " SELECT a.news_id as aid, b.date as bdate, a.org , a.act , a.title , a.per , a.loc, b.url , b.news_name, a.date as adate from news_su a, news_web b where a.news_id=b.news_id AND a.type_id=b.type_id ";
$charset = "SET NAMES 'utf8'";
mysql_query($charset);
$query = mysql_db_query($dbName,$sql);
$data = '<?xml version="1.0" encoding="UTF-8"?>'."\n";
$data .= '<rss version="2.0">'."\n";
$data .= '<channel>'."\n";
$data .= '<title>News Extraction</title>'."\n";
$data .= '<description>News Interesting</description>'."\n";
$data .= '<link>http://su.ac.th</link>'."\n";
while($result = mysql_fetch_array($query))
{
$data .= '<item>'."\n";
$data .= '<title>'.$result[news_name].'</title>'."\n";
$data .= '<link>'.$result[url].'</link>'."\n";
$data .= '<pubDate>'.$result[bdate].'</pubDate>'."\n"; //เวลา
$data .= '<description>'.$result[org].''.$result[act].''.$result[title].''.$result[per].''.$result[loc].''.$result[loc].''.$result[adate].'</description>'."\n";
$data .= '</item>'."\n";
}
$data .= '</channel>'."\n";
$data .= '</rss>'."\n";
$f = fopen( 'rss.xml' , 'w' ); //ส่วนของการสร้างไฟล์ XML
fputs( $f , $data );
fclose( $f );
}
?> Tag : PHP
Date :
2013-05-22 13:46:30
By :
Monkey_CONAN
View :
1625
Reply :
18
ใช้ if-else เช็คประเภท ก่อน ใช้
$f = fopen( 'rss.xml' , 'w' );
เขียนลง
rss.xml,rss.xml2
Date :
2013-05-22 17:38:14
By :
iieszz
เป็นผู้ชายหรือผู้หญิงครับเนี่ย ผมงง - -
Date :
2013-05-22 20:00:50
By :
cookiephp
รบกวนชี้แนะหน่อยค่ะ ตอนนี้ยังไม่ได้เลย
Date :
2013-05-25 00:43:28
By :
Monkey_CONAN
ไม่ได้ยังไงครับ โค้ดที่ไม่ได้เป็นอย่างไร
Date :
2013-05-25 03:56:52
By :
cookiephp
ตอบความคิดเห็นที่ : 6 เขียนโดย : cookiephp เมื่อวันที่ 2013-05-25 03:56:52
รายละเอียดของการตอบ ::
ยังไม่สามารถ Write ลงหลายๆไฟล์ได้แบบ Type ใคร Type มันอะค่ะ เช็ค type จาก type_id อะคะ
จากโค้ด
Code (PHP)
<?
include("connect.php");
$sql = " SELECT a.news_id as aid, b.date as bdate, a.org , a.act , a.title , a.per , a.loc, b.url , b.news_name, a.date as adate, b.type_id from news_su a, news_web b where a.news_id=b.news_id ";
$charset = "SET NAMES 'utf8'";
mysql_query($charset);
$query = mysql_db_query($dbName,$sql);
$data = '<?xml version="1.0" encoding="UTF-8"?>'."\n";
$data .= '<rss version="2.0">'."\n";
$data .= '<channel>'."\n";
$data .= '<title>News Extraction</title>'."\n";
$data .= '<description>News Interesting</description>'."\n";
$data .= '<link>http://su.ac.th</link>'."\n";
//$data .= '<pubDate>'.date("D, d M Y ").'</pubDate>'."\n";
while($result = mysql_fetch_array($query)) {
$data .= '<item>'."\n";
$data .= '<title>'.$result[news_name].'</title>'."\n";
$data .= '<link>'.$result[url].'</link>'."\n";
$data .= '<pubDate>'.$result[bdate].'</pubDate>'."\n"; //เวลา
$data .= '<description>'.$result[type_id].''.$result[org].''.$result[act].''.$result[title].'
'.$result[per].''.$result[loc].''.$result[loc].''.$result[adate].'</description>'."\n";
$data .= '</item>'."\n";
}
$data .= '</channel>'."\n";
$data .= '</rss>'."\n";
if($result[type_id] == "1")
{
$f = fopen( 'rss_1.xml' , 'w' ); //ส่วนของการสร้างไฟล์ XML
fputs( $f , $data );
fclose( $f );
}
else
{
$f = fopen( 'rss_2.xml' , "w"); //ส่วนของการสร้างไฟล์ X
fputs( $f , $data );
fclose( $f );
}
?>
ประวัติการแก้ไข 2013-05-26 13:23:35
Date :
2013-05-25 19:05:45
By :
Monkey_CONAN
รบกวนผู้รู้ช่วยหน่อยนะคะ
ด่วนๆมากเลยค่ะ T T
Date :
2013-05-26 15:20:39
By :
Monkey_CONAN
ลองดูครับ
Code (PHP)
<?php
include("connect.php");
//set encoding
mysql_query("SET character_set_results=utf8");
mysql_query("SET character_set_client=utf8");
mysql_query("SET character_set_connection=utf8");
$sql = " SELECT a.news_id as aid, b.date as bdate, a.org , a.act , a.title , a.per , a.loc, b.url , b.news_name, a.date as adate, b.type_id from news_su a, news_web b where a.news_id=b.news_id ";
mysql_select_db($dbName);
$query = mysql_query($sql);
$head = <<<XML
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
<title>News Extraction</title>
<description>News Interesting</description>
<link>http://su.ac.th</link>
XML;
$type = array();
while($result = mysql_fetch_array($query)) {
if(!array_key_exists($result['type_id']))
$type[$result['type_id']] = '';
$type[$result['type_id']] .= sprintf('
<item>
<title>%s</title>
<link>%s</link>
<pubDate>%s</pubDate>
<description>%s %s %s %s
%s %s %s %s</description>
</item>',
$result['news_name'],
$result['url'],
$result['bdate'],//เวลา
$result['type_id'],
$result['org'],
$result['act'],
$result['title'],
$result['per'],
$result['loc'],
$result['loc'],
$result['adate']
);
}
$foot = <<<XML
</channel>
</rss>
XML;
foreach($type AS $key => $data){
$f = fopen('rss_'.$key.'.xml', 'w');
fputs($f, $head.$data.$foot);
fclose( $f );
}
?>
ประวัติการแก้ไข 2013-05-26 15:49:07 2013-05-26 18:54:05 2013-05-26 20:00:25
Date :
2013-05-26 15:47:37
By :
itpcc
ลอง echo $head.$data.$foot; แทน fputs ดูหน่อยครับ ผมไมแน่ใจว่ามันเป็นไปตามที่คุณต้องการมั้ย
Date :
2013-05-26 19:49:16
By :
itpcc
ได้แล้วนะค่ะ
ขอบคุณค่ะ
ตรง <description> ขาดเครื่องหมาย '/'
Date :
2013-05-26 20:02:44
By :
Monkey_CONAN
Load balance : Server 03