主題: 請問關於管理介面額外增加資料的問題... 作者: yuanyuan 於 七月 18, 2006, 06:45:46 下午 我想在登入後的管理頁面 統計資料下方
加上一些從資料庫中抓出來的東西(非lifetype預設的table) 不知道要怎麼做才好呢? 有沒有高手可以指點一下 感謝!!! ps:我知道管理介面那頁 改文字之類的可以從 templates/admin/dashboard.template改 但是若要加上從資料庫中抓出來的東西 就不知道要從何改起或加起了... 先在此感謝!!! 主題: Re: 請問關於管理介面額外增加資料的問題... 作者: markwu 於 七月 18, 2006, 07:24:14 下午 你這樣講實在太模糊了。我實在不知怎麼幫起。
麻煩在精確一點描述你的問題。 Mark 主題: Re: 請問關於管理介面額外增加資料的問題... 作者: yuanyuan 於 七月 18, 2006, 07:50:42 下午 就是我想在紅色圈圈那個地方 加上從資料庫中抓出來的資料
(就是系統預設登入的管理介面) 我要抓的table 不是預設的 是後來自己建的 面板文字的方面 我知道要從templates/admin/dashboard.template這邊改 可是程式的部分 我不知道要從哪邊和如何改起... >"< 先說聲謝謝囉... 主題: Re: 請問關於管理介面額外增加資料的問題... 作者: markwu 於 七月 19, 2006, 01:50:31 上午 所以你是想把圖書館的新書介紹加到 lifetype 的 dashboard 中嗎?
這些 新書介紹有 rss feed 的產出嗎? Mark 主題: Re: 請問關於管理介面額外增加資料的問題... 作者: yuanyuan 於 七月 19, 2006, 08:13:28 上午 no 我是要把minig後相關書籍的結果 放到管理介面上
沒有rss feed產出 主題: Re: 請問關於管理介面額外增加資料的問題... 作者: yuanyuan 於 七月 19, 2006, 08:22:25 上午 no是指不是要做新書介紹 而是要做相關書籍推薦
一樣是要加到lifetype的dashboard中囉~~~ 主題: Re: 請問關於管理介面額外增加資料的問題... 作者: yuanyuan 於 七月 19, 2006, 10:00:01 上午 我知道像最近發表文章等等的 在dashboard.template中是降抓出來的
{foreach from=$recentposts[$blogId] item=post} <tr style="background-color: {cycle values="#FFFFFF,#F7F7F7"};"> <td> <a target="_blank" href="{$url->postPermalink($post)}">{$post->getTopic()|strip_tags}</a><br/> </td> </tr> {/foreach} 如圖 我複製了一個在我想要的位置... 但是我不知道 像from=$recentposts[$blogId]和item=post 這些東東 我應該去哪邊改 才可以去抓到我想要抓的資料? 而我想抓的這個table 不是系統預設建好的... 感謝喔~~~ ^^ 主題: Re: 請問關於管理介面額外增加資料的問題... 作者: markwu 於 七月 19, 2006, 11:10:57 上午 看起來像是 博客來可以作的功能 :-)。你可以修改 admindashboardview.class.php,LifeType 使用 MVC 架構,所以你必須先透過 model 把資料撈到 view,然後再 assign 到 template。
程式碼: 你可以在 admindashboardview.class.php 中加入一個 method 去撈外部資料,我假設你是用 userID 去撈不同user 的 mining 結果 然後在同一個程式中的 _loadViewData()中加入 程式碼: $books = array(); 這樣你就可以在 dashboard.template 中用 程式碼: {foreach from=$books item=book} 來使用模版變數。這只是個大概。 Mark 主題: Re: 請問關於管理介面額外增加資料的問題... 作者: yuanyuan 於 七月 19, 2006, 06:45:47 下午 我在admindashboardview.class.php 加了紅字的內容...
function _loadViewData() { // for each blog, load some statistics $articles = new Articles(); $comments = new ArticleComments(); $trackbacks = new Trackbacks(); $resources = new GalleryResources(); $recentPosts = Array(); $recentComments = Array(); $recentResources = Array(); //------------------------------------------------------------------------------------------- $mining = Array(); $mining = $this->_loadMiningResults( $this->_userInfo->getUsername()); //------------------------------------------------------------------------------------------- // load some statistics for each one of the blogs foreach( $this->_userBlogs as $userBlog ) { $recentPosts[$userBlog->getId()] = $articles->getBlogArticles( $userBlog->getId(), -1, DASHBOARD_MAX_RECENT_ITEMS, 0, POST_STATUS_PUBLISHED ); $recentComments[$userBlog->getId()] = $comments->getBlogComments ( $userBlog->getId(), DASHBOARD_MAX_RECENT_ITEMS ); $recentTrackbacks[$userBlog->getId()] = $trackbacks->getBlogTrackbacks( $userBlog->getId(), DASHBOARD_MAX_RECENT_ITEMS ); } $this->_params->setValue( "userblogs", $this->_userBlogs ); $this->_params->setValue( "recentposts", $recentPosts ); $this->_params->setValue( "recentcomments", $recentComments ); $this->_params->setValue( "recenttrackbacks", $recentTrackbacks ); //---------------------------------------------------------------------------------------------- $this->_params->setValue( "mining", $mining ); //---------------------------------------------------------------------------------------------- } 還有這個Model //--------------------------------------------------------------------------- function _loadMiningResults( $userId ) { $lnk = mysql_connect('localhost','帳號','密碼') or die("無法連線到該資料庫"); mysql_select_db('lifetype',$lnk)or die("無法連線到該資料庫"); //echo $id; $sql = "select MARC_ID FROM history WHERE (ID = '$userId')"; $result = mysql_query($sql); //echo $sql; while ($row = mysql_fetch_object($result)) { $MARC_ID=$row->MARC_ID; $sql1 = "select MARC_ID1 FROM mining WHERE (MARC_ID = ".$MARC_ID.")"; $result1 = mysql_query($sql1); //echo $sql1; while ($row = mysql_fetch_object($result1)) { $MARC_ID1=$row->MARC_ID1; //echo $MARC_ID1; sybase_min_server_severity(11); $conn = sybase_connect("NCTU-T22", "帳號", "密碼") or die("Could not connect !"); //echo $conn; sybase_select_db("totals2",$conn); $sql2 = "select * FROM Mar3100 WHERE (MARC_ID = ".$MARC_ID1.")"; $result2 = sybase_query($sql2); //echo $sql2; while($row = sybase_fetch_assoc($result2)) { $MARC_ID1 = $row["MARC_ID"]; $title2 = $row["TITLE"]; //echo $title2; return $title2; /*if ( $MARC_ID1 <> "" ){ echo "<p><a href='http://XXX.XXX.XXX.XXX/book/check.php?id=".$MARC_ID1."&T=0&ty=ie'>$title2</a></p>"; }*/ } } } /*if ($MARC_ID1 == ""){ echo "無推薦書籍"; }*/ 在dashboard.template裡面加了這一段 {foreach from=$mining item=mining} <tr style="background-color: {cycle values="#FFFFFF,#F7F7F7"};"> <td> <a target="_blank" href="">{$mining}</a><br/> </td> </tr> {/foreach} 發生了一個問題... 在程式裡面 ehco出的資料筆數是對的(三筆) 可是只要用return 筆數就會只剩第一筆... 可是不return 就一筆資料也沒有... @@ 是return的用法錯了嗎? 還是應該要用別的呢? return array也是一樣 >"< 謝謝Mark熱心幫忙 感激不盡... 主題: Re: 請問關於管理介面額外增加資料的問題... 作者: markwu 於 七月 19, 2006, 08:56:33 下午 下次記得,連 IP 都要隱藏。
再來是,你程式不能這麼 『return』.... 這樣當然指傳回一筆資料 .... 我假設你要傳出來的值是 title2: 1. 那麼你必須先初始一個 array,假設是 $books = Array(); 2. 然後把 title2 存進 books 裡面, $books[]=$title2; 3. 然後才是 return $books 這樣,你 _loadMiningResults() 才能取得 books ...你現在,一抓到資料就 return 出來,當然只有一筆。而且還是傳出字串變數,並非是陣列。 另外,不要把 echo等等放進程式中 .... 記得 M/V/C 是要分離的! 這是要在 template 判斷的: 引用 {if $books} {foreach from=$mining item=mining} <tr style="background-color: {cycle values="#FFFFFF,#F7F7F7"};"> <td> <a target="_blank" href="">{$mining}</a><br/> </td> </tr> {/foreach} {else} 無相關書籍 {/if} btw, 我只有一個小小要求!如果成功了,寫個心得分享一下怎麼整合的就可了。因為別人可能也需要。 :-) 謝謝! Mark 主題: Re: 請問關於管理介面額外增加資料的問題... 作者: yuanyuan 於 七月 20, 2006, 02:38:29 下午 不好意思 對這東西實在沒什麼辦法 @@
我把array的東東寫在最後一個while這邊 可是還是都是抓到第一筆資料 然後重複了五次 >"< 程式如下: $books = Array(); while($row = sybase_fetch_assoc($result2)) { $MARC_ID1 = $row["MARC_ID"]; $title2 = $row["TITLE"]; for ($i=0; $i<=4; $i++){ $books[$i]=$title2; } return $books; } 好像要降 $books[]=1; $books[]=2; $books[]=3; 把不同的值抓出來 傳到return $books那邊才會是對的 可是不知道要怎麼做才好 @@ 感謝 感謝!!! 主題: Re: 請問關於管理介面額外增加資料的問題... 作者: james 於 七月 20, 2006, 03:55:36 下午 不好意思 對這東西實在沒什麼辦法 @@ 我把array的東東寫在最後一個while這邊 可是還是都是抓到第一筆資料 然後重複了五次 >"< 程式如下: $books = Array(); while($row = sybase_fetch_assoc($result2)) { $MARC_ID1 = $row["MARC_ID"]; $title2 = $row["TITLE"]; for ($i=0; $i<=4; $i++){ $books[$i]=$title2; } return $books; } 好像要降 $books[]=1; $books[]=2; $books[]=3; 把不同的值抓出來 傳到return $books那邊才會是對的 可是不知道要怎麼做才好 @@ 感謝 感謝!!! 你原來的寫法的確是會重覆5次(因為你的迴圈的確是要它跑5次) 另外因為你在跑完5次後立刻return 這個array,因此結果當然就是傳回你看到的樣子囉. 下面的方式,是在整個while loop跑完後再傳回$books,試看看囉:) $books = Array(); while($row = sybase_fetch_assoc($result2)) { $MARC_ID1 = $row["MARC_ID"]; $title2 = $row["TITLE"]; $books[]=$title2; } return $books; James. 主題: Re: 請問關於管理介面額外增加資料的問題... 作者: yuanyuan 於 七月 20, 2006, 04:21:29 下午 可是降就只會傳回第一筆而已... @@ 我原本也是降寫 :P
因為資料不只一筆 我要把全部的資料抓出來... >"< 主題: Re: 請問關於管理介面額外增加資料的問題... 作者: markwu 於 七月 21, 2006, 07:52:15 上午 這根寫程式的觀念有關了!
你必須先瞭解你的程式怎麼運作! 你的程式有三個 while 回圈,問題來了,你的 $book = Array() 應該放在哪?你如果放在第一層外面?還是第一層與第二層中間?還是第三層裡面? 另外, return 的位置也有關係, return 會中斷程式運作,直接把值返回,你目前放的位置對嗎? $books = Array(); while ( xxxx ) { while(yyyy) { while (zzzzz) { $books[]=$title; } } } return $books; 這只是大概,你要自己去嘗試! Mark 主題: Re: 請問關於管理介面額外增加資料的問題... 作者: yuanyuan 於 七月 27, 2006, 02:44:12 下午 還有一個問題... @@ 請原諒我問題那麼多 >"<
就是在dashboard.template的地方 我想讓超連結可以抓到我的$MARC_ID1這個變數 但是foreach好像不能降用... {foreach from=$mining item=mining} {foreach from=$mids item=mids} <tr style="background-color: {cycle values="#FFFFFF,#F7F7F7"};"> <td> <a target="_blank" href="http://xxx.xxx.xxx.xxx/book/check.php?id={$mids}">{$mining}</a><br/> <td> </tr> {/foreach} {/foreach} 會有$title和$MARC_ID1對不起來的問題... 請問我應該在dashboard.template怎麼改 或是在admindashboardview.class.php的function _loadMiningResults Model怎麼改 才可以把我想要的變數$MARC_ID1 傳到超連結裡呢? 謝謝!!! 以下是可以顯示$title的function _loadMiningResults Model function _loadMiningResults( $userId ) { $lnk = mysql_connect('l','','') or die("無法連線到該資料庫"); mysql_select_db('lifetype',$lnk)or die("無法連線到該資料庫1"); $sql = "select MARC_ID FROM history WHERE (ID = '$userId')"; $result = mysql_query($sql); $books = Array(); while ($row = mysql_fetch_object($result)) { $MARC_ID=$row->MARC_ID; $sql1 = "select MARC_ID1 FROM mining WHERE (MARC_ID = ".$MARC_ID.")"; $result1 = mysql_query($sql1); while ($row = mysql_fetch_object($result1)) { $MARC_ID1=$row->MARC_ID1; sybase_min_server_severity(11); $conn = sybase_connect("", "", "") or die("Could not connect !"); sybase_select_db("totals2",$conn); $sql2 = "select * FROM Mar3100 WHERE (MARC_ID = ".$MARC_ID1.")"; $result2 = sybase_query($sql2); while($row = sybase_fetch_array($result2)) { $MARC_ID1 = $row["MARC_ID"]; $title = $row["TITLE"]; $books[]=iconv("big5","UTF-8",$title); } } } return $books; } 主題: Re: 請問關於管理介面額外增加資料的問題... 作者: lss 於 七月 27, 2006, 03:45:47 下午 還有一個問題... @@ 請原諒我問題那麼多 >"< 以上的 $mids 應該不是筆誤吧?就是在dashboard.template的地方 我想讓超連結可以抓到我的$MARC_ID1這個變數 但是foreach好像不能降用... {foreach from=$mining item=mining} {foreach from=$mids item=mids} <tr style="background-color: {cycle values="#FFFFFF,#F7F7F7"};"> <td> <a target="_blank" href="http://xxx.xxx.xxx.xxx/book/check.php?id={$mids}">{$mining}</a><br/> <td> </tr> {/foreach} {/foreach} 會有$title和$MARC_ID1對不起來的問題... .... lss 主題: Re: 請問關於管理介面額外增加資料的問題... 作者: yuanyuan 於 七月 27, 2006, 04:22:54 下午 不是呀...
為什麼會問是不是筆誤呢? 是保留字還是有什麼特殊意義咩? 我就另外寫了一個function 然後用$mids傳$MARC_ID1到dashboard.template $mining是傳$title的 但是就是會有$title和$MARC_ID1對不起來的情形 >"< 主題: Re: 請問關於管理介面額外增加資料的問題... 作者: lss 於 七月 27, 2006, 04:45:49 下午 那就是 smarty 語法的邏輯錯誤囉!正確的用法是:
{foreach from=$陣列 item=變數名} 然後, $變數名 是從 foreach 迴圈裡取出的陣列元素。你的寫法,會在迴圈裡把陣列變成一個字串變數。 詳細請參考 smarty 官方網站的說明: http://smarty.php.net/manual/en/language.function.foreach.php lss 主題: Re: 請問關於管理介面額外增加資料的問題... 作者: yuanyuan 於 八月 24, 2006, 04:21:30 下午 這個我改過了 但是類似的問題還是存在 @@
我現在改成降 {foreach from=$mining item=mining1} {foreach from=$mids item=mids1} <a target="_blank" href="http://xxx.xxx.xxx.xx/book/check.php?id=">{$mids1}{$mining1}</a><br/> {/foreach} {/foreach} 但就會變成9個 如圖 3個idX3本書名 就變成九個了 @@ 要怎麼做 才能變成降呢 278462讓說不Very Easy 311057創造人生DIY 310920時間的開發與管理 感謝感謝!!! 主題: Re: 請問關於管理介面額外增加資料的問題... 作者: yuanyuan 於 八月 28, 2006, 03:24:12 下午 這個問題 沒有人可以指點我一下咩 :'(
|