Hướng dẫn dùng like tags trong PHP

  1. Để 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ể:

    # C.N.G @ V.N.O

    # Lấy giá trị tag

    $tags $_POST['tag'];# Insert vào bài viếtmysql_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 Tagforeach ($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($result00);
       }
       else
       {
            
    mysql_query("INSERT INTO `tag` (name) VALUES ('".$tag."')");
            
    $idTag mysql_insert_id();
       }
    # Insert dữ liệu vào table Linkmysql_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: 7 Tháng ba 2017

  2. Để truy vấn bài viết theo tag các bạn chạy code sau với biến $tag được lấy khi chúng ta bấm vào tag.

    Lưu ý:

    Mình viết nhưng chưa test thử code này, các bạn chạy thử ok hoặc gặp vấn đề gì thì báo ở dưới comment cho mình biết để mình fix nhé.

    # C.N.G @ V.N.O$tag $_GET['tag'];$qr_tag mysql_query("
        SELECT DISTINCT * FROM `topic` JOIN `link` JOIN `tag`
        ON topic.id = link.topic_id
        AND link.tag_id = tag.id
        WHERE tag.name = '"
    .$tag."'
    "
    );

    while (

    $row mysql_fetch_array($qr_tagMYSQL_NUM)) {# Show kết quả là các bài viết có chứa tagecho "ID bài viết: ".$row['id'];

    }

    Chỉnh sửa cuối: 29 Tháng mười 2017

  3. Để thêm mới hoặc xóa, sửa tag các bạn làm như sau:

    Với $topic_id là id bài viết sửa tag, $tags là danh sách tag mới cần update, cách nhau bởi dấu phẩy.

    # C.N.G @ V.N.O$topic_id intval($_POST['tp_id']);$tags trim($_POST['tp_tag']);

    if(

    is_numeric($topic_id)) {# Xóa tag cũ để cập nhậtmysql_query("DELETE FROM `link` WHERE topic_id = '".$topic_id."'");# Update tag ở bài viếtmysql_query("UPDATE `topic` SET tag = '".$tags."' WHERE id = '".$topic_id."'");# Cắt chuổi tags đưa vào mảng$arrTag explode(','$tags);# Duyệt từng phần tử của Tagforeach ($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($result00);
                   }
                   else
                   {
                    if(
    strlen($tag) > 3) {
                           
    mysql_query("INSERT INTO `tag` (name) VALUES ('".$tag."')");
                           
    $idTag mysql_insert_id();
                    }
                   }
    mysql_query("INSERT INTO `link` (topic_id, tag_id) VALUES ('".$topic_id."', '".$idTag."')");

                  }

      }

    Chỉnh sửa cuối: 7 Tháng tám 2016

  4. Để sử dụng các hiệu ứng ajax khi thêm, sửa xóa tag các bạn có thể tự viết các thư viện javascript theo ý mình hoặc sử dụng thư viện jQuery có sẵn: Taggle.js

    Thư viện này cung cấp cho bạn các chức năng sau:

    Nhấn Enter sẽ tự động hoàn thành tag 1 để nhập thêm các tag tiếp theo.

    Tự động kiểm tra các tags trùng nhau.

    Đưa ra từ gợi ý khi gõ tag - chỉ sử dụng được với từ điển tiếng anh.

    Chỉ cho phép nhập các tag được chỉ định sẵn.

    Cho phép nhập mọi từ khóa trừ một số tag không cho phép.

    Các bạn vào đây xem demo: Demo Taggle.js

    Để sử dụng các bạn thêm thư viện jQuery và Taggle.js vào web của các bạn.

    Download jQuery phiên bản mới nhất: jQuery

    
    

    Tạo input để nhập, xóa tag với tag1, tag2, tag3, tag4 query từ CSDL của bạn nếu bài viết đã có tag hoặc để trống nếu thêm mới.

    Chỉnh sửa cuối: 16 Tháng bảy 2016

  • lập trình
  • lập trình php
  • lập trình web
  • php
  • tự học php

Hướng dẫn dùng like tags trong PHP

Hướng dẫn dùng like tags trong PHP

Hướng dẫn dùng like tags trong PHP