连接数据库,动态生成Rss feed(订阅号)

首先要把xml模板建好,该xml模板与普通的xml模板不同,需要加上rss输出模板,具体代码如下:

<?xml version="1.0" encoding="utf-8" ?>
<!-- rss输出模板,用php动态制造channel,和item -->
<rss version="2.0" xmlns:wfw="http://wellformedweb.org/CommentAPI/"></rss>

接下来 写个类,完成动态创建xml节点信息,憋说话,看代码:

class feed {
    public $title = ''; // channel的title
    public $link = '';  // channel的link
    public $description = '';   // channel的descrip
    public $items = array();

    public $template = './feed.xml';  // xml模板
    protected $dom = null;
    protected $rss = null;

    public function __construct() {
        $this->dom = new DOMDocument('1.0','utf-8');
        $this->dom->load($this->template);
        $this->rss = $this->dom->getElementsByTagName('rss')->item(0);
    }
    
    // 调用createItem,把所有的item节点都生成,再输出
    public function display() {
        $this->createChannel();
        $this->addItem($this->items);
        header("content-type:text/xml; charset=utf-8");
        echo $this->dom->savexml();
    }

    // 封装createChannel方法,用来创建Rss的唯一且必须的channel节点
    protected function createChannel() {
        $channel = $this->dom->createElement('channel');
        $channel->appendChild($this->createEle('title',$this->title));
        $channel->appendChild($this->createEle('link',$this->link));
        $channel->appendChild($this->createEle('description',$this->description));

        $this->rss->appendChild($channel);
    }

    // 封装addItem方法,把所有的商品增加到Rss里面去
    // $list是商品列表,是二维数组,每一行是一个商品
    protected function addItem($list) {
        foreach($list as $goods) {
            $this->rss->appendChild($this->createItem($goods));
        }
    }

    // 封装一个方法,用来造item
    protected function createItem($arr) {
        $item = $this->dom->createElement('item');

        foreach($arr as $k=>$v) {
            $item->appendChild($this->createEle($k,$v));
        }

        return $item;
    }

    // 封装一个方法,直接创建如<ele>some text</ele>这样的节点
    protected function createEle($name,$value) {
        $ele = $this->dom->createElement($name);
        $text = $this->dom->createTextNode($value);
        $ele->appendChild($text);

        return $ele;
    }
}

类写好,就拿数据吧,连接数据库,拿数据:

$conn = mysql_connect('localhost','root','111111');
mysql_query('set names utf8',$conn);
mysql_query('use boolshop',$conn);

$sql = 'select goods_name as title,goods_brief as description from goods order by add_time desc limit 8';

$rs = mysql_query($sql,$conn);

$list = array();    

while($row = mysql_fetch_assoc($rs)) {
    $list[] = $row;
}

配置变量,输出xml信息:

$feed = new feed();
$feed->title = '正装品牌';
$feed->link = 'http://localhost/0424';
$feed->description = '这是正装品牌的最新优惠信息';
$feed->items = $list;
$feed->display();

最终显示效果:




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值