Schéma de mise en œuvre
Liste déroulante classification de niveau infini
<?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(); 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); ?>
L'exemple est une classification de niveau infini Ci-dessous, nous expliquerons le code en sections.
Explication du code :
<?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(); ?>
function getList($pid=0){ } ?>
Définissez d'abord une fonction, avec pid comme ID de classe parent, défini comme 0.
$sql="SELECT*FROM deepcate WHERE pid = $pid";
Utilisez l'instruction SQL pour interroger la sous-classe de la surface de sélection pid.
$res = mysql_query($sql); //执行sql语句 $result=array(); while ($row = mysql_fetch_assoc($res)){ $result[]=$row; } return $result;
Mettez le résultat dans le tableau et renvoyez-le au résultat.
La récursion est la technique permettant à la fonction de s'appeler elle-même. Lors de l'interrogation de la sous-classe, nous devons appeler getList($row['id']);
L'ID du. la sous-classe doit être Comme ID de niveau suivant, nous devons entrer $row['id'])
Le code à ce moment est
<?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; } ?>
Les opérations récursives doivent renvoyer un tableau, nous utilisons la méthode des références, apportons des modifications au code
<?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; } ?>
Ensuite, embellissons le style de la classification
<?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); ?>
Imprimez-le pour observation.
Les points clés de ce chapitre
La mise en œuvre récursive de la classification à niveau infini consiste à utiliser la récursivité pour trouver le nœud parent et générer un arbre généalogique.
Sous-classe et classe parent.