微信公衆番号インタフェース開発--snoweekテスト
6653 ワード
注意:前期の準備作業は、私が参照した微信公衆プラットフォーム開発入門チュートリアルで、私自身が説明したのはまだ詳細だと思います. 使用する天気インタフェースについて、集約データで探しました. 完全なコード、私のgithubに行くことができます、weixin_kaifaでdownload.
snoweekテストはphpに基づいて開発された微信公衆番号であり、最初の目標はキャンパス公衆番号を作成することであり、以下の機能を完成することができる.学生成績照会:成績を返信すると、成績結果を含むリンク が返されます.都市の天気を検索します:天気に返事して都市をプラスして、現在の天気の実況を返して、関連する天気指数、未来の数日の天気予報 現在時刻を問い合わせる:返信時間、現在時刻を返す は1枚の画像を送信し、認識した後にメッセージ「あなたは1枚の画像を送信しました」 を返します.回复天气,回归"请按提示入力【天气查询】请入力天气加城市;如:天气北京" この公衆番号がまだ実現していない機能に返信すると、「申し訳ありませんが、この機能はまだ提供されていません. index.php:微信インタフェースファイル weather.php:天気予報インタフェースファイル grade_functions.php:学生が成績を照会する際に使用する関連関数 user
表userには3つの列が含まれています.user_idは、ユーザが学号をバインドする順序を記録し、同時にプライマリ・キーとして使用する.open_idユーザーがこの公衆番号の下で唯一の標識を記録する.student_idは学生の学号を記録する. grade_list
表grade_リストには4つの列が含まれていますgrade_id成績を記録するための項目数;courseはカリキュラム名を記録するために使用されます.grade記録成績;student_idは学生の学号を記録する.2つのテーブルの間にstudent_idで接続します.
ユーザーがまだ学号をバインドしていない場合は、「すみません、まだ学号をバインドしていません.成績を入力してマスターしてください.例えば、成績199440086」というヒントを返します.check_user()関数
この関数は送信者アカウント$open_を介してidはuserテーブルでクエリーを行います.ユーザーが学号をバインドしている場合、grade_リスト表に学生情報がない場合は、「成績記録がありません」というヒントを返します. ユーザーが学号をバインドし、grade_Listテーブルに成績情報がある場合は、リンクを返し、学生はそのリンクをクリックして自分の成績を検索します.search_grade() ユーザが学号をバインドする行為を行うと、すなわち成績プラス学号 を入力する.ユーザーは学号を解縛することができ、すなわち「解縛すればよい」 と入力することができる.
集約関数で直接探した天気インタフェースphpには天気を調べる関数がたくさん含まれています.天気インタフェースを呼び出すコードは次のとおりです.
snoweekテストはphpに基づいて開発された微信公衆番号であり、最初の目標はキャンパス公衆番号を作成することであり、以下の機能を完成することができる.
プロジェクト構造
データベースuserテーブル情報
CREATE TABLE `user` (
`user_id` mediumint(9) NOT NULL AUTO_INCREMENT,
`open_id` varchar(30) NOT NULL,
`student_id` varchar(12) NOT NULL,
PRIMARY KEY (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ;
表userには3つの列が含まれています.user_idは、ユーザが学号をバインドする順序を記録し、同時にプライマリ・キーとして使用する.open_idユーザーがこの公衆番号の下で唯一の標識を記録する.student_idは学生の学号を記録する.
CREATE TABLE `grade_list` (
`grade_id` mediumint(9) NOT NULL,
`course` text NOT NULL,
`grade` int(11) NOT NULL,
`student_id` varchar(12) NOT NULL,
PRIMARY KEY (`grade_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
表grade_リストには4つの列が含まれていますgrade_id成績を記録するための項目数;courseはカリキュラム名を記録するために使用されます.grade記録成績;student_idは学生の学号を記録する.2つのテーブルの間にstudent_idで接続します.
機能の詳細
学生の成績を調べる
function check_user($submit_open_id){
$db=mysql_connect(SAE_MYSQL_HOST_M.':'.SAE_MYSQL_PORT,SAE_MYSQL_USER,SAE_MYSQL_PASS);
$dbc=mysql_select_db(SAE_MYSQL_DB, $db);
$q="select student_id from user where open_id='$submit_open_id'";
$r=mysql_query($q);
if(mysql_num_rows($r)==1){
while($user=mysql_fetch_array($r)){
$result=$user['student_id'];
}
}else{
$result=0;
}
return $result;
}
この関数は送信者アカウント$open_を介してidはuserテーブルでクエリーを行います.
function search_grade($submit_student_id){
$db=mysql_connect(SAE_MYSQL_HOST_M.':'.SAE_MYSQL_PORT,SAE_MYSQL_USER,SAE_MYSQL_PASS);
$dbc=mysql_select_db(SAE_MYSQL_DB, $db);
$q="select course,grade from grade_list where student_id='$submit_student_id'";
$r=mysql_query($q);
$grade_list=array();
if(mysql_num_rows($r)!=0){
while($g=mysql_fetch_array($r)){
$grade=array();
$grade['course']=$g['course'];
$grade['grade']=$g['grade'];
$grade_list[]=$grade;
}
$result=$grade_list;
}else{
$result=0;
}
return $result;
}
function insert_user($submit_open_id,$submit_student_id){
$db=mysql_connect(SAE_MYSQL_HOST_M.':'.SAE_MYSQL_PORT,SAE_MYSQL_USER,SAE_MYSQL_PASS);
$dbc=mysql_select_db(SAE_MYSQL_DB, $db);
$q="insert into user(open_id,student_id)values('$submit_open_id','$submit_student_id')";
$r=mysql_query($q);
$rows=mysql_affected_rows();
return $rows;
}
function delete_user($submit_open_id){
$db=mysql_connect(SAE_MYSQL_HOST_M.':'.SAE_MYSQL_PORT,SAE_MYSQL_USER,SAE_MYSQL_PASS);
$dbc=mysql_select_db(SAE_MYSQL_DB, $db);
$q="delete from user where open_id='$submit_open_id'";
$r=mysql_query($q);
$rows=mysql_affected_rows();
return $rows;
}
都市の天気を検索します:天気を回復して都市をプラスして、現在の天気の実況に帰って、関連する天気の指数、未来の数日の天気の予報
集約関数で直接探した天気インタフェースphpには天気を調べる関数がたくさん含まれています.天気インタフェースを呼び出すコードは次のとおりです.
include 'weather.php'; //
$appkey = 'f67769dc51bfad1c06bb09312b873176'; // appkey
$weather = new weather($appkey);
$cityname=mb_substr($keyword,2,5,'utf-8');
$cityWeatherResult = $weather->getWeather($cityname);
if($cityWeatherResult['error_code'] == 0){
$data = $cityWeatherResult['result'];
$msgType = "text";
$contentStr = "== ==
:".$data['sk']['temp']."
"." :".$data['sk']['wind_direction']."(".$data['sk']['wind_strength'].")"."
:".$data['sk']['humidity'];
$contentStr.="
== =======
"." :".$data['today']['dressing_index']." , ".$data['today']['dressing_advice'];
$contentStr.="
== ==
";
foreach($data['future'] as $wkey =>$f){
$contentStr.=" :".$f['date']." ".$f['week']." ".$f['weather']." ".$f['temperature']."
";
}
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
echo $resultStr;
}else{
$msgType = "text";
$contentStr = "【".$cityname."】".$cityWeatherResult['reason'].", ";
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
echo $resultStr;
}
現在時刻の問合せ
$msgType = "text";
$contentStr = date("Y-m-d H:i:s",time());
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
echo $resultStr;
画像を送信
if($msgtype=="image"){
$msgType = "text";
$contentStr = " ";
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
echo $resultStr;
}
まだ実装されていない公衆番号に返信する機能
$msgType = "text";
$contentStr = "【".$keyword."】 , 。";
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
echo $resultStr;