Trang Nhất
|
Forums
|
Site Map
|
Góp Ý
|
Liên Hệ
Thứ Sáu, 05.12.2008, 01:56am (GMT+7)
 
Việt Nam sẽ sớm đưa IPv6 vào sử dụng ; Một “đại gia” về thông tin trở lại thị trường báo điện tử ; 10 công cụ biên tập ảnh online khi không có Photoshop ; Việt Nam đứng thứ 5 về tỷ lệ tăng PC ma ; Những công nghệ tiêu biểu nhất 2008
[Nâng Cao]
 
Tổng Hợp  
  Tin Tức CNTT
  Quảng Bá Website
  Quảng Cáo Trực Tuyến
  Làm Chủ Website
  Thương Mại Điện Tử
  Bảo Mật
  Database
  Hacker
  Lập Trình
  Đồ Họa
  Website Của Tôi
  Chơi Blog
  Download
  Ebook
  Forums
  Danh Bạ Web
   Tiêu Điểm
AJAX - tuong lai cho ?ng d?ng Web
 
Lập Trình
 
Category đa cấp - đệ qui function
Thứ Hai, 04.06.2007, 02:48pm (GMT+7)

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="--"){
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" src="vietuni.js"></script>
</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...

Author: ChiLinhNet@yahoo.com
Theo PHP Vietnam

    In trang        Gửi bạn bè        Đầu Trang


Các Tin Khác:
Bước tiến vượt bậc của PHP 5 (29.05.2007)
Tạo menu chuyên nghiệp cho website (29.05.2007)
10 công cụ miễn phí tốt nhất cho .NET (29.05.2007)
Nhạc nền ngẫu nhiên (26.05.2007)
Thiết kế trang Web có tăng cường tính năng Java (26.05.2007)
Đặt Bộ đếm trên trang Web (26.05.2007)
Active X - Công cụ tuyệt vời để tạo website đa phương tiện (22.05.2007)
Thuộc tính của .NET (20.05.2007)
Vấn đề an ninh - bảo mật trong Nukeviet Portal (20.05.2007)
Góp ý về việc lập trình giao diện trong VB (20.05.2007)
 
  Đẹp + Tech



[Lên Đầu Trang]