2012年8月1日水曜日

CodeIgniter STEP2, get data from mysql


  1. codeigniter_testデータベース&テーブル作成
  2. database接続用のconfig設定
  3. config/database.php
    $db['default'] = array(
     'dsn' => '',
     'hostname' => 'localhost',
     'username' => 'root',
     'password' => '',
     'database' => 'codeigniter_test',
     'dbdriver' => 'mysqli',
     'dbprefix' => '',
     'pconnect' => TRUE,
     'db_debug' => TRUE,
     'cache_on' => FALSE,
     'cachedir' => '',
     'char_set' => 'utf8',
     'dbcollat' => 'utf8_general_ci',
     'swap_pre' => '',
     'autoinit' => TRUE,
     'stricton' => FALSE,
     'failover' => array()
    );
     
  4. modelの定義
  5. model/hello_world_model.php
    ※クラス名は頭文字だけ大文字にする必要あり
    class Hello_world_model extends CI_Model {
    
     function __construct()
     {
      parent::__construct();
     }
     
     function get_data(){
      //codeigniter_testテーブルの1レコードだけ取得
      $query = $this->db->get('codeigniter_test', 1);
      return $query->result();
     }
    }
    
  6. controllerからmodelを読んでHello World
  7. controller/hello_world.php
    class Hello_world extends CI_Controller {
     public function index(){
      //データベース接続
      $this->load->database();
      
      //モデルに接続
      $this->load->model('Hello_world_model');
      
      //モデルのメソッド呼び出して、データ取得
      $rows = $this->Hello_world_model->get_data();
      
      //取得したデータの1件目だけ取得
      $row = current($rows);
      $data = array('hello_world' => $row->text);
      
      $this->load->view('hello_world', $data);
     }
    }
    
    views/hello_world.php
    echo $hello_world;
    
でけた! テストのために、codeigniter_testテーブルには最低限、textっていうフィールドを用意して1レコード挿入しておいてください

2012年7月31日火曜日

CodeIgniter STEP1, Hello World


  1. CodeIgniterのダウンロード or GitHub clone
    http://codeigniter.com/downloads/
  2. インストール
    今回はWebapp直下にCodeIgniterTestフォルダを作ってそこに設置。

    application/config/config.php  のベースURLを変更する必要があるらしいので、変更
    $config['base_url'] = 'http://localhost/CodeIgniterTest/';
    かな?たぶん

    http://localhost/CodeIgniterTest/ にアクセスすると、welcomeページが表示された。(base_urlを変更しなくても表示されたけどね^^;)
  3. Hello World
    準備ができたので、Hello Worldしましょう!

    Welcomeページを見ると、
    Viewに関しては application/views/xxx.php
    Controllerに
    関しては application/controllers/xxx.php
    とのこと。

    というわけで、それぞれに hello_world.php作ってみます。

    application/views/hello_world.php
         hello world!!

    application/controllers/hello_world.php
    <?php
    class Hello_world extends CI_Controller {

    public function index(){

    $this->load->view('hello_world');

    } 

    }

    上記の2ファイル作って、http://localhost/CodeIgniterTest/index.php/hello_world にアクセスしたらできてた!わかりやすいかもー

2011年8月16日火曜日

KayフレームワークでGETやPOSTの値を取得するメモ

GET値の取得は

localhost:8080/test?keyword=xxx の場合

def test(request):
  keyword = request.args.get('keyword')

こんな感じで、request.args.getで取得できる



POST値の取得は

def test(request):
  keyword = request.form['keyword']

こんな感じで、request.formで取得できる。



でも、ユーザー入力のリクエストを利用する場合は、そのまま利用しちゃうと危険なので、
入力値のValidateチェックするのがいいと思う。
その方法はまた別の機会に。

2011年8月15日月曜日

KayフレームワークでTwitterのダイレクトメッセージを送信する方法

参考:Kay Framework で Twitter につぶやきを投稿する方法

参考にしたサンプルはつぶやきの投稿だったんですが、ダイレクトメッセージ送信しようと思います。

  from myapp.models import User
  from google.appengine.api import urlfetch
  from myapp import oauth
  import settings

  # Twitter クラアイアントを使う
  client = oauth.TwitterClient(
      settings.GAEMA_SECRETS['twitter_consumer_key'],
      settings.GAEMA_SECRETS['twitter_consumer_secret'],
      None)

  query = Notification.all().order('-created')
  notifications = query.fetch(10)

  for notification in notifications:
      user_info = User.get_by_key_name(notification.user.key().name())
      access_token = user_info.raw_user_data['access_token']
      key = access_token['key']       # Access Key
      secret = access_token['secret'] # Access Key Secret
    
      # Twitter でつぶやく内容
      params = {"text": 'test','user': access_token['user_id'] }

      # つぶやきを投稿
      url = 'https://twitter.com/direct_messages/new.json'
      response = client.make_request(url=url, token=key, secret=secret,
          additional_params=params, protected=True, method=urlfetch.POST)

raw_user_dataっていうところにいろいろデータが詰まっているみたいです。
その中にTwitterのAPIで必要なaccess keyとaccess key secretがあるので取得して、ダイレクトメッセーを送信します。なるほどー

データストアのfilterを利用する場合、 = の前にスペースを入れる必要がある

http://linuxfree.ma-to-me.com/archives/000352.html


filter('url=', None) とすると、resultの件数が0件だった。(App Engine SDK 1.3.4で確認)
何が違うかというと、「url」と「=」の間にスペースを入れてないのだ。

Notification.all().filter('notification=', True)って最初書いてて、取得件数が0件だったので、Boolean型の場合、条件の指定方法が特殊なのかなって思ったら違った。

Notification.all().filter('notification =', True)
というように = の前にスペースを入れる必要がある。
まあ確かにって感じ。スペースあったほうが解釈楽だもんねw

2011年8月13日土曜日

PCセットアップメモ