>  기사  >  백엔드 개발  >  PHP를 사용하여 간단한 기사 라벨링 및 분류 기능을 개발하는 방법

PHP를 사용하여 간단한 기사 라벨링 및 분류 기능을 개발하는 방법

WBOY
WBOY원래의
2023-09-20 17:15:11789검색

PHP를 사용하여 간단한 기사 라벨링 및 분류 기능을 개발하는 방법

PHP를 사용하여 간단한 기사 라벨링 및 분류 기능을 개발하는 방법

웹사이트 개발 과정에서 기사 라벨링 및 분류 기능은 매우 일반적인 요구 사항입니다. 기사에 태그와 카테고리를 추가하면 사용자는 필요에 따라 기사를 찾아보고 필터링할 수 있습니다. 이 기사에서는 특정 코드 예제를 사용하여 PHP를 사용하여 간단한 기사 태그 및 분류 기능을 개발하는 방법을 소개합니다.

1. 데이터베이스 설계

먼저 기사와 해당 태그 및 분류 정보를 저장할 데이터베이스 테이블을 설계해야 합니다. 기사 테이블(article), 태그 테이블(tags), 카테고리 테이블(categories)의 세 가지 테이블을 디자인할 수 있습니다.

  1. 기사 테이블(기사):

    • id: 기사 ID(기본 키)
    • title: 기사 제목
    • content: 기사 내용
    • category_id: 카테고리 ID(외래 키)
  2. tag 테이블 ( 태그):

    • id: 태그 ID(기본 키)
    • name: 태그 이름
  3. Categories:

    • id: 카테고리 ID(기본 키)
    • name: 카테고리 이름

2. 기사에 태그 및 분류 기능 추가

다음으로 기사에 태그 및 분류 기능을 구현해 보겠습니다. 사용자는 기사를 게시할 때 기사의 태그와 카테고리를 선택할 수 있습니다.

  1. 기사 페이지 추가

먼저 기사를 추가할 페이지를 만듭니다(add_article.php). 이 페이지에는 사용자가 기사의 제목, 내용, 태그 및 카테고리를 입력할 수 있는 양식이 포함되어 있습니다.

<form action="add_article.php" method="POST">
    <input type="text" name="title" placeholder="文章标题"><br><br>
    <textarea name="content" placeholder="文章内容"></textarea><br><br>
    <input type="text" name="tags" placeholder="标签(多个标签用逗号分隔)"><br><br>
    <select name="category">
        <option value="">选择分类</option>
        <!-- 根据分类表动态生成选项 -->
    </select><br><br>
    <input type="submit" value="发布文章">
</form>
  1. 처리 중 기사 제출

add_article.php 파일에서 사용자가 제출한 양식 데이터를 처리하고 기사의 제목, 내용, 태그 및 카테고리를 데이터베이스에 저장해야 합니다.

<?php
// 连接数据库
$conn = mysqli_connect("localhost", "username", "password", "database");

// 处理提交的数据
$title = $_POST['title'];
$content = $_POST['content'];
$tags = $_POST['tags'];
$category = $_POST['category'];

// 插入文章数据
$result = mysqli_query($conn, "INSERT INTO article (title, content, category_id) VALUES ('$title', '$content', '$category')");

// 获取插入文章的ID
$articleId = mysqli_insert_id($conn);

// 处理标签
$tagArray = explode(",", $tags);
foreach ($tagArray as $tag) {
    $tag = trim($tag);
    // 查询标签是否存在
    $tagResult = mysqli_query($conn, "SELECT id FROM tags WHERE name = '$tag'");
    if (mysqli_num_rows($tagResult) == 0) {
        // 标签不存在,插入新的标签
        mysqli_query($conn, "INSERT INTO tags (name) VALUES ('$tag')");
        // 获取插入标签的ID
        $tagId = mysqli_insert_id($conn);
    } else {
        $tagId = mysqli_fetch_assoc($tagResult)['id'];
    }
    // 插入标签和文章的关联关系
    mysqli_query($conn, "INSERT INTO article_tags (article_id, tag_id) VALUES ($articleId, $tagId)");
}

// 关闭数据库连接
mysqli_close($conn);

// 跳转到文章详情页
header("Location: article.php?id=$articleId");
exit;
?>

위 코드에서 먼저 데이터베이스에 연결한 다음 사용자가 제출한 기사 데이터를 가져옵니다. 다음으로 기사의 제목, 내용, 카테고리를 기사 테이블에 삽입합니다. 그런 다음 레이블 필드를 쉼표로 배열로 분할하고 배열의 각 레이블을 반복합니다. 각 태그에 대해 먼저 태그가 데이터베이스에 이미 존재하는지 여부를 쿼리합니다. 존재하지 않으면 새 태그를 삽입하고 태그의 ID를 얻습니다. 마지막으로 기사 ID와 태그 ID를 기사 태그 테이블에 삽입합니다.

3. 기사 태그 및 카테고리 표시

마지막으로 기사 태그 및 카테고리 표시 기능을 구현해 보겠습니다. 사용자는 기사 태그나 카테고리를 클릭하여 해당 기사 목록을 볼 수 있습니다.

  1. 기사 목록 페이지 표시

먼저 기사 목록을 표시하는 페이지를 만듭니다(articles.php). 이 페이지에는 모든 기사 제목과 해당 태그 및 카테고리가 포함됩니다.

<ul>
    <?php
    // 连接数据库
    $conn = mysqli_connect("localhost", "username", "password", "database");

    // 查询文章数据
    $result = mysqli_query($conn, "SELECT * FROM article");

    // 输出文章列表
    while ($row = mysqli_fetch_assoc($result)) {
        echo "<li><a href='article.php?id=".$row['id']."'>".$row['title']."</a>";
        
        // 查询文章的标签
        echo "<ul>";
        $tagResult = mysqli_query($conn, "SELECT t.name FROM tags t INNER JOIN article_tags at ON t.id = at.tag_id WHERE at.article_id = ".$row['id']);
        while ($tagRow = mysqli_fetch_assoc($tagResult)) {
            echo "<li>".$tagRow['name']."</li>";
        }
        echo "</ul>";

        // 查询文章的分类
        echo "<ul>";
        $categoryResult = mysqli_query($conn, "SELECT c.name FROM categories c WHERE c.id = ".$row['category_id']);
        while ($categoryRow = mysqli_fetch_assoc($categoryResult)) {
            echo "<li>".$categoryRow['name']."</li>";
        }
        echo "</ul>";
        
        echo "</li>";
    }

    // 关闭数据库连接
    mysqli_close($conn);
    ?>
</ul>

위 코드에서 먼저 연결합니다. 데이터베이스를 검색한 다음 모든 기사 데이터를 쿼리합니다. 다음으로 루프를 사용하여 각 기사의 제목을 출력하고 해당 기사의 태그와 카테고리를 쿼리합니다. 마지막으로 데이터베이스 연결을 닫습니다.

  1. 기사 세부정보 표시

사용자가 기사 제목을 클릭하면 기사의 세부 내용과 해당 태그 및 카테고리가 표시되어야 합니다.

기사의 세부 정보를 표시하는 페이지(article.php)를 만듭니다. 페이지에는 기사의 제목, 내용, 태그 및 카테고리가 포함됩니다.

<?php
// 获取文章ID
$articleId = $_GET['id'];

// 连接数据库
$conn = mysqli_connect("localhost", "username", "password", "database");

// 查询文章数据
$articleResult = mysqli_query($conn, "SELECT * FROM article WHERE id = $articleId");
$articleRow = mysqli_fetch_assoc($articleResult);

// 查询文章的标签
$tagsResult = mysqli_query($conn, "SELECT t.name FROM tags t INNER JOIN article_tags at ON t.id = at.tag_id WHERE at.article_id = $articleId");

// 查询文章的分类
$categoryResult = mysqli_query($conn, "SELECT c.name FROM categories c WHERE c.id = ".$articleRow['category_id']);
$categoryRow = mysqli_fetch_assoc($categoryResult);

// 关闭数据库连接
mysqli_close($conn);
?>

<h1><?php echo $articleRow['title']; ?></h1>
<p><?php echo $articleRow['content']; ?></p>

<h3>标签</h3>
<ul>
    <?php
    while ($tagRow = mysqli_fetch_assoc($tagsResult)) {
        echo "<li>".$tagRow['name']."</li>";
    }
    ?>
</ul>

<h3>分类</h3>
<ul>
    <li><?php echo $categoryRow['name']; ?></li>
</ul>

위 코드에서 먼저 기사의 ID를 가져오고 데이터베이스에 연결합니다. 그런 다음 기사 데이터, 태그, 분류 데이터를 쿼리하여 페이지에 출력합니다. 마지막으로 데이터베이스 연결을 닫습니다.

위 단계를 통해 PHP를 이용한 간단한 기사 라벨링 및 분류 기능 개발을 실현했습니다. 사용자는 기사를 게시할 때 태그와 카테고리를 선택할 수 있으며, 태그와 카테고리를 클릭하여 해당 기사 목록과 세부정보를 찾아볼 수 있습니다. 이 기사가 도움이 되기를 바랍니다!

위 내용은 PHP를 사용하여 간단한 기사 라벨링 및 분류 기능을 개발하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.