patosky 发表于 2011-5-12 16:07:24

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

控制器中的一个方法:
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方法:
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();
    }
变量的声明:
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中只显示一组数据,但是用户名以及邮箱都会显示出来。这是个什么原因呢。查看页面代码中,是有用户名跟邮箱的信息的。。

附图:


zhouli520 发表于 2011-5-12 16:15:00

这个应该是你页面html代码问题了
你页面有没有用js?

jeongee 发表于 2011-5-12 16:20:07

html代码的问题

patosky 发表于 2011-5-12 16:42:17

回复 jeongee 的帖子

页面代码:<?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的问题吗

patosky 发表于 2011-5-12 16:50:56

回复 jeongee 的帖子

哦。。我知道了。。。在结果显示的代码那边根本就没有写显示邮箱等信息的代码。。。没注意。。呵呵

patosky 发表于 2011-5-13 11:19:41

回复 jeongee 的帖子

feedcreator.class.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也不能。这个文件里面的东西只要修改一下,即使是改回原样,还是会出错。不懂怎么回事。

jeongee 发表于 2011-5-13 11:22:45

回复 patosky 的帖子

用标准的rss的xml格式就好了

patosky 发表于 2011-5-13 11:30:43

回复 jeongee 的帖子

我不大懂您的意思。。刚接触,头大

patosky 发表于 2011-5-13 11:36:51

回复 jeongee 的帖子

可以说的具体一点吗。。还有,feedcreator.class.php文件里面的内容是不是不能改?一改就出错

jeongee 发表于 2011-5-13 11:38:09

回复 patosky 的帖子

http://baike.baidu.com/view/1644.htm
页: [1] 2
查看完整版本: CI从数据库提取数据在网页显示的问题