ホームページ  >  記事  >  バックエンド開発  >  PHP およびミニ プログラムのオンライン Q&A およびナレッジ ベースの実装

PHP およびミニ プログラムのオンライン Q&A およびナレッジ ベースの実装

WBOY
WBOYオリジナル
2023-07-04 08:05:431511ブラウズ

PHP およびミニ プログラムのオンライン Q&A およびナレッジ ベースの実装

モバイル インターネットの発展に伴い、ミニ プログラムはモバイル アプリケーションの非常に一般的な形式になりました。質問と回答およびナレッジ ベースは、多くの Web サイトやアプリケーションに共通の機能であり、ユーザーが必要な情報をすばやく見つけて問題を解決できるようにします。この記事では、PHP と小さなプログラムを使用してオンライン Q&A およびナレッジ ベース機能を実装する方法を紹介します。

1. 準備作業
開始する前に、次の作業を準備する必要があります:

  1. PHP 環境と MySQL データベースをインストールする;
  2. 質問と回答のデータを保存するデータベース データベース テーブル;
  3. ミニ プログラム開発ツールを使用して、ミニ プログラム プロジェクトを作成します。

2. データベース テーブルの作成
質問と回答のデータを保存するデータベース テーブルを作成する必要があります。 MySQL データベースでは、次の SQL ステートメントを実行して、「qa」という名前のデータ テーブルを作成できます。

CREATE TABLE `qa` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `question` varchar(255) NOT NULL,
  `answer` varchar(255) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

このテーブルには、id (質問と回答の一意の ID)、question (質問) の 3 つのフィールドが含まれています。 、答え(答え)。

3. PHP バックエンド コード

  1. 「qa.php」という名前の PHP ファイルを作成し、次のコードを記述します:
<?php
// 连接数据库
$servername = "localhost";
$username = "root";
$password = "123456";
$dbname = "your_database_name";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

// 处理请求接口
$action = $_GET['action'];
if ($action == 'getQuestions') {
    // 获取问题列表
    $sql = "SELECT * FROM `qa`";
    $result = $conn->query($sql);
    $questions = array();
    if ($result->num_rows > 0) {
        while ($row = $result->fetch_assoc()) {
            $questions[] = array(
                'id' => $row['id'],
                'question' => $row['question'],
                'answer' => $row['answer']
            );
        }
    }
    echo json_encode($questions);
} else if ($action == 'addQuestion') {
    // 添加问题
    $question = $_POST['question'];
    $answer = $_POST['answer'];
    $sql = "INSERT INTO `qa` (`question`, `answer`) VALUES ('$question', '$answer')";
    if ($conn->query($sql) === TRUE) {
        echo 'success';
    } else {
        echo 'error';
    }
} else if ($action == 'deleteQuestion') {
    // 删除问题
    $id = $_POST['id'];
    $sql = "DELETE FROM `qa` WHERE `id` = $id";
    if ($conn->query($sql) === TRUE) {
        echo 'success';
    } else {
        echo 'error';
    }
}

$conn->close();
?>
  1. Put上記で書き込んだ「qa.php」ファイルを、PHP 環境の Web サイトのルート ディレクトリにコピーします。

4. ミニ プログラム フロントエンド コード

  1. ミニ プログラム開発ツールを開き、プロジェクト ディレクトリで「app.json」ファイルを見つけ、次のコードを追加します。コード (「your_website_url」を置き換えます。Web サイトのアドレスに置き換えます):
"request": {
    "domain": "your_website_url",
    "tlsVersion": "1.2",
    "timeout": 5000,
    "method": "GET"
}
  1. 「index」という名前のページを作成し、次のコードを記述します:
<view class="container">
    <view class="title">在线问答与知识库</view>
    <view class="form">
        <input placeholder="请输入问题" bindinput="inputQuestion" />
        <input placeholder="请输入答案" bindinput="inputAnswer" />
        <button bindtap="addQuestion">添加问题</button>
    </view>
    <view class="list">
        <view wx:for="{{questionList}}" wx:key="id" class="item">
            <view class="question">{{item.question}}</view>
            <view class="answer">{{item.answer}}</view>
            <button bindtap="deleteQuestion">删除</button>
        </view>
    </view>
</view>
  1. 「Index.js」ファイルに次のコードを記述します:
Page({
  data: {
    questionList: [],
    question: '',
    answer: ''
  },

  onLoad: function () {
    this.getQuestionList();
  },

  getQuestionList: function () {
    wx.request({
      url: 'your_website_url/qa.php?action=getQuestions',
      success: (res) => {
        this.setData({
          questionList: res.data
        })
      }
    })
  },

  inputQuestion: function (e) {
    this.setData({
      question: e.detail.value
    })
  },

  inputAnswer: function (e) {
    this.setData({
      answer: e.detail.value
    })
  },

  addQuestion: function () {
    wx.request({
      url: 'your_website_url/qa.php?action=addQuestion',
      method: 'POST',
      data: {
        question: this.data.question,
        answer: this.data.answer
      },
      success: (res) => {
        if (res.data == 'success') {
          this.getQuestionList();
          this.setData({
            question: '',
            answer: ''
          })
        }
      }
    })
  },

  deleteQuestion: function (e) {
    var id = e.currentTarget.dataset.id;
    wx.request({
      url: 'your_website_url/qa.php?action=deleteQuestion',
      method: 'POST',
      data: {
        id: id
      },
      success: (res) => {
        if (res.data == 'success') {
          this.getQuestionList();
        }
      }
    })
  }
})

5. テスト実行

  1. ミニ プログラム開発ツールを使用してミニ プログラムをプレビューし、シンプルな Q&A リスト インターフェイスが表示されます。
  2. 質問と回答を入力し、[質問を追加] ボタンをクリックすると、質問がデータベースに追加されます。
  3. [削除] ボタンをクリックすると、質問がデータベースに追加されます。質問の右側にある場合、質問はデータベースから削除され、データベースから削除されます。

上記の手順により、簡単なオンライン Q&A およびナレッジ ベース機能を実装することができ、ユーザーはミニ プログラムで簡単に質問を参照および追加できます。もちろん、これは単なる基本的な実装であり、ニーズに応じて拡張および最適化できます。この記事が PHP や小規模プログラムの開発に役立つことを願っています。

以上がPHP およびミニ プログラムのオンライン Q&A およびナレッジ ベースの実装の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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