Chắc có
lẽ cũng nhiều bạn muốn biết cách để làm một forum nhiều children forum
hay cây thư mục đa cấp nên minh viết một bài về đệ qui category sử dụng
php & mysql cho các bạn tham khảo.
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="--"){Bây giờ ta ứng dụng đệ qui để làm một category như sau:
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
}
}
Các bạn tạo các file sau:
Run table sql sau:
CODE
CREATE TABLE `multi_category` (Tạo một file index.php
`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
PHP Code
$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());
?>
PHP Code
include "config.php";tiếp theo tạo file add_category.php
?>
Multi Category
PHP Code
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
PHP Code
include "config.php";Sau khi tạo đủ các file trên bạn có thể test thử và xem code dể hiểu thôi.
$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");
?>
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...
http://www.zend.vn/public/lap-trinh/php-mysql/tao-category-menu-da-cap-voi-cau-truc-cay-nested-set-model-/l1l4l100.html
http://www.ttv.vn/Cach-tao-menu-da-cap-trong-php.html
0 comments: