2015年11月28日土曜日

ideabank.phpでやった処理についてまとめてみる


http://miraiplatform.com/service/ideabank.phpではPHP×MySQLの組み合わせでシステムを作っています。

実際にはどんな様なコードを書いたのか、サラッとまとめてみます。


database.phpはMySQLの接続設定が書いてあるファイルになります。
MySQLに接続して、最新のレコード1件を取ってきます。
ちなみに非推奨メソッドとか使っていて、将来的にPHP7では動かないコードなので注意が必要です。
  1. <?php  
  2.   
  3. include_once 'database.php';  
  4.   
  5. $api_url = 'http://butaman.ymk-spark.or.jp/soft/testtech/randomsearch/WebApi.aspx?results=2';  
  6.   
  7. $link = mysql_connect("$host:$port"$user$password);  
  8. mysql_set_charset('utf8'$link);  
  9. $db_selected = mysql_select_db($db$link);  
  10.   
  11. $now_date = date('Y-m-d H:i:00');  
  12. $event_date = date('Y-m-d H:i:00');  
  13. $keyword1 = "";  
  14. $keyword2 = "";  
  15. $query = "SELECT keyword1, keyword2, event_date FROM keyword ORDER BY id DESC LIMIT 1";  
  16. $result = mysql_query($query);  
  17.   
  18. while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {  
  19.  $keyword1 = $line["keyword1"];  
  20.  $keyword2 = $line["keyword2"];  
  21.  $event_date = $line["event_date"];  
  22. }  
  23.   
  24. mysql_free_result($result);  
  25. ?>  
次にhtml的な出力をします。出力内でキーワードの変数を出力したいので以下の様な感じでやっています。
  1. <?php echo "#" . $keyword1 . " × #" . $keyword2; ?>  
最後に最終レコード取得のタイミングから1分経過していたら、APIを叩いてMySQLにレコードをセットします。
レンダリングが遅くなると嫌なので、htmlを出力したあとにこの処理を持ってきています。 
PHPの場合、HttpClientとか考えずにsimplexml_load_fileでURLからXMLのレスポンスを取得できます。
なんとなく連想配列にしたかったので、json_encode、json_decodeとかしています。
  1. <?php  
  2.   
  3. if (strtotime($now_date) > strtotime($event_date)) {  
  4.  $response = simplexml_load_file($api_url);  
  5.  $json = json_encode($response);  
  6.  $array = json_decode($json, TRUE);  
  7.  $sql = sprintf("INSERT INTO keyword (event_date, keyword1, keyword2, create_date) VALUES ('%s', '%s', '%s', NOW())", mysql_real_escape_string($now_date), mysql_real_escape_string($array["Result"][0]), mysql_real_escape_string($array["Result"][1]));  
  8.  $result = mysql_query($sql);  
  9. }  
  10.   
  11. mysql_close($link);  
  12. ?>  

0 件のコメント:

コメントを投稿