機能概要

WebAPI②のコードを使用します。データベースに接続後に、SQLを利用し、データ抽出を行います。
その後、JSON形式のデータを出力し、フロントエンド側で一覧表示させるプログラムです。

プログラミングコード

「webapi-news_v4.html」フロントエンド:API読み出しページ

  • WebAPI②で作成した「webapi-news_v2.php」を「webapi-news_v4.php」に修正します。
    10行目:phpのAPIのリンクを変数「url」に登録します。
<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="utf-8">
    <title>sample</title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
    <script language="javascript" type="text/javascript">
    function mj_api(){
        url = "webapi-news_v4.php";

        $.getJSON(url, (data) => {
            disp_text.innerHTML = "";

            for (let i=0; i<data.length; i++){
                disp_text.innerHTML += "status:" + data[i]["status"] + "<br>";
                disp_text.innerHTML += "new_no:" + data[i]["new_no"] + "<br>";
                disp_text.innerHTML += "title_kj:" + data[i]["title_kj"] + "<br>";
                disp_text.innerHTML += "article_kj:" + data[i]["article_kj"] + "<br>";
                disp_text.innerHTML += "<hr>";
            }
        });
    }
</script>
</head>
<body onload="mj_api()">
    <div>ニュース情報を取得<br></div>
    <div id="disp_text"></div>
</body>
</html>

「webapi-news_v4.php」バックエンド:APIファイル

  • 4行目:「config.php」を読み込み、その中の変数情報を使用することができるようになります。
  • 6行目:「try~catch」は、プログラムを実行し、エラー(例外)などが発生した際に他のプログラムを実行することができます。
    • 「try」の中がメイン処理となります。
      今回のメイン処理は、データベースに接続し、値を受け取るプログラムとなります。
    • 「catch」は、「try」のメイン処理で、エラーが発生したときに動作するプログラムです。
      • 24行目:エラー内容を取得し、画面上に表示します。
      • 25行目:スクリプト処理を終了します。
  • 28行目:配列「$arr_data」を配列として宣言します。
  • 30~37行目:配列「$arr_data」に値を入力します。データベースから取得した値を加工し、変数へ代入します。
  • 39行目:header」関数を使用して、jsonファイルということが分かるようにヘッダーを登録します。
  • 40行目:json_encode()」を用いて、配列をJSONファイルに変換します。
<?php

//データベース接続情報を格納
include("config.php");

try{
    $dbh = new PDO($dsn, $user, $password);
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $sql = "select"
        ." nt.seq_no"
        .",nt.title_kj"
        .",nt.article_kj"
        .",nt.insert_at"
        ." from news_tbl nt"
        ." where nt.delete_ku = '0'"
        ." order by nt.seq_no desc;";
    $stmt = $dbh->prepare($sql);
    $stmt->execute();
    $count = $stmt->rowCount();
    while($row = $stmt->fetch(PDO::FETCH_ASSOC)){
        $data[] = $row;
    }
}catch (PDOException $e){
    echo($e->getMessage());
    die();
}

$arr_data = array();
//データベースのレコード数を繰り返す
foreach($data as $row){
    $arr_data[] = [
        "status" => "OK"
        ,"new_no" => $row['seq_no']
        ,"title_kj" => htmlspecialchars($row['title_kj'],ENT_QUOTES,"UTF-8")
        ,"article_kj" => nl2br(htmlspecialchars($row['article_kj'],ENT_QUOTES,"UTF-8"))
    ];
}

header('content-type: application/json; charset=utf-8');
echo json_encode($arr_data);
?>

演習問題

  1. 上記のコードを使用して、ファイル作成し、動作するようにしてみよう。
  2. 上記のプログラムを変更し、異なるデータベースやテーブルを使用し、一覧を変更してみよう。