現在研究紀老師的運動檢錄系統程式碼,心中湧起幾個問題。希望能藉由原始碼解決心中的疑惑。由於紀老師使用Sqlite,但內容也有mysql pdo的語法。因此,希望能改寫成mysql的語法。
1.安裝mysql
$sudo apt-get install mysql-server -y
$sudo apt-get install mysql-client -y
$sudo apt-get install libmysqlclient-dev -y
2.安裝phpmyadmin
$sudo apt-get install phpmyadmin -y
一、如何跟CloudSchool的API介接?
1.如何介接?請參考校務系統cloudschool API相關資料及實作與程式碼的關聯
2.介接之後,要如何整理資料?
1.如何介接?請參考校務系統cloudschool API相關資料及實作與程式碼的關聯
檔案名稱:ApiGetData.php
檔案內容:
<?php
// 3.雲端學籍系統內,學校的 API ID
$API_client_id = '學校的 API ID';
// 4.雲端學籍系統內,學校的 API 密碼
$API_client_secret = '學校的 API 密碼';
//取得API資料
$GetApiData = elps_API();
//印出API資料
PP($GetApiData);
function elps_API(){
global $API_client_id,$API_client_secret;
// =================================================
// 學生榮譽榜 (url: https://api.chc.edu.tw)
// 校務佈告欄 (url: https://api.chc.edu.tw/school-news)
// 同步學期資料 (url: https://api.chc.edu.tw/semester-data)
// 更改師生密碼 (url: https://api.chc.edu.tw/change-password)
// API NAME
$api_name = '/semester-data';
//$api_name = '/school-news';
// 更改師生密碼 (url: https://api.chc.edu.tw/change-password)
// API URL
$api_url = 'https://api.chc.edu.tw';
//: https://api.chc.edu.tw/school-news
// 建立 CURL 連線
$ch = curl_init();
// 取 access token
curl_setopt($ch, CURLOPT_URL, $api_url."/oauth?authorize");
// 設定擷取的URL網址
curl_setopt($ch, CURLOPT_POST, TRUE);
// the variable
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, array(
'client_id' => $API_client_id,
'client_secret' => $API_client_secret,
'grant_type' => 'client_credentials'
));
$data = curl_exec($ch);
$data = json_decode($data);
$access_token = $data->access_token;
$authorization = "Authorization: Bearer ".$access_token;
curl_setopt($ch, CURLOPT_URL, $api_url.$api_name);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json' , $authorization )); // **Inject Token into Header**
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
//curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
$result = curl_exec($ch);
return $result;
}
/* 列印變數*/
function PP($a){
echo "<pre>";print_r($a);
echo "</pre>";exit;
}
?>
二、介接之後,如何取得的資料存入資料庫中?
1.如何用pdo建立資料庫?
2.如何用pdo建立資料表?
1.如何用pdo建立資料庫?
檔案名稱:PdoCreateDatabase.php
檔案內容:
<?php
$school_code='教育部學校代碼';
$MySQL['Host']='localhost';
$MySQL['User']='資料庫使用者';
$MySQL['Pass']='資料庫密碼';
$MySQL['Db']='Sport109_'.$school_code;
try {
//建立資料庫
$CONN =new PDO('mysql:host='.$MySQL['Host'], $MySQL['User'] ,$MySQL['Pass']);
$SQL="CREATE DATABASE ".$MySQL['Db']." CHARACTER SET utf8 COLLATE utf8_general_ci;";
$CONN->exec($SQL) or die($SQL);
backe("!!資料庫 ".$MySQL['Db']." OK!!");
}
catch (Exception $e)
{
backe("!!無法連結資料庫!!");
//die("<center><h2>無法連結資料庫</h2></center>");
}
##################回上頁函式1#####################
function backe($value= "BACK"){
//echo head();
echo "<meta charset='UTF-8'><br><br><CENTER>";
echo "<h4>--== 《系統訊息》 ==--</h4>";
echo "<div align=center onclick='history.back();' style='font-size:12pt;color:#A52A2A;'><b>";
echo $value;
echo "</b><BR></div><h5 onclick='history.back();'>--== 《按下後返回》 ==--</h5>";
exit;
}
?>
2.如何用pdo建立資料表?
(1).先檢查是否可從資料表取出一筆資料?
(1).Y.取得出,表示有此資料表->不建立資料表
(1).N.取不出,表示無此資料表->建立資料表
檔案名稱:PdoCreateTable.php
檔案內容:
<?php
$school_code='教育部學校代碼';
$MySQL['Host']='localhost';
$MySQL['User']='資料庫使用者';
$MySQL['Pass']='資料庫密碼';
$MySQL['Db']='Sport109_'.$school_code;
/*建立連結*/
try {
// for MySQL
$CONN =new PDO('mysql:host='.$MySQL['Host'].';dbname='.$MySQL['Db'], $MySQL['User'],$MySQL['Pass'], array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
}
catch (Exception $e)
{
backe("!!無法連結資料庫!!");
//die("<center><h2>無法連結資料庫</h2></center>");
}
/* 建立 stud 資料表*/
$SQL1="select * from `stud` limit 1";
$SQL2="CREATE TABLE `stud`(
`id` INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
`stuid` VARCHAR(10) NOT NULL UNIQUE,
`stuname` TEXT NOT NULL,
`idclass` TEXT NOT NULL,
`cla` TEXT NOT NULL,
`seatnum` INT(10) DEFAULT '0',
`sex` TEXT NOT NULL,
`edukey` TEXT,
`created` TEXT,
`modify` TEXT
);";
$rs=$CONN->query($SQL1);
if (!$rs) {
$rs=$CONN->query($SQL2) or die($SQL2);
} else {
backe('Had stud 資料表!');
}
##################回上頁函式1#####################
function backe($value= "BACK"){
//echo head();
echo "<meta charset='UTF-8'><br><br><CENTER>";
echo "<h4>--== 《系統訊息》 ==--</h4>";
echo "<div align=center onclick='history.back();' style='font-size:12pt;color:#A52A2A;'><b>";
echo $value;
echo "</b><BR></div><h5 onclick='history.back();'>--== 《按下後返回》 ==--</h5>";
exit;
}
?>
需要注意的是,同樣是建立資料表stud,建立資料表的語法會有些微不同
MYSQL語法:
CREATE TABLE `stud`(
`id` INTEGER PRIMARY KEY,
`stuid` VARCHAR(20) NOT NULL UNIQUE,
`stuname` TEXT NOT NULL,
`idclass` TEXT NOT NULL,
`cla` TEXT NOT NULL,
`seatnum` INTEGER DEFAULT '0',
`sex` TEXT NOT NULL,
`edukey` TEXT,
`created` TEXT,
`modify` TEXT
);
Sqlite語法:
CREATE TABLE `stud`(
`id` INTEGER PRIMARY KEY,
`stuid` TEXT NOT NULL UNIQUE,
`stuname` TEXT NOT NULL,
`idclass` TEXT NOT NULL,
`cla` TEXT NOT NULL,
`seatnum` INTEGER DEFAULT '0',
`sex` TEXT NOT NULL,
`edukey` TEXT,
`created` TEXT,
`modify` TEXT
);
9.PHP PDO
沒有留言:
張貼留言