用户
 找回密码
 入住 CI 中国社区
搜索
查看: 5582|回复: 10
收起左侧

[HELP] CI从数据库提取数据在网页显示的问题

[复制链接]
发表于 2011-5-12 16:07:24 | 显示全部楼层 |阅读模式
控制器中的一个方法:
PHP复制代码
 function rss() {
        $this->load->model('activity_model');
        $result = $this->activity_model->lists();
        //define channel
        $rss = new UniversalFeedCreator();
        //$rss->useCached();
        $rss->title="Personal News Site";
        $rss->description="daily news from me";
        $rss->link="http://mydomain.net/";
        $rss->syndicationURL="http://mydomain.net/";
 
foreach($result as $row) {
        //channel items/entries
        $item = new FeedItem();
        //$item->title = "test berita pertama";
        $item->title = $row['name'];
        $item->link = "http://events.mike/activity/ID";
        $item->description = $row['name'];
        $item->source = "http://events.mike";
       // $item->author = $row['username'].' '.$row['email'];
       $item->author = $row['username'];
       $item->authorEmail = $row['email'];
        //$item->authorEmail = $row['email'];
 
 
 
        //optional enclosure support
      /*  $item->enclosure = new EnclosureItem();
        $item->enclosure->url='http://mydomain.net/news/picture.jpg';
        $item->enclosure->length="65905";
        $item->enclosure->type='image/jpeg';*/

 
        $rss->addItem($item);
}
}
复制代码

模型中的lists方法:
PHP复制代码
  function lists($where = '', $order = '', $limit = 10,$like = '', $offset = 0) {
        if (is_array($where)) {
            $where = " AND a.`{$where['field']}` = {$where['value']}";
        } elseif ($where != '') {
            $where = " AND {$where}";
        }
        if (is_array($order)) {
            $order = " ORDER BY `{$order['field']}` {$order['type']}";
        } elseif ($order != '') {
            $order = " ORDER BY {$order}";
        }
        if(is_array($like)){
            $like = " AND a.`{$like['field']}` like {$like['value']}";
        }elseif ($like != ''){
            $like = " AND {$like}";
        }
 
        $limit_str = '';
        if($limit > 0){
            $limit_str = " LIMIT {$offset},{$limit} ";
        }
 
$sql =<<<end
    SELECT a.*, m.`alias`,(SELECT `username` FROM user WHERE `id` = a.`user_id`) AS username,(SELECT `email` FROM user WHERE `id` = a.`user_id`) AS email
    FROM `events_dev`.`activity` a, `events_dev`.`model` m
    WHERE a.model_id = m.id
        {$where} {$like}
    {$order}
    {$limit_str};
end
;
 
        return  $this->db->query($sql)->result_array();
    }
复制代码

变量的声明:
PHP复制代码
class FeedItem extends HtmlDescribable {
 
   
    var $title, $description, $link;
 
 
    var $author, $authorEmail, $image, $category, $comments, $guid, $source, $creator;
 
 
    var $date;
 
 
    var $enclosure;
 
 
    var $additionalElements = Array();
 
 
    // var $source;
 
}
复制代码


数据库中的几组数据,在firefox中,可以循环显示出来,但是邮箱地址和用户名不显示。
在opera中只显示一组数据,但是用户名以及邮箱都会显示出来。这是个什么原因呢。查看页面代码中,是有用户名跟邮箱的信息的。。

附图:

firefox中的显示情况

firefox中的显示情况


opera中的显示情况

opera中的显示情况

发表于 2011-5-12 16:15:00 | 显示全部楼层
这个应该是你页面html代码问题了
你页面有没有用js?
发表于 2011-5-12 16:20:07 | 显示全部楼层
html  代码的问题
 楼主| 发表于 2011-5-12 16:42:17 | 显示全部楼层
回复 jeongee 的帖子

页面代码:
PHP复制代码
<?xml version="1.0" encoding="utf-8"?>
<!-- generator="FeedCreator 1.7.2-ppt (info@mypapit.net)" -->
<?xml-stylesheet href="http://www.w3.org/2000/08/w3c-synd/style.css" type="text/css"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>Personal News Site</title>
    <subtitle>daily news from me</subtitle>
    <link rel="alternate" type="text/html" href="http://mydomain.net/"/>
    <id>http://mydomain.net/</id>
    <updated>2011-05-12T16:21:56+01:00</updated>
 
    <generator>FeedCreator 1.7.2-ppt (info@mypapit.net)</generator>
<link rel="self" type="application/atom+xml" href="http://mydomain.net/" />
    <entry>
        <title>一次投票</title>
        <link rel="alternate" type="text/html" href="http://events.mike/activity/ID"/>
        <published>2011-05-12T08:21:56+01:00</published>
        <updated>2011-05-12T08:21:56+01:00</updated>
 
        <id>http://events.mike/activity/ID</id>
        <author>
            <name>admin</name>
        </author>
        <summary>一次投票</summary>
    </entry>
    <entry>
 
        <title>别动,就现在你的左手放在那里?</title>
        <link rel="alternate" type="text/html" href="http://events.mike/activity/ID"/>
        <published>2011-05-12T08:21:56+01:00</published>
        <updated>2011-05-12T08:21:56+01:00</updated>
        <id>http://events.mike/activity/ID</id>
        <author>
            <name>puyo</name>
 
        </author>
        <summary>别动,就现在你的左手放在那里?</summary>
    </entry>
    <entry>
        <title>当有人追你,你不喜欢对方时,会怎样?</title>
        <link rel="alternate" type="text/html" href="http://events.mike/activity/ID"/>
        <published>2011-05-12T08:21:56+01:00</published>
 
        <updated>2011-05-12T08:21:56+01:00</updated>
        <id>http://events.mike/activity/ID</id>
        <summary>当有人追你,你不喜欢对方时,会怎样?</summary>
    </entry>
    <entry>
        <title>请用四个字来形容你的初恋!</title>
        <link rel="alternate" type="text/html" href="http://events.mike/activity/ID"/>
 
        <published>2011-05-12T08:21:56+01:00</published>
        <updated>2011-05-12T08:21:56+01:00</updated>
        <id>http://events.mike/activity/ID</id>
        <summary>请用四个字来形容你的初恋!</summary>
    </entry>
    <entry>
        <title>下面哪一首歌曲能让你流泪?</title>
 
        <link rel="alternate" type="text/html" href="http://events.mike/activity/ID"/>
        <published>2011-05-12T08:21:56+01:00</published>
        <updated>2011-05-12T08:21:56+01:00</updated>
        <id>http://events.mike/activity/ID</id>
        <author>
            <name>admin</name>
        </author>
 
        <summary>下面哪一首歌曲能让你流泪?</summary>
    </entry>
    <entry>
        <title>qqwerew</title>
        <link rel="alternate" type="text/html" href="http://events.mike/activity/ID"/>
        <published>2011-05-12T08:21:56+01:00</published>
        <updated>2011-05-12T08:21:56+01:00</updated>
 
        <id>http://events.mike/activity/ID</id>
        <author>
            <name>admin</name>
        </author>
        <summary>qqwerew</summary>
    </entry>
    <entry>
 
        <title>iphone</title>
        <link rel="alternate" type="text/html" href="http://events.mike/activity/ID"/>
        <published>2011-05-12T08:21:56+01:00</published>
        <updated>2011-05-12T08:21:56+01:00</updated>
        <id>http://events.mike/activity/ID</id>
        <summary>iphone</summary>
 
    </entry>
</feed>
复制代码

有涉及到html的问题吗
 楼主| 发表于 2011-5-12 16:50:56 | 显示全部楼层
回复 jeongee 的帖子

哦。。我知道了。。。在结果显示的代码那边根本就没有写显示邮箱等信息的代码。。。没注意。。呵呵
 楼主| 发表于 2011-5-13 11:19:41 | 显示全部楼层
回复 jeongee 的帖子

feedcreator.class.php(一部分):
PHP复制代码
function createFeed() {
 
        $feed = "<?xml version=\"1.0\" encoding=\"".$this->encoding."\"?>\n";
 
        $feed.= $this->_createGeneratorComment();
 
        $feed.= $this->_createStylesheetReferences();
 
        $feed.= "<feed xmlns=\"http://www.w3.org/2005/Atom\"";
 
        if ($this->language!="") {
 
            $feed.= " xml:lang=\"".$this->language."\"";
 
        }
 
        $feed.= ">\n";
 
        $feed.= "    <title>".htmlspecialchars($this->title)."</title>\n";
 
        $feed.= "    <subtitle>".htmlspecialchars($this->description)."</subtitle>\n";
 
        $feed.= "    <link rel=\"alternate\" type=\"text/html\" href=\"".htmlspecialchars($this->link)."\"/>\n";
 
        $feed.= "    <id>".htmlspecialchars($this->link)."</id>\n";
 
        $now = new FeedDate();
 
        $feed.= "    <updated>".htmlspecialchars($now->iso8601())."</updated>\n";
 
        if ($this->editor!="") {
 
            $feed.= "    <author>\n";
 
            $feed.= "        <name>".$this->editor."</name>\n";
 
            if ($this->editorEmail!="") {
 
                $feed.= "        <email>".$this->editorEmail."</email>\n";
 
            }
 
            $feed.= "    </author>\n";
 
        }
 
        $feed.= "    <generator>".FEEDCREATOR_VERSION."</generator>\n";
 
        $feed.= "<link rel=\"self\" type=\"application/atom+xml\" href=\"". $this->syndicationURL . "\" />\n";
 
        $feed.= $this->_createAdditionalElements($this->additionalElements, "    ");
 
        for ($i=0;$i<count($this->items);$i++) {
 
            $feed.= "    <entry>\n";
 
            $feed.= "        <title>".htmlspecialchars(strip_tags($this->items[$i]->title))."</title>\n";
 
            $feed.= "        <link rel=\"alternate\" type=\"text/html\" href=\"".htmlspecialchars($this->items[$i]->link)."\"/>\n";
 
            if ($this->items[$i]->date=="") {
 
                $this->items[$i]->date = time();
 
            }
 
            $itemDate = new FeedDate($this->items[$i]->date);
 
            $feed.= "        <published>".htmlspecialchars($itemDate->iso8601())."</published>\n";
 
            $feed.= "        <updated>".htmlspecialchars($itemDate->iso8601())."</updated>\n";
 
            $feed.= "        <id>".htmlspecialchars($this->items[$i]->link)."</id>\n";
 
            $feed.= $this->_createAdditionalElements($this->items[$i]->additionalElements, "        ");
 
            if ($this->items[$i]->author!="") {
 
                $feed.= "        <author>\n";
 
                $feed.= "            <name>".htmlspecialchars($this->items[$i]->author)."</name>\n";
 
                $feed.= "        </author>\n";
 
            }
 
            if ($this->items[$i]->description!="") {
 
                $feed.= "        <summary>".htmlspecialchars($this->items[$i]->description)."</summary>\n";
 
            }
 
            if ($this->items[$i]->enclosure != NULL) {
 
            $feed.="        <link rel=\"enclosure\" href=\"". $this->items[$i]->enclosure->url ."\" type=\"". $this->items[$i]->enclosure->type."\"  length=\"". $this->items[$i]->enclosure->length . "\" />\n";
 
            }
 
            $feed.= "    </entry>\n";
 
        }
 
        $feed.= "</feed>\n";
 
        return $feed;
 
    }
复制代码

页面的显示应该就是按照这个来的吧。。但是这里面没有authorEmail的相关信息。但是好像又不能自己加进去。所以导致邮箱不能显示出来,author也不能。这个文件里面的东西只要修改一下,即使是改回原样,还是会出错。不懂怎么回事。
发表于 2011-5-13 11:22:45 | 显示全部楼层
回复 patosky 的帖子

用标准的rss的xml格式就好了
 楼主| 发表于 2011-5-13 11:30:43 | 显示全部楼层
回复 jeongee 的帖子

我不大懂您的意思。。刚接触,头大
 楼主| 发表于 2011-5-13 11:36:51 | 显示全部楼层
回复 jeongee 的帖子

可以说的具体一点吗。。还有,feedcreator.class.php文件里面的内容是不是不能改?一改就出错
发表于 2011-5-13 11:38:09 | 显示全部楼层

本版积分规则