PHP を使用して簡単な記事のラベル付けおよび分類機能を開発する方法
Web サイト開発のプロセスでは、記事のラベル付けおよび分類機能は非常に一般的な要件です。記事にタグやカテゴリを追加することで、ユーザーは必要に応じて記事を閲覧したりフィルタリングしたりできます。この記事では、PHP を使用して簡単な記事タグと分類機能を開発する方法を、具体的なコード例を通して紹介します。
1. データベース設計
まず、記事と、対応するタグおよび分類情報を保存するデータベース テーブルを設計する必要があります。記事テーブル (記事)、タグ テーブル (タグ)、カテゴリ テーブル (カテゴリ) の 3 つのテーブルを設計できます。
記事テーブル(記事):
<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>
<?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. 記事のタグとカテゴリを表示する最後に、記事のタグとカテゴリを表示する機能を実装しましょう。ユーザーは記事タグまたはカテゴリをクリックして、対応する記事リストを表示できます。
<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>上記のコードでは、まずデータベースに接続し、次にすべての記事データをクエリします。次に、ループを使用して各記事のタイトルを出力し、対応する記事のタグとカテゴリをクエリします。最後に、データベース接続を閉じます。
<?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 サイトの他の関連記事を参照してください。