第2回CodeIgniterの使い方「SQLiteの使い方」
2010.01.26 *Tue
えっと今日は、ネットにも本にもあんまり情報がない「SQLite」の使い方です。
まずは、データベースの設定
基本的には初期設定をコピペで['database']と['dbdriver']を変更すれば動きます。
ここでいちばん迷ったのは['database']の項目。
この項目にはファイルの保存先を指定するのですが
このファイルはいったい何処をルートとして考えているのか??
このファイルは自分で用意しなければならないのか??です。
実際プログラムを書いて調べてみた結果
ファイルはデータベースをロードしたときに作られて、ファイルのルートは
「index.php」があるところがルートディレクトリみたいです。
ほんとややこしい!!もちょっと、SQLite用のマニュアル用意して下さいよ運営さん^^;
次はテーブルの作成です。
ここで問題になるのはSQLite用のdbforgeクラスのバグっぽい物
SQLの文法にあまり詳しくないのですが、調べた結果どうも
add_fieldのauto_incrementがちゃんと動作してない様子です。
ソースをのぞいてみると、
となっていました。SQLite3ではこれでもいいみたいなのですが
CodeIgniterで使用するのはSQLite2なのでこの文法は使えません。
なのでdbforgeクラスを使う場合は「AUTO_INCREMENT」を「PRIMARY KEY」に変更して下さい。
ソースを書き換えるのが嫌な人SQLの文法に詳しい方は、クリエでそのまま実行した方がいいかもしれません。
あと説明では
$this->dbforge->add_field('id');
とすることで、主キーになると書いてありますがSQLiteはなりません。
以下のフィールドで作成することで主キーにすることが出来ます。
何かバグdbクラスはバグが多いみたいですねぇ^^;
早く次のバージョンでないかなぁ^^
P.S.
ちなみにこの記事に使ったのは2010年1月26日(火)現在の最新バージョン1.72です。
まずは、データベースの設定
$db['test']['hostname'] = "";
$db['test']['username'] = "";
$db['test']['password'] = "";
$db['test']['database'] = "temp.db";
$db['test']['dbdriver'] = "sqlite";
$db['test']['dbprefix'] = "";
$db['test']['pconnect'] = FALSE;
$db['test']['db_debug'] = TRUE;
$db['test']['cache_on'] = FALSE;
$db['test']['cachedir'] = "";
$db['test']['char_set'] = "utf8";
$db['test']['dbcollat'] = "utf8_general_ci";
基本的には初期設定をコピペで['database']と['dbdriver']を変更すれば動きます。
ここでいちばん迷ったのは['database']の項目。
この項目にはファイルの保存先を指定するのですが
このファイルはいったい何処をルートとして考えているのか??
このファイルは自分で用意しなければならないのか??です。
実際プログラムを書いて調べてみた結果
ファイルはデータベースをロードしたときに作られて、ファイルのルートは
「index.php」があるところがルートディレクトリみたいです。
ほんとややこしい!!もちょっと、SQLite用のマニュアル用意して下さいよ運営さん^^;
次はテーブルの作成です。
ここで問題になるのはSQLite用のdbforgeクラスのバグっぽい物
SQLの文法にあまり詳しくないのですが、調べた結果どうも
add_fieldのauto_incrementがちゃんと動作してない様子です。
ソースをのぞいてみると、
if (array_key_exists('AUTO_INCREMENT', $attributes) && $attributes['AUTO_INCREMENT'] === TRUE)
{
$sql .= ' AUTO_INCREMENT';
}
となっていました。SQLite3ではこれでもいいみたいなのですが
CodeIgniterで使用するのはSQLite2なのでこの文法は使えません。
なのでdbforgeクラスを使う場合は「AUTO_INCREMENT」を「PRIMARY KEY」に変更して下さい。
ソースを書き換えるのが嫌な人SQLの文法に詳しい方は、クリエでそのまま実行した方がいいかもしれません。
あと説明では
$this->dbforge->add_field('id');
とすることで、主キーになると書いてありますがSQLiteはなりません。
以下のフィールドで作成することで主キーにすることが出来ます。
$fields['id']['type'] = 'INTEGER';
$fields['id']['auto_increment'] = TRUE;
何かバグdbクラスはバグが多いみたいですねぇ^^;
早く次のバージョンでないかなぁ^^
P.S.
ちなみにこの記事に使ったのは2010年1月26日(火)現在の最新バージョン1.72です。
CATEGORY : 未分類
第1回CodeIgniterの使い方「データベースのテーブル作成サンプル」
2010.01.24 *Sun
これからはCodeIgniterの使い方を書いて覚えていきたいと思います。
まずはデータベースについて。
今回はテーブル作成にサンプル
まずはデータベースについて。
今回はテーブル作成にサンプル
function table_make_sample()
{
//クラスの初期化
$this->load->dbforge();
$this->load->library('parser');
$data['charset'] = 'EUC-JP';
$data['title'] = 'テーブル作成サンプル';
$this->parser->parse('heder.html', $data);
//ヘッダー読み込み
$fields = array(
'users' => array(
'type' => 'VARCHAR',
'constraint' => '100',
),
);
$this->load->database("test");
$this->dbforge->add_field($fields);
if ($this->db->table_exists('table_name'))
{
echo 'テーブルはすでに存在します。';
}
else
{
if ($this->dbforge->create_table('table_name'))
{
echo 'テーブル作成に成功しました。';
}
else
{
echo 'テーブル作成に失敗しました。';
}
}
}
CATEGORY : CodeIgniter
PHPフレームワーク「CodeIgniter」
2010.01.24 *Sun
前回はちいたんの事について書きましたが、モットいいフレームワークを発見したのでこちらを使います。
その名も「CodeIgniter」!!
いろいろな事に柔軟に対応できるシステムが組まれているようなのでこれからのプログラムの開発はこいつでやっていきたいと思います。
その名も「CodeIgniter」!!
いろいろな事に柔軟に対応できるシステムが組まれているようなのでこれからのプログラムの開発はこいつでやっていきたいと思います。
CATEGORY : CodeIgniter
PHPフレームワーク「ちいたん」
2010.01.21 *Thu
えっと久しぶりにブログ更新しますね^^;;
なんか、存在すら忘れてた;;
PHPフレームワーク「ちいたん」についてです。
まぁ使い方を忘れた時用のWayのメモなんですがね。
config.php
外部クラスを読み込んで使う場合
AddComponent( string filepath [, string cname [, string name ] ] )
function config_components( &$controller )
{
$controller->AddComponent( dirname(__FILE__) . "/components/mail.php" );
$controller->AddComponent( 'Smarty/Smarty.class.php', 'Smarty', 'smarty' );
}
じゃ細かい説明を
$controller->AddComponent( dirname(__FILE__) . "/components/mail.php" );
外部クラスを絶対パスで指定。
この場合cname(クラス名)が省略されているので呼び出すクラスは「C+FILE_NAME」になるので
「CMail」というクラスが呼び出されます。
$controller->AddComponent( 'Smarty/Smarty.class.php', 'Smarty', 'smarty' );
外部クラスを相対パスで指定。
この場合クラス名が入力されているので呼び出すクラスは「Smarty」。
今回は「name」のプロパティが入力されているのでコントローラでデータが扱えるようになります。
$c->smarty->
などこんな感じかな、間違っているところがあると思うのであまり参考にしない方がいいかも。
なんか、存在すら忘れてた;;
PHPフレームワーク「ちいたん」についてです。
まぁ使い方を忘れた時用のWayのメモなんですがね。
config.php
外部クラスを読み込んで使う場合
AddComponent( string filepath [, string cname [, string name ] ] )
function config_components( &$controller )
{
$controller->AddComponent( dirname(__FILE__) . "/components/mail.php" );
$controller->AddComponent( 'Smarty/Smarty.class.php', 'Smarty', 'smarty' );
}
じゃ細かい説明を
$controller->AddComponent( dirname(__FILE__) . "/components/mail.php" );
外部クラスを絶対パスで指定。
この場合cname(クラス名)が省略されているので呼び出すクラスは「C+FILE_NAME」になるので
「CMail」というクラスが呼び出されます。
$controller->AddComponent( 'Smarty/Smarty.class.php', 'Smarty', 'smarty' );
外部クラスを相対パスで指定。
この場合クラス名が入力されているので呼び出すクラスは「Smarty」。
今回は「name」のプロパティが入力されているのでコントローラでデータが扱えるようになります。
$c->smarty->
などこんな感じかな、間違っているところがあると思うのであまり参考にしない方がいいかも。
CATEGORY : プログラミング
Townに荒らしが!!
2009.10.31 *Sat
つい最近、うちのTownに荒らしがやってきました。
僕はぜんぜん気がつかなかったのですが、住人さんからメールで、
「荒らされてませんか?」ってメールが来て気がつきました。
とりあえず管理画面で見てみようと思い、管理画面へアクセス
で住人一覧をクリック
…
…
…
あれ、ロード長くないか?
と思いながらもう少し待つ
…
…
…
…
…
一向にロードする気配なし…
も〜なんで入れ無いんだよぉー
仕方が無いのでFTPで直接ログにアクセス
すると原因がわかりました。
名前の欄に果てしなく続くz…
コレが原因でした。
もうこういう荒らしはやめてほしいです!
perlの知識があったから対処できたものの、知識が無ければ1発で閉鎖です。
これ以上荒らしはやめてほしいなぁ^^;
僕はぜんぜん気がつかなかったのですが、住人さんからメールで、
「荒らされてませんか?」ってメールが来て気がつきました。
とりあえず管理画面で見てみようと思い、管理画面へアクセス
で住人一覧をクリック
…
…
…
あれ、ロード長くないか?
と思いながらもう少し待つ
…
…
…
…
…
一向にロードする気配なし…
も〜なんで入れ無いんだよぉー
仕方が無いのでFTPで直接ログにアクセス
すると原因がわかりました。
名前の欄に果てしなく続くz…
コレが原因でした。
もうこういう荒らしはやめてほしいです!
perlの知識があったから対処できたものの、知識が無ければ1発で閉鎖です。
これ以上荒らしはやめてほしいなぁ^^;
CATEGORY : Town
