PHP 開発分類技術は再帰を使...LOGIN

PHP 開発分類技術は再帰を使用して無限分類を実現します (1)

まず、簡単なデータベーステストを作成する必要があります

<?php
$link = mysqli_connect('localhost','username','password','test');
mysqli_set_charset($link, "utf8");
if (!$link) {
  die("连接失败:".mysqli_connect_error());
}
?>

新しいテーブルクラスを作成し、3つのフィールドを設定します

sort id int型。

カテゴリ名タイトルのvarchar型。

カテゴリ pid int 型。

次のようなテーブル:

111.png

アイデア:

カスタム関数 get_str を定義し、親クラス pid = 0 を設定し、SQL ステートメントを使用してそのサブクラスをクエリし、 クエリされたサブクラスを結果の $ に配置します。 ,

はwhileループを使用してサブクラスを生成し、文字列を構築して出力パターンを作成し、カスタム関数get_strを呼び出し、サブクラスのIDをカスタム関数

に渡してクエリを続けます。次のクラス。

<?php
function get_str($id = 0) {
  global $str;
  global $link;    //global 关键词用于访问函数内的全局变量。
  $sql = "select id,title from class where pid= $id";
  $result = mysqli_query($link,$sql);//查询pid的子类的分类
  if($result){//如果有子类
    $str .= '<ul>';
    while ($row = mysqli_fetch_array($result)) { //循环记录集
      $str .= "<li>" . $row['id'] . "--" . $row['title'] . "</li>"; //构建字符串
      get_str($row['id']); //调用get_str(),将记录集中的id参数传入函数中,继续查询下级
    }
    $str .= '</ul>';
  }
  return $str;
}
echo get_str(0);
?>

出力は次のようになります:

112.png

次のセクション
<?php header("content-type:text/html;charset=utf8"); $link = mysqli_connect('localhost','username','password','test'); mysqli_set_charset($link, "utf8"); if (!$link) { die("连接失败:".mysqli_connect_error()); } //递归-返回字符串格式的函数 function get_str($id = 0) { global $str; global $link; //global 关键词用于访问函数内的全局变量。 $sql = "select id,title from class where pid= $id"; $result = mysqli_query($link,$sql);//查询pid的子类的分类 if($result){//如果有子类 $str .= '<ul>'; while ($row = mysqli_fetch_array($result)) { //循环记录集 $str .= "<li>" . $row['id'] . "--" . $row['title'] . "</li>"; //构建字符串 get_str($row['id']); //调用get_str(),将记录集中的id参数传入函数中,继续查询下级 } $str .= '</ul>'; } return $str; } echo get_str(0); ?>
コースウェア