ホームページ  >  記事  >  バックエンド開発  >  PHP を使用して簡単な記事のラベル付けおよび分類機能を開発する方法

PHP を使用して簡単な記事のラベル付けおよび分類機能を開発する方法

WBOY
WBOYオリジナル
2023-09-20 17:15:11877ブラウズ

PHP を使用して簡単な記事のラベル付けおよび分類機能を開発する方法

PHP を使用して簡単な記事のラベル付けおよび分類機能を開発する方法

Web サイト開発のプロセスでは、記事のラベル付けおよび分類機能は非常に一般的な要件です。記事にタグやカテゴリを追加することで、ユーザーは必要に応じて記事を閲覧したりフィルタリングしたりできます。この記事では、PHP を使用して簡単な記事タグと分類機能を開発する方法を、具体的なコード例を通して紹介します。

1. データベース設計

まず、記事と、対応するタグおよび分類情報を保存するデータベース テーブルを設計する必要があります。記事テーブル (記事)、タグ テーブル (タグ)、カテゴリ テーブル (カテゴリ) の 3 つのテーブルを設計できます。

  1. 記事テーブル(記事):

    • id: 記事ID(主キー)
    • title: 記事タイトル
    • content: 記事の内容
    • category_id: カテゴリ ID (外部キー)
  2. ## タグテーブル (タグ):

      id:タグID(主キー)
    • name: タグ名
  3. カテゴリテーブル(カテゴリ):

      id: カテゴリID (主キー)
    • name: カテゴリ名
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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。