Maison  >  Article  >  développement back-end  >  Trois façons d'implémenter la classification infinie en php

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

怪我咯
怪我咯original
2017-07-07 09:54:123130parcourir

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');

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;;

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!

Déclaration:
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