PHP를 사용하여 간단한 기사 라벨링 및 분류 기능을 개발하는 방법
웹사이트 개발 과정에서 기사 라벨링 및 분류 기능은 매우 일반적인 요구 사항입니다. 기사에 태그와 카테고리를 추가하면 사용자는 필요에 따라 기사를 찾아보고 필터링할 수 있습니다. 이 기사에서는 특정 코드 예제를 사용하여 PHP를 사용하여 간단한 기사 태그 및 분류 기능을 개발하는 방법을 소개합니다.
1. 데이터베이스 설계
먼저 기사와 해당 태그 및 분류 정보를 저장할 데이터베이스 테이블을 설계해야 합니다. 기사 테이블(article), 태그 테이블(tags), 카테고리 테이블(categories)의 세 가지 테이블을 디자인할 수 있습니다.
기사 테이블(기사):
tag 테이블 ( 태그):
Categories:
2. 기사에 태그 및 분류 기능 추가
다음으로 기사에 태그 및 분류 기능을 구현해 보겠습니다. 사용자는 기사를 게시할 때 기사의 태그와 카테고리를 선택할 수 있습니다.
먼저 기사를 추가할 페이지를 만듭니다(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>
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. 기사 태그 및 카테고리 표시
마지막으로 기사 태그 및 카테고리 표시 기능을 구현해 보겠습니다. 사용자는 기사 태그나 카테고리를 클릭하여 해당 기사 목록을 볼 수 있습니다.
먼저 기사 목록을 표시하는 페이지를 만듭니다(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>
위 코드에서 먼저 연결합니다. 데이터베이스를 검색한 다음 모든 기사 데이터를 쿼리합니다. 다음으로 루프를 사용하여 각 기사의 제목을 출력하고 해당 기사의 태그와 카테고리를 쿼리합니다. 마지막으로 데이터베이스 연결을 닫습니다.
사용자가 기사 제목을 클릭하면 기사의 세부 내용과 해당 태그 및 카테고리가 표시되어야 합니다.
기사의 세부 정보를 표시하는 페이지(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 중국어 웹사이트의 기타 관련 기사를 참조하세요!