PHP 無限分類ドロップダウン リスト分類 (パート 1)

実装図

递归.png

ドロップダウンリストの無限レベル分類

<?php
include ("conn.php");
function getList($pid=0,&$result=array(),$space=0){
    $space=$space+2;
    $sql="SELECT*FROM deepcate WHERE pid = $pid";
    $res = mysql_query($sql);
    while ($row = mysql_fetch_assoc($res)){
        $row['catename']=str_repeat('&nbsp;',$space).'|--|'.$row['catename'];
        $result[]=$row;
        getList($row['id'],$result,$space);
    }
    return $result;
}
$rs=getList();
function displayCate($pid=0,$selected=1){
    $rs=getList($pid);
    $str='';
    $str.="<select name='cate'>";
    foreach ($rs as $key=>$val){
        $selectedstr='';
        if ($val['id'] == $selected){
            $selectedstr="selected";
        }
        $str.="<option{$selectedstr}>{$val['catename']}</option>";
    }
    return $str.='</select>';
}
echo displayCate(0,2);
?>

以下では、セクションに分けてコードを説明します。

コードの説明:

<?php
include ("conn.php");
function getList($pid=0,&$result=array(),$space=0){
   $space=$space+2;
   $sql="SELECT*FROM deepcate WHERE pid = $pid";
   $res = mysql_query($sql);
   while ($row = mysql_fetch_assoc($res)){
       $row['catename']=str_repeat('&nbsp;',$space).'|--|'.$row['catename'];
       $result[]=$row;
       getList($row['id'],$result,$space);
   }
   return $result;
}
$rs=getList();
?>
function getList($pid=0){
}
?>

まず、親クラス ID として pid を 0 として定義して関数を定義します。

$sql="SELECT*FROM deepcate WHERE pid = $pid";

SQL ステートメントを使用して、pid 選択サーフェスのサブクラスをクエリします。

$res = mysql_query($sql);
//执行sql语句
    $result=array();
   while ($row = mysql_fetch_assoc($res)){
       $result[]=$row;
      }
   return $result;

結果を配列に入れてresultに返します。

再帰は、サブクラスをクエリするときに、関数がそれ自体を呼び出すための手法です。getList($row['id']);を呼び出す必要があります。

サブクラスの ID を次のクラスの ID として使用する必要があります。 $row['id'])を持ってくる

この時のコードは

<?php
function getList($pid=0){
$sql="SELECT*FROM deepcate WHERE pid = $pid";
$res = mysql_query($sql);
  $result=array();
   while ($row = mysql_fetch_assoc($res)){       $result[]=$row;      }   return $result;
}
?>

再帰演算は配列を返す必要があるので、参照メソッドを使ってコードを変更します

<?php
include ("conn.php");
function getList($pid=0,&$result=array()){
   $sql="SELECT*FROM deepcate WHERE pid = $pid";
   $res = mysql_query($sql);
   while ($row = mysql_fetch_assoc($res)){
       $result[]=$row;
       getList($row['id'],$result);
   }
   return $result;
}
?>

それでは分類のスタイルを美化していきます

<?php
include ("conn.php");
function getList($pid=0,&$result=array(),$space=0){
   $space=$space+2;
   $sql="SELECT*FROM deepcate WHERE pid = $pid";
   $res = mysql_query($sql);
   while ($row = mysql_fetch_assoc($res)){
       $row['catename']=str_repeat('&nbsp;',$space).'|--|'.$row['catename'];
       $result[]=$row;
       getList($row['id'],$result,$space);
   }
   return $result;
}
$rs=getList();
print_r($rs);
?>

プリントアウトして観察してください。


この章の重要なポイント

  1. 無限レベル分類の再帰的実装は、再帰を使用して親ノードを見つけて家系図を生成することです。

  2. サブクラスと親クラス。

学び続ける
||
<?php include ("conn.php"); function getList($pid=0,&$result=array(),$space=0){ $space=$space+2; $sql="SELECT*FROM deepcate WHERE pid = $pid"; $res = mysql_query($sql); while ($row = mysql_fetch_assoc($res)){ $row['catename']=str_repeat(' ',$space).'|--|'.$row['catename']; $result[]=$row; getList($row['id'],$result,$space); } return $result; } $rs=getList(); print_r($rs); ?>
  • おすすめコース
  • コースウェアのダウンロード
現時点ではコースウェアはダウンロードできません。現在スタッフが整理中です。今後もこのコースにもっと注目してください〜
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!