- Xu
- 771,710,163
Bài viết: 4136 



Để tạo hệ thống tag cho bài viết trong trang web của bạn bạn cần chuẩn bị 3 table trong CSDL:
Table Topic chứa bài viết, tên tag
Topic [id, tag]
Table Tag chứa tag toàn trang web
Tag [id, name]
Table Link dùng để liên kết 2 table trên tránh trường hợp data lớn query rất tốn thời gian. Bài viết thứ i có quan hệ với những tag nào.
Link [topic_id, tag_id]
Giải thuật cơ bản:
Khi người dùng tạo bài viết. Lấy id bài viết vừa tạo lưu vào biến $idTopic và cho lưu tag vào table Topic và lưu các tag đó vào 1 mảng.
Dùng foreach duyệt các phần tử trong mảng và đối chiếu với table Tag. Nếu tồn tại thì lấy ID của nó ra và lưu vào biến $idTag nếu không tồn tại thì insert vào và lấy ID vừa thêm vào lưu vào biến $idTag.
Có được $idTopic và $idTag, bạn insert nó vào table Link
Code cụ thể:
Demo website sử dụng code tag này - bấm vào 1 bài viết bất kỳ và xem hệ thống tag:
Hài Tết Mới Nhất
Table Topic chứa bài viết, tên tag
Topic [id, tag]
Table Tag chứa tag toàn trang web
Tag [id, name]
Table Link dùng để liên kết 2 table trên tránh trường hợp data lớn query rất tốn thời gian. Bài viết thứ i có quan hệ với những tag nào.
Link [topic_id, tag_id]
Giải thuật cơ bản:
Khi người dùng tạo bài viết. Lấy id bài viết vừa tạo lưu vào biến $idTopic và cho lưu tag vào table Topic và lưu các tag đó vào 1 mảng.
Dùng foreach duyệt các phần tử trong mảng và đối chiếu với table Tag. Nếu tồn tại thì lấy ID của nó ra và lưu vào biến $idTag nếu không tồn tại thì insert vào và lấy ID vừa thêm vào lưu vào biến $idTag.
Có được $idTopic và $idTag, bạn insert nó vào table Link
Code cụ thể:
PHP:
# C.N.G @ V.N.O
# Lấy giá trị tag
$tags = $_POST['tag'];
# Insert vào bài viết
mysql_query("INSERT INTO `topic` (tag) VAULES ('".$tags."')");
# Lấy id của bài viết vừa mới thêm vào
$idTopic = mysql_insert_id();
# Cắt chuỗi tags đưa vào mảng
$arrTag = explode(',', $tags);
# Duyệt từng phần tử của Tag
foreach ($arrTag as $tag)
{
$tag = trim($tag);
# Lấy id của tag có tên là $tag, nếu ko có thì thêm mới
$result = mysql_query("SELECT id FROM `tag` WHERE name = '".$tag."' LIMIT 0,1");
if (mysql_num_rows($result) > 0)
{
$idTag = mysql_result($result, 0, 0);
}
else
{
mysql_query("INSERT INTO `tag` (name) VALUES ('".$tag."')");
$idTag = mysql_insert_id();
}
# Insert dữ liệu vào table Link
mysql_query("INSERT INTO `link` VALUES ('".$idTopic."', '".$idTag."')");
}
Demo website sử dụng code tag này - bấm vào 1 bài viết bất kỳ và xem hệ thống tag:
Hài Tết Mới Nhất
Chỉnh sửa cuối: