Menuđacấp-đệqui function
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 đacấ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=" "){
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."<br>";
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:
CODE
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
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());
?>
Tạo một file index.php
PHP Code
<?
include "config.php";
?>
<html>
<head>
<title>Multi Category</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<LINK href='style.css' type='text/css' rel=stylesheet>
<script language="Javascript" </head>
<body>
<?include "add_category.php";?>
</body>
</html>
tiếp theo tạo file add_category.php
PHP Code
<?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("<option value='".$category["category_id"]."'>".$insert_text.
$category["name"]."</option>");
show_categories($category["category_id"],$insert_text." ");
}
return true;
}
function selectCtrl ($name, $class)
{
global $db;
print "<SELECT name='". $name. "' class='". $class. "'>\n";
print "<option value='0'>Main category</option>";
show_categories();
print "</SELECT>";
}
?>
<?
echo "<form name='add_category' method='post'
action='add_category_action.php'>
<table width='50%' align='center'>
<tr>
<td colspan='2'><div align='center'><strong>Multi category </strong></div></td>
</tr>
<tr>
<td>Lang type: </td>
<td>
<span>
<input type=radio name='switcher' value='OFF' checked
onfocus='setTypingMode(0)'>Off
<input type=radio name='switcher' value='TELEX'
onfocus='setTypingMode(1)'>Telex
<input type=radio name='switcher' value='vnVni'
onfocus='setTypingMode(2)'>VNI
<input type=radio name='switcher' value='vnVni'
onfocus='setTypingMode(3)'>VIQR
</span>
</td>
</tr>
<tr>
<td width='36%'>Name:</td>
<td width='64%'>
<input name='name' type='text' size='35' maxlength='100' class='forFormDim'
onkeyup='telexingVietUC(this,event);'></td>
</tr>
<tr>
<td>Add link to name: </td>
<td><input name='link' type='text' size='35' maxlength='100'
class='forFormDim'></td>
</tr>
<tr>
<td> Parent Category:</td>
<td>";
selectCtrl('parent', 'forFormDim');
print"</td>
</tr>";
echo "<tr>
<td> </td>
<td><input name='Submit' type='submit' class='forFormButton' value='Add
category'></td>
</tr>
</table>
</form>";
?>
Tạo file add_category_action.php
PHP Code
<?
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
. Menu đa cấp - đệ qui function
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.
<title>Multi Category</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<LINK href='style.css'