Trois façons d'implémenter la classification infinie en php

怪我咯
Libérer: 2023-03-13 06:22:01
original
3091 Les gens l'ont consulté

Aujourd'hui, je vais partager avec vous comment apprendre en détail la méthode de classification infinie en php. Les amis qui apprennent PHP peuvent s'y référer.

Il existe environ trois méthodes de classification illimitée en PHP,

1. La base de données effectue une indexation unique en définissant l'ID de classe parent, puis utilise l'appel récursif de la fonction pour obtenir une classification illimitée ;

2. La conception de la base de données est organisée dans un format spécifique, puis utilise MySQL pour interroger la fonction clé : concat. La mise en œuvre du programme est relativement simple ;

3. Le troisième n'est pas bien compris. Il semble que des algorithmes et des structures de données soient utilisés pour l'arrangement.

Aujourd'hui je vais principalement partager la deuxième méthode. J'ai trouvé beaucoup d'informations au début et c'était effectivement difficile à comprendre. Mais j'ai finalement compris, alors j'ai écrit un essai, en espérant que cet article pourra aider tout le monde.

1. Conception de la base de données :  


Le code est le suivant :

-- 
-- Table structure for table `category` 
-- 
CREATE TABLE IF NOT EXISTS `category` ( 
`id` int(11) NOT NULL AUTO_INCREMENT, 
`catpath` varchar(255) DEFAULT NULL, 
`name` varchar(255) DEFAULT NULL, 
PRIMARY KEY (`id`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=11 ; 
-- 
-- Dumping data for table `category` 
-- 
INSERT INTO `category` (`id`, `catpath`, `name`) VALUES 
(1, '0', '网站首页'), 
(2, '0-1', 'Linux OS'), 
(3, '0-1', 'Apache服务器'), 
(4, '0-1', 'MySQL数据库'), 
(5, '0-1', 'PHP脚本语言'), 
(6, '0-1-2', 'Linux 系统教程'), 
(7, '0-1-2', 'Linux 网络技术'), 
(8, '0-1-2', 'Linux 安全基础'), 
(9, '0-1-2-7', 'Linux LAMP'), 
(10, '0-1-3-10', 'apache Server');
Copier après la connexion

Décrivez ici, le symbole de lien de catpath n'est pas fixe, vous pouvez choisir des symboles spéciaux tels que ;
2. Implémentation du code PHP :

Le code est le suivant :

$conn = mysql_connect ( 'localhost', 'root', '' ); 
mysql_select_db ( 'test', $conn ); 
mysql_query ( 'set names UTF8' ); 
$sql = "select id,concat(catpath,'-',id) as abspath,name from category order by abspath"; 
$query = mysql_query ( $sql ); 
while ( $row = mysql_fetch_array ( $query ) ) { 
/** 
* 第一种展示方法 
*/ 
/*$space = str_repeat ( '    ', count ( explode ( '-', $row ['abspath'] ) ) - 1 ); 
echo $space . $row [&#39;name&#39;] . &#39;<br>&#39;;*/ 
/** 
* 第二种展示方法 
*/ 
$space = str_repeat ( &#39;    &#39;, count ( explode ( &#39;-&#39;, $row [&#39;abspath&#39;] ) ) - 1 ); 
$option .= &#39;<option value="&#39; . $row [&#39;id&#39;] . &#39;">&#39; . $space . $row [&#39;name&#39;] . &#39;</option>&#39;; 
} 
echo &#39;<select name="opt">&#39; . $option . &#39;</select>&#39;;
Copier après la connexion

Le rendu ci-dessus :

 🎜>

Il y a quelques points clés à noter ici :

1. La fonction concat est utilisée dans le champ de requête de la base de données. Si vous ne comprenez rien, vous pouvez la rechercher sur Google.
2. La deuxième place utilise principalement str_repeat en php pour définir intelligemment les espaces.
S'il y a des erreurs, veuillez envoyer un e-mail à : chenghuiyong1987@gmail.com ou laisser un message

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!