백엔드 개발 PHP 튜토리얼 PHP는 지식 질문과 답변 웹사이트에 태그 클라우드와 주제 집계 기능을 구현합니다.

PHP는 지식 질문과 답변 웹사이트에 태그 클라우드와 주제 집계 기능을 구현합니다.

Jul 01, 2023 pm 10:03 PM
태그 클라우드 주제 집계 PHP 구현

PHP는 지식질문답 사이트에서 태그 클라우드와 주제 집계 기능을 구현합니다

지식 질문답변 웹사이트에서는 태그 클라우드와 주제 집계 기능이 두 가지 중요한 기능입니다. 태그 클라우드는 사용자가 웹사이트의 인기 주제와 공통 태그를 빠르게 이해하도록 도와줌으로써 사용자가 관련 질문과 답변을 더 쉽게 찾아보고 검색할 수 있도록 해줍니다. 주제 집계를 통해 동일한 태그로 질문과 답변을 그룹화할 수 있으므로 사용자가 보다 편리하게 보고 토론할 수 있습니다. 아래에서는 PHP를 사용하여 이 두 가지 기능을 구현하겠습니다.

먼저 질문, 답변, 태그 데이터를 저장할 데이터베이스를 만들어야 합니다. 질문, 답변, 태그라는 세 개의 테이블이 있는 "qa"라는 데이터베이스를 만들 수 있습니다.

질문 테이블의 구조는 다음과 같습니다.

CREATE TABLE `questions` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `title` varchar(255) DEFAULT '',
  `content` text,
  `date` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
로그인 후 복사

답변 테이블은 다음과 같습니다.

CREATE TABLE `answers` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `question_id` int(11) DEFAULT NULL,
  `content` text,
  `date` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
로그인 후 복사

tags 테이블은 다음과 같습니다.

CREATE TABLE `tags` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `title` varchar(255) DEFAULT '',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
로그인 후 복사

다음으로 질문 페이지와 답변 페이지에 태그 선택 상자를 추가해야 합니다. 지식 질문 및 답변 웹 사이트를 만들고 사용자가 선택한 태그를 질문 또는 답변과 연결합니다.

<!-- 提问页面 -->
<form action="post_question.php" method="post">
  <label for="title">问题标题:</label>
  <input type="text" name="title" id="title"><br>

  <label for="content">问题内容:</label>
  <textarea name="content" id="content"></textarea><br>

  <label for="tags">标签:</label>
  <select name="tags[]" id="tags" multiple>
    <option value="php">PHP</option>
    <option value="javascript">JavaScript</option>
    <option value="html">HTML</option>
    <!-- 其他标签选项 -->
  </select><br>

  <input type="submit" value="提交问题">
</form>

<!-- 回答页面 -->
<form action="post_answer.php" method="post">
  <label for="content">回答内容:</label>
  <textarea name="content" id="content"></textarea><br>

  <label for="tags">标签:</label>
  <select name="tags[]" id="tags" multiple>
    <option value="php">PHP</option>
    <option value="javascript">JavaScript</option>
    <option value="html">HTML</option>
    <!-- 其他标签选项 -->
  </select><br>

  <input type="submit" value="提交回答">
</form>
로그인 후 복사

그런 다음 질문 또는 답변과 관련된 태그 데이터를 백그라운드 질문 제출 핸들러(post_question.php) 및 답변 제출 핸들러(post_answer.php)의 데이터베이스에 저장해야 합니다.

// post_question.php
// 获取用户提交的问题数据
$title = $_POST['title'];
$content = $_POST['content'];
$tags = $_POST['tags'];

// 插入问题数据到 questions 表中
// 获取最后插入的问题的id
$question_id = mysqli_insert_id($conn);

// 插入标签数据到 tags 表中
foreach ($tags as $tag) {
  $sql = "INSERT INTO tags (title) VALUES ('$tag')";
  mysqli_query($conn, $sql);
  
  // 获取最后插入的标签的id
  $tag_id = mysqli_insert_id($conn);
  
  // 插入问题和标签的关联到 question_tag 表中
  $sql = "INSERT INTO question_tag (question_id, tag_id) VALUES ($question_id, $tag_id)";
  mysqli_query($conn, $sql);
}

// post_answer.php
// 获取用户提交的回答数据
$content = $_POST['content'];
$tags = $_POST['tags'];

// 插入回答数据到 answers 表中
// 获取最后插入的回答的id
$answer_id = mysqli_insert_id($conn);

// 插入标签数据到 tags 表中
foreach ($tags as $tag) {
  $sql = "INSERT INTO tags (title) VALUES ('$tag')";
  mysqli_query($conn, $sql);
  
  // 获取最后插入的标签的id
  $tag_id = mysqli_insert_id($conn);
  
  // 插入回答和标签的关联到 answer_tag 表中
  $sql = "INSERT INTO answer_tag (answer_id, tag_id) VALUES ($answer_id, $tag_id)";
  mysqli_query($conn, $sql);
}
로그인 후 복사

이제 사용자가 선택한 태그를 질문 및 답변과 성공적으로 연결했습니다. 다음으로는 태그 클라우드와 주제 집계 기능을 구현하겠습니다.

먼저 모든 태그와 태그 발생 횟수를 가져오는 PHP 함수를 작성해야 합니다.

function getTagsCloud() {
  global $conn;
  
  // 查询所有标签及其出现次数
  $sql = "SELECT title, COUNT(*) AS count FROM tags GROUP BY title";
  $result = mysqli_query($conn, $sql);
  
  $tagsCloud = array();
  while ($row = mysqli_fetch_assoc($result)) {
    $tagsCloud[$row['title']] = $row['count'];
  }
  
  return $tagsCloud;
}
로그인 후 복사

그런 다음 프런트 엔드 페이지에서 이 기능을 사용하여 태그 클라우드를 표시할 수 있습니다.

<?php
// 获取标签云数据
$tagsCloud = getTagsCloud();
?>

<!-- 标签云 -->
<div class="tag-cloud">
  <?php foreach ($tagsCloud as $tag => $count): ?>
    <a href="search.php?tag=<?php echo $tag; ?>"><?php echo $tag; ?></a>
  <?php endforeach; ?>
</div>
로그인 후 복사

드디어 주제 집계 기능, 즉 태그를 기반으로 관련 질문과 답변을 쿼리하는 기능을 구현할 수 있습니다.

function getQuestionsByTag($tag) {
  global $conn;
  
  // 根据标签获取问题
  $sql = "SELECT q.id, q.title, q.date, COUNT(*) AS answersCount 
          FROM questions q 
          INNER JOIN question_tag qt ON q.id = qt.question_id 
          INNER JOIN tags t ON t.id = qt.tag_id 
          WHERE t.title = '$tag' 
          GROUP BY q.id";
  $result = mysqli_query($conn, $sql);
  
  $questions = array();
  while ($row = mysqli_fetch_assoc($result)) {
    $questions[] = $row;
  }
  
  return $questions;
}

function getAnswersByTag($tag) {
  global $conn;
  
  // 根据标签获取回答
  $sql = "SELECT a.id, a.content, a.date, q.title 
          FROM answers a 
          INNER JOIN answer_tag at ON a.id = at.answer_id 
          INNER JOIN tags t ON t.id = at.tag_id 
          INNER JOIN questions q ON q.id = a.question_id 
          WHERE t.title = '$tag'";
  $result = mysqli_query($conn, $sql);
  
  $answers = array();
  while ($row = mysqli_fetch_assoc($result)) {
    $answers[] = $row;
  }
  
  return $answers;
}
로그인 후 복사

주제 세부정보 페이지에서 위 두 가지 기능을 사용하여 관련 질문과 답변을 표시할 수 있습니다.

<?php
// 获取标签名称
$tag = $_GET['tag'];

// 获取话题相关的问题和回答数据
$questions = getQuestionsByTag($tag);
$answers = getAnswersByTag($tag);
?>

<!-- 话题相关的问题 -->
<?php foreach ($questions as $question): ?>
  <div class="question">
    <h3><?php echo $question['title']; ?></h3>
    <p>回答数量: <?php echo $question['answersCount']; ?></p>
    <!-- 其他问题信息展示 -->
  </div>
<?php endforeach; ?>

<!-- 话题相关的回答 -->
<?php foreach ($answers as $answer): ?>
  <div class="answer">
    <h4><?php echo $answer['title']; ?></h4>
    <p><?php echo $answer['content']; ?></p>
    <!-- 其他回答信息展示 -->
  </div>
<?php endforeach; ?>
로그인 후 복사

위 코드 예시를 통해 지식 질의응답 사이트에 태그 클라우드와 주제 집계 기능을 성공적으로 구현했습니다. 사용자는 핫 토픽과 관련 질문과 답변을 쉽게 탐색할 수 있습니다. 동시에 독자가 코드 구현 아이디어를 더 잘 이해할 수 있도록 해당 데이터베이스 작업 예제도 제공합니다. 이 글이 도움이 필요한 독자들에게 도움이 되기를 바랍니다.

위 내용은 PHP는 지식 질문과 답변 웹사이트에 태그 클라우드와 주제 집계 기능을 구현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

HTML, CSS, jQuery를 사용하여 반응형 태그 클라우드를 만드는 방법 HTML, CSS, jQuery를 사용하여 반응형 태그 클라우드를 만드는 방법 Oct 27, 2023 am 10:46 AM

HTML, CSS 및 jQuery를 사용하여 반응형 태그 클라우드를 만드는 방법 태그 클라우드는 다양한 키워드나 태그를 표시하는 데 사용되는 일반적인 웹 요소입니다. 일반적으로 다양한 글꼴 크기나 색상으로 키워드의 중요성을 표시합니다. 이 기사에서는 HTML, CSS 및 jQuery를 사용하여 반응형 태그 클라우드를 만드는 방법을 소개하고 구체적인 코드 예제를 제공합니다. HTML 구조 생성 먼저 HTML에서 태그 클라우드의 기본 구조를 생성해야 합니다. 순서가 지정되지 않은 목록을 사용하여 태그를 나타낼 수 있습니다.

CSS를 사용하여 태그 클라우드 효과를 만드는 방법 CSS를 사용하여 태그 클라우드 효과를 만드는 방법 Oct 21, 2023 am 11:23 AM

CSS를 사용하여 태그 클라우드 효과를 만드는 방법 태그 클라우드는 다양한 크기와 색상의 태그로 구성되며 키워드나 태그의 인기도를 나타내는 데 사용되는 일반적인 웹 디자인 요소입니다. 이 글에서는 CSS를 사용하여 태그 클라우드 효과를 만드는 방법을 소개하고 구체적인 코드 예제를 제공합니다. HTML 구조 먼저 태그 클라우드의 콘텐츠를 래핑하기 위해 HTML에 컨테이너 요소를 생성해야 합니다. 순서가 지정되지 않은 목록(ul) 또는 연결된 요소 집합이 있는 컨테이너(a)를 사용할 수 있습니다. <ul

WordPress 플러그인에 태그 클라우드 관리 기능을 추가하는 방법 WordPress 플러그인에 태그 클라우드 관리 기능을 추가하는 방법 Sep 05, 2023 am 11:28 AM

WordPress 플러그인에 태그 클라우드 관리 기능을 추가하는 방법 소개: WordPress는 강력하고 사용하기 쉬운 오픈 소스 콘텐츠 관리 시스템입니다. 플러그인을 통해 풍부한 확장 기능을 제공하므로 사용자는 필요에 따라 웹사이트를 쉽게 맞춤 설정할 수 있습니다. 그 중 태그클라우드(TagCloud)는 사용자가 다양한 태그의 인기도를 구름 형태로 표시하거나 알파벳순으로 정렬할 수 있는 공통 기능이다. 이번 글에서는 워드프레스 플러그인에 태그 클라우드 관리 기능을 추가하는 방법을 소개하겠습니다.

HTML, CSS 및 jQuery를 사용하여 동적 태그 클라우드를 만드는 방법 HTML, CSS 및 jQuery를 사용하여 동적 태그 클라우드를 만드는 방법 Oct 26, 2023 am 08:34 AM

HTML, CSS 및 jQuery를 사용하여 동적 태그 클라우드를 만드는 방법 태그 클라우드는 사용자가 관심 있는 콘텐츠를 빠르게 탐색하고 선택할 수 있도록 웹사이트의 태그나 키워드를 표시하는 데 자주 사용됩니다. 이 기사에서는 HTML, CSS 및 jQuery를 사용하여 동적 태그 클라우드를 생성하는 방법을 소개하고 구체적인 코드 예제를 제공합니다. HTML 구조 먼저 태그 클라우드를 담기 위한 기본 HTML 구조를 만들어야 합니다. 일반적으로 태그 클라우드는 여러 태그가 포함된 체인으로 생성됩니다.

Vue에서 태그 클라우드 기능을 구현하는 방법은 무엇입니까? Vue에서 태그 클라우드 기능을 구현하는 방법은 무엇입니까? Jun 25, 2023 am 10:12 AM

Vue는 웹 개발에 널리 사용되는 인기 있는 진보적 JavaScript 프레임워크입니다. 태그 클라우드는 웹사이트에 태그나 키워드를 표시하는 많은 웹사이트의 공통 요소입니다. 이 글에서는 Vue를 사용하여 태그 클라우드 기능을 구현하는 방법에 대해 설명합니다. 태그 클라우드 구성 요소 생성 먼저 태그 클라우드를 표시할 구성 요소를 생성해야 합니다. 시작하려면 다음 코드를 사용할 수 있습니다.&lt;template&gt;&lt;divclass="ta

PHP는 지식 질문 및 답변 웹사이트에서 사용자 온라인 상태 및 활동 추적 기능을 구현합니다. PHP는 지식 질문 및 답변 웹사이트에서 사용자 온라인 상태 및 활동 추적 기능을 구현합니다. Jul 02, 2023 pm 04:27 PM

PHP는 지식 질문 및 답변 웹사이트에서 사용자 온라인 상태 및 활동 추적 기능을 구현합니다. 인터넷의 급속한 발전과 함께 지식 질문 및 답변 웹사이트는 점차 사람들이 정보를 얻고 지식을 공유하는 중요한 플랫폼이 되었습니다. 퀴즈 웹사이트의 관리자 또는 개발자는 사용자 활동을 적시에 이해하고 모니터링하기 위해 사용자 온라인 상태 및 활동 추적 기능을 구현하는 것을 고려할 수 있습니다. 이 기사에서는 PHP를 사용하여 이러한 기능을 구현하는 방법을 소개합니다. 사용자 온라인 상태 기능은 사용자 온라인 상태가 사용자가 현재 웹사이트에서 활성 상태인지 여부를 나타냅니다. 이를 달성하기 위해서는

PHP는 지식 질문과 답변 웹사이트에 태그 클라우드와 주제 집계 기능을 구현합니다. PHP는 지식 질문과 답변 웹사이트에 태그 클라우드와 주제 집계 기능을 구현합니다. Jul 01, 2023 pm 10:03 PM

PHP는 지식 질문 및 답변 웹 사이트에서 태그 클라우드 및 주제 집계 기능을 구현합니다. 지식 질문 및 답변 웹 사이트에서 태그 클라우드 및 주제 집계는 두 가지 중요한 기능입니다. 태그 클라우드는 사용자가 웹사이트의 인기 주제와 공통 태그를 빠르게 이해하도록 도와줌으로써 사용자가 관련 질문과 답변을 더 쉽게 찾아보고 검색할 수 있도록 해줍니다. 주제 집계를 통해 동일한 태그로 질문과 답변을 그룹화할 수 있으므로 사용자가 보다 편리하게 보고 토론할 수 있습니다. 아래에서는 PHP를 사용하여 이 두 가지 기능을 구현하겠습니다. 먼저, 질문을 저장할 데이터베이스를 만들어야 합니다.

Layui를 사용하여 접이식 태그 클라우드 구성 요소 기능을 구현하는 방법 Layui를 사용하여 접이식 태그 클라우드 구성 요소 기능을 구현하는 방법 Oct 25, 2023 am 08:41 AM

Layui를 사용하여 축소 가능한 태그 클라우드 구성 요소를 구현하는 방법 개요: 태그 클라우드는 페이지에 다양한 스타일로 태그를 표시할 수 있는 일반적인 웹 요소로, 사용자가 관심 있는 태그를 빠르게 탐색하고 선택할 수 있습니다. 태그 클라우드를 접으면 페이지 공간을 효과적으로 활용하고 사용자 경험을 향상시킬 수 있습니다. 본 글에서는 Layui 프레임워크를 사용하여 접이식 태그 클라우드 구성 요소 기능을 구현하는 방법을 소개하고 자세한 코드 예제를 제공합니다. 1단계: Layui 프레임워크의 관련 리소스 파일을 가져옵니다.

See all articles