Cách viết cũng rất đơn giản thôi: sử dụng một function gọi lại chính nó.
vi dụ đơn giản chỉ với 100 lần gọi lại như sau:
function category($x="0",$text="--"){
for($x=1;$x<=100;$x++) // sau mỗi lần lặp lại nâng biến $x lên một giá trị
{
echo $x.$text."
";
category($x,$text."--"); // function category được gọi lại
}
}
Bây giờ ta ứng dụng đệ qui để làm một category như sau:
Các bạn tạo các file sau:
Run table sql sau:
CREATE TABLE `multi_category` (
`category_id` smallint(5) unsigned NOT NULL auto_increment,
`parent_id` smallint(5) unsigned NOT NULL default '0',
`name` varchar(100) NOT NULL default '',
`link` varchar(100) NOT NULL default '',
`date` date NOT NULL default '0000-00-00',
PRIMARY KEY (`category_id`)
) TYPE=MyISAM AUTO_INCREMENT=66 ;
Tạo một file config.php
$dbhost="localhost";
$dbname="multi_category";
$dbuser="root";
$dbpass="";
$table="multi_category";
$date=date("YmdHis");
$db=mysql_connect("$dbhost","$dbuser","$dbpass") or die("Die connect: ".mysql_error());
mysql_select_db("$dbname") or die("Die select database: ".mysql_error());
?>Tạo một file index.php
include "config.php";
?>
Multi Category
tiếp theo tạo file add_category.php
function show_categories($parent_id="0", $insert_text="--")
{
global $db;
if (! $categories = mysql_query("SELECT * FROM multi_category WHERE parent_id=".$parent_id." ORDER BY parent_id", $db))
{
die ("cannot query");
}
while ($category=mysql_fetch_array($categories, MYSQL_ASSOC))
{
echo("".$insert_text.$category["name"]."");
show_categories($category["category_id"],$insert_text."--");
}
return true;
}
function selectCtrl ($name, $class)
{
global $db;
print " Main category ";
}
?>
echo "";
echo "
?>
";
Tạo file add_category_action.php
include "config.php";
$name = $HTTP_POST_VARS['name'];
$parent = $HTTP_POST_VARS['parent'];
$link = $HTTP_POST_VARS['link'];
$date = date ("d-m-Y");//$HTTP_POST_VARS['date'];
$query="insert into $table (name, parent_id, link, date) values ('$name', '$parent', '$link', '$date')";
$result= mysql_query($query) or die("Die query: ".mysql_error());
//$n= mysql_fetch_array($result);
header("Location: index.php");
?>
Sau khi tạo đủ các file trên bạn có thể test thử và xem code dể hiểu thôi.
Các bạn để ý file add_category.php function đệ qui được viết trong đó, ở đây chúng ta chỉ cần sử dụng 1 table sql với 2 field đủ để thể hiện multi category, có thể dùng cái này cho forum hoặc menu nhiều cấp..vv...


Section Widget
Categories Widget (Show All)
Recent Articles