2011-05-23 43 views
2

我一直在努力構建一個新聞系統一段時間。我得到每個新聞的標記如下所示:建立一個基於AJAX的新聞系統

 $newsArray = array(); 
     $result = News::getNews($database, 5); 

     while($row = mysql_fetch_assoc($result)) 
       $newsArray[] = new News($row); 

     foreach($newsArray as $news) 
      echo $news->getMarkup($database); 

這是一個有效的方式接收我的新聞帖子?我有一個包含我的實際的新聞後標記稱爲newspost.html文件 - 和我的getMarkup()函數如下:

public function getMarkup($database) { 

     $html = file_get_contents('include/html/newspost.html'); 

     $find = array("{ID}", "{TITLE}", "{CONTENT}", "{USERNAME}", "{TIME}"); 
     $replace = array($this->data['news_id'], $this->data['title'], $this->data['content'], $this->data['username'], $this->data['time']); 

     for ($i = 0; $i < count($find); ++$i) { 
      $html = str_replace($find[$i], $replace[$i], $html); 
     } 

     return $html; 
    } 

很明顯,我不能獲取一個PHP文件,所以我不得不作出我自己的解決方案爲每個帖子添加特定的新聞信息。但是,我覺得這是非常無效的。

我很想得到一些關於如何以更優雅的方式解決這個問題的建議。我不想將我的postnews代碼直接嵌入到我的PHP函數中,因爲我不喜歡混合結構和內容。

反饋表示讚賞!

+0

1件事我注意到了,你正在重新閱讀包含/ html/newspost.html的每一件物品,那太可怕了。 – OneOfOne 2011-05-23 17:53:21

回答

1

1快速修復,移動$html = file_get_contents('include/html/newspost.html');以外的getMarkup功能。

和其他1個想法,在客戶端執行html處理,只需將原始發佈數據(json_encode)發送到您的ajax代碼,讓ajax代碼執行處理。

0

它看起來基本上沒問題。其他評論員指出的問題實際上並不是什麼大不了的。你的數據庫查詢比從內存中再次抓取一個文件要慢,並且str_replace不在這裏也不在那裏。

要告訴我們的是AJAX與此有關的事情,目前還不清楚你在幾個地方談論什麼(如'無法獲取PHP文件')。