ホームページ > バックエンド開発 > PHPチュートリアル > 緊急です。再発についてとても憂鬱です。助けてください。

緊急です。再発についてとても憂鬱です。助けてください。

WBOY
リリース: 2016-06-20 12:59:11
オリジナル
756 人が閲覧しました

まず第一に、私の [列] テーブル構造は次のようになります
id uid titile class
1 0 ホーム url
2 0 ニュース
3 0 製品 url
4 3 テクノロジー製品product
5 4 コンピュータ製品

現在の問題は、無限のドロップダウン ボックスを作成したいことです

再帰的方法を使用すると、uid = 0 で実現でき、開始できますループしてから get_str($ row['id']); Recursive


しかし、ここで問題が発生します。なぜなら、私の列には列の種類を示す CLASS フィールドがあるからです... URL は外部リンクを表します。ニュースを表します 製品は製品列を表します

第 1 レベルの製品は、最初の外部リンク タイプであり、その下位列は製品タイプ
です。バックグラウンドで製品をリリースするとき、アトリビューションを選択するとき。列.......... .... class=prodcut とそのすべての下位のみを表示する必要があります
次に、再帰的メソッドを使用して SQL に条件文を追加します。 where class='product'

この場合、再帰する方法はありません。この条件のため、再帰的でない場合は、「テクノロジー製品」と表示されます。 コンピューター

で見つけた再帰的コード。インターネットはすべて 0 から始まる UID を持ちます。class='product' にこの条件を追加すると、テクノロジー製品の UID は 3 または他の数字 (56789 など)、または 0 になる可能性があります

この方法では、再帰する方法はありません...何も表示されません。私が言ったことを明確に理解できるかどうかはわかりません。


ディスカッション (解決策) への返信

クラス =prodcut とその部下をリストします。uid = 0 の場所から始まりません
例のデータはどこから始まりますかuid = 3

したがって、最初に開始点の ID を取得してから再帰する必要があります。

class=prodcut とその下位をリストする場合、uid = の位置から開始されません。 0
例のデータは uid = 3 から始まります

したがって、最初に開始点の ID を取得してから再帰する必要があります



助けてください、お願いします私が必要とする無限分類用のコードの作成を手伝ってください

フォーラムはコミュニケーションの場です。コードが必要な場合は、左折して Witkey.com ($uid=0, $ext='') にアクセスしてください。 ) {

$sql = "uid=$uid の列から * を選択" . ($uid && $ext ? " and class='$ext'" : '' ); sql);

while($row = mysql_fetch_assoc($rs)) { この行はエラーを報告します

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);  } }
ログイン後にコピー
ログイン後にコピー
echo $row['id'];

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);  } }
ログイン後にコピー
ログイン後にコピー

echo foo(0, "product");

レポート どうしたのですか?

エラーは解決しました

しかし、これは 0 から始まる UID である必要があります。

UID が空の場合、class='$ext' はerror

foo(3, "product")
product の一番下から始めるべきではないでしょうか?

製品が欲しいかどうかは関係ありません

問題は、これら 3 つが修正されていないことです

たとえば、私のコラムには ホーム ニュース 製品 ビデオ


バックグラウンドで製品を公開する場合、オプションの列には製品列のみが表示されます/

その場合、列には複数の製品列が存在する可能性があります.... class フィールドは、列の型を区別するために使用されます。たとえば、product は、再帰なしですべての 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'].'<br>';        foo($result['id'],$result['class']);    }}foo(0);
ログイン後にコピー

你能从根节点上递归,不就能从子节点上递归吗?
有什么区别呢?

用递归还是不用递归,这取决于你的需要。我在精华区有好几个帖子,你可以先看看

你能从根节点上递归,不就能从子节点上递归吗?
有什么区别呢?

用递归还是不用递归,这取决于你的需要。我在精华区有好几个帖子,你可以先看看




帮助我太多了.把分给您了

后来我自已用别的思路解决了.
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート