首先.我的[欄目]表結構是這樣的
id uid titile class
1 0 首頁 url
2 0 新聞 news
3 0 產品 url
4 3 科技產品 product
5 4 電腦 product
現在的問題的 我想做一下 無限級的下拉框
用遞迴的方法,可以實現 where uid = 0 開始迴圈 然後 get_str($row['id']); 遞迴
但是問題來了. 因為我的欄目 有一個CLASS欄位 表示欄目類型...url表示外部連結 news表示新聞 product表示產品欄目
一級產品首先是一個外部連結類型的..他的下級欄目 是產品類型的
我在後台發布產品的時候.選擇歸屬欄目的時候..............應該只把 class=prodcut和他的下級全部顯示出來
那麼我用遞迴的方法 在SQL加上條件陳述式 where class='product'
這樣的話 沒辦法往下遞迴啊...... 因為這個條件 如果不遞迴的話 就顯示 科技產品 電腦
我在網上找的歸遞代碼 都是UID 從 0開始的..........如果我 where class='product' 加上這個條件 那麼科技產品的UID是3或者是其它數字 比如56789 也可能是0
這樣就沒辦法遞迴啊...直接什麼也不顯示了...有什麼好法方嗎? 不知道我說的清不清楚.
回複討論(解決方案)
列出 class=prodcut和他的下級 時,就不是從 where uid = 0 開始了
對你樣本的資料就是從 where uid = 3 開始
所以你應該先獲得起點的 id,然後再遞迴
列出 class=prodcut和他的下級 時,就不是從 where uid = 0 開始了
對你樣本的資料就是從 where uid = 3 開始
所以你應該先獲得起點的 id,然後再遞迴
求大神.幫幫我吧,,,幫我寫一個我這個要求的 無限分類 的代碼好嗎
論壇是交流的地方,要代碼請左轉威客網
function foo($uid=0, $ext='') { $sql = "select * from tbl_name where uid=$uid" . ($uid && $ext ? " and class='$ext'" : ''); $rs = mysql_query($sql); while($row = mysql_fetch_assoc($rs)) { foo($row['id'], $ext); } }
function foo($uid=0, $ext='') { $sql = "select * from tbl_name where uid=$uid" . ($uid && $ext ? " and class='$ext'" : ''); $rs = mysql_query($sql); while($row = mysql_fetch_assoc($rs)) { foo($row['id'], $ext); } }
function foo($uid=0, $ext='') {
$sql = "select * from column where uid=$uid" . ($uid && $ext ? " and class='$ext'" : '');
$rs = mysql_query($sql);
while($row = mysql_fetch_assoc($rs)) { 這行報錯啊
echo $row['id'];
foo($row['id'], $ext);
}
}
echo foo(0, "product") ;
哥哥
報的什麼錯?
報錯我解決了
但是這個還是必須是 UID 從0開始啊..
如果UID是空 那麼class='$ext' 就報錯啊
foo(3, "product")
不就從 產品 下面開始了嗎?
要不要 product 無所謂
現在的問題是 這個 3 不是固定的啊
比如我的欄目有 首頁 新聞 產品 視頻
那麼我在後台 發布產品的時候., 可選欄目中 只把產品欄目列出來啊/
那麼 欄目中 可能有 多個 產品欄目.... 用於區分欄目類型 就靠 class欄位中的值 比如product 表示全部是產品欄目
不用遞迴呢 可否實現
我一開始就講了,既然你試要從某一個節點開始,就要先找到這個節點
無論這個節點存放在什麼位置,都可以按其唯一的屬性找到他
是啊.大哥
可是我不會從節點開始迴圈啊......怎麼辦,,,百度很多資料了.全是遞迴的
function foo($uid,$class=''){ if($class==''){ $sql = "select * from table where uid='".$uid."'"; }else{ $sql = "select * from table where uid='".$uid."' and class='".$class."'"; } $query = mysql_query($sql) or die(mysql_error()); while($result = mysql_fetch_assoc($query)){ echo $result['id'].' '.$result['title'].'
'; foo($result['id'],$result['class']); }}foo(0);
你能從根節點上遞迴,不就能從子節點上遞迴嗎?
有什麼區別呢?
用遞迴還是不用遞迴,這取決於你的需要。我在精華區有好幾個文章,你可以先看看
你能從根節點上遞迴,不就能從子節點上遞迴嗎?
有什麼區別呢?
用遞迴還是不用遞迴,這取決於你的需要。我在精華區有好幾個文章,你可以先看看
協助我太多了.把分給您了
後來我自已用別的思路解決了.