2008/06/22(日)
CakePHP といえば、このあいだ早速けつまづいたことがあったので、書き留めておく。
あるフィールドの値を重複なしですべてリスト化したかったのだが、
$keyLists = array();
$SQLStr = 'SELECT DISTINCT column FROM dbTables ORDER BY forSortColumn ASC';
if ($Res = mysql_query($SQLStr)) {
while ($Row = mysql_fetch_row($Res)) {
$keyLists[] = $Row[0];
}
}
これを、findAll() とかでできるかと思ったら、DISTINCT をどう指定していいのかわからなくて、結局上記コードのままになっている。で、これをメソッドとしてモデルに追加したのだが……こういう場合、これで正解? それとも別の手がある?
自前のクエリを発行する場合は query() が使えるということがわかった。これならコントローラーで気軽に(?)使える。この場合、返ってくるのはCakePHPモデルの他のAPIを使った時と同様の構造を持つ配列。
ただ、これを使用した場合の新たな疑問は、DBテーブル名にプレフィックスを付加している場合、他のAPIではプレフィックスを意識せずに使えるけれど、query() の場合は意識しないといけないらしい、ということ。
ビュー内で使用する時、常にこのプレフィックスを付けて($Variable['PreFix_Table']['Column'] とか)呼び出すのは、何だかちょっと気持ち悪い感じがする……。統一して $Variable['Table']['Column'] のように使いたい場合はどうすれば?
というわけで、それが解決するまでは、自前メソッドのままの方が使いやすいので、query() の使用は保留。
もしかしたら、下記でいけるかもしれない。未確認。そのうち試してみよう。
$this->User->query('SELECT DISTINCT column FROM prefix_users AS User ORDER BY forSortColumn ASC');
Filed under: DB,FrameWork | タグ: CakePHP, MySQL
Tail-Lagoon @ 15:39
|
PageUp
2008/06/21(土)
まず何か作ってみようと思って、真っ先に困惑したのが命名規則。データベースのテーブル名やらモデル名やらコントローラとか……ある命名規則があって、必ずしも遵守する必要はないけれど、守っておけば作りやすい(簡単便利?)らしい。というわけで、フォーラムの中にちょうどこれに関する記事を見つけたので、ブックマーク。
Filed under: FrameWork | タグ: CakePHP
Tail-Lagoon @ 18:29
|
PageUp
2008/06/13(金)
(カスタムフィールドの利用)
WordPressで記事を書いていて、その記事投稿の一部分にのみ独自のCSSを適用したい、という要求がしばしば発生する。その場合の対処は、
といった方法が考えられる。しかし……
Filed under: CMS,Sample | タグ: CSS, WordPress
Tail-Lagoon @ 17:56
|
PageUp
2008/06/11(水)
これからちょっとフレームワークを使ってみようかな、と思って……。
いろいろ調べたところ、CakePHPが最もとっつきやすそうなので、これを使うことに決めた。
Filed under: FrameWork | タグ: CakePHP, PHP
Tail-Lagoon @ 11:46
|
PageUp
2008/04/12(土)
以前の記事で、TypePad に独自の記事検索機能がないことを書いた。そして、サポートの勧めに従い Google カスタムサーチを設置して試してみた(これが ver.1)が、やはり幾つかの欠点が気になっていた。
Filed under: CMS | タグ: TypePad
Tail-Lagoon @ 01:22
|
PageUp
2008/04/10(木)
日本語を含む文字列で、全角英数字やアルファベット大文字を半角小文字に変換および半角カナを全角カナに変換する関数。検索キーワードを統一したい場合などに有効。(検索文字列および対象文字列の双方を変換してマッチさせる。ただし、表示する文字は変換前のものをそのまま使用したい場合は、データを二重化し、変換前と後をそれぞれ用意する必要あり)
<?php
function ABC2abc($Word) { // 文字列のうち英数文字を半角・小文字に統一
$Word = mb_strtolower($Word, 'UTF-8');
$Word = mb_convert_kana($Word, 'KVa', 'UTF-8');
// option K:半カナ→全カナ V:濁点文字を一文字 a:全英数→半英数
$Word = mb_strtolower($Word);
return $Word;
}
?>
例 : Japan2008, JAPAN2008 などの文字列を一律 japan2008 に変換
mb_convert_kana について、上記のように文字コードを指定するか、あるいはPHPスクリプトの内部エンコーディングを最初から指定しておく(下記例)かしないと、うまく機能しない場合がある。
<?php
mb_internal_encoding("UTF-8");
?>
Filed under: Sample,Web Design | タグ: PHP
Tail-Lagoon @ 15:31
|
PageUp
2008/03/26(水)
XOOPS は初心者泣かせの CMS ツールだと思う。
まずインストールした後の使い方を調べるのに泣かされる。そもそもインストール直後は空っぽだから、目的に応じてモジュールを追加インストールしなければいけないのだが、では「例えばこういう使い方をしたい場合はどのモジュールを使えばいいのか」というような基本的なことからまずわからないのである。
こういう場合、正直「XOOPS Cube 日本サイト」は、あまり初心者には向いていないと思う。よくわからないけど有用そうな情報がたくさんある。でもある程度 XOOPS を使った経験と知識がないうちは、さっぱり要領を得ない。
で、色々悪戦苦闘しているうち見つけたのが、「ホダ塾」というサイトで提供している「ホダ塾ディストリビュージョン」である。最初から、サイト構築に必要そうなモジュールが組み込まれていて、XOOPS インストールと同時にモジュールまでインストールできる。少なくとも、わけもわからずモジュールを調べ回ったり捜したりバージョンの互換性を気にしたりといったことから開放される。あとは各モジュールを自分で試してみて、要らなければ削除していけばいい。(それから、インストール時に UTF-8 が選択できる点も、ありがたい。普通に Japanese としてインストールすると文字コードが EUC になってしまうのだが、やはり UTF-8 を使いたいじゃないか)
しかも「うさぎにもできるXOOPS Cube入門♪」というサイトがあって、こちらでは「ホダ塾ディストリビュージョン」のインストールから使い方の基礎まで解説してくれている。
新規インストールする場合、今後はこの2つのサイトを活用しようと思っている。
Tail-Lagoon @ 19:03
|
PageUp
2008/03/21(金)
※インデックス・テンプレートは、出力するファイル名が決まっている=1ページのみ作られるファイル用のテンプレート。つまり、新たに追加した場合、自分でファイル名を決定し、アクセス方法はそのファイル名にリンクすればよいということになる。
※これに対して、アーカイブ・テンプレートは、出力するファイル名が決まっていない=複数ページ作られるファイル用のテンプレート。テンプレートの種類と数は既にシステムで決められているので、新たにテンプレートを追加することはできない。既存テンプレートファイルの変更修正のみ可能。
※グローバル属性(どのMTタグにも使えるアトリビュート)
remove_html="1"
文字列からHTMLタグを取り除く
ex. あいうえお<br />かきくけこ → あいうえおかきくけこ
generate="1"
(現時点では不明。何かねこれ?)
※ <MTEntries> のソートに関する属性(アトリビュート)
sort_by
表示順の並べ替えを行うフィールドを指定。
オプション値は、title, status, modified_on, author_id, excerpt のいずれか。
(注 : この属性を記述しない場合は、投稿順ソートとなるため、
通常は無記述で構わない)
ex. sort_by="title"
sort_order
表示順の設定。ascend(昇順)もしくは descend(降順)。
ex. sort_order="ascend"
ex. <MTEntries sort_order="ascend">
※テンプレート・モジュールについては、ナレッジ・ベースよりもマニュアルページの方が詳しいようだ。ナレッジ・ベースでは掲載されているモジュール数が少ない。
※記事概要表示
ex. <$MTEntryExcerpt remove_html="1" encode_xml="1"$>
通常RSS出力で使用。特に概要記事を別に用意しない場合は、むしろ下記の方が良いか?
※記事本文表示
ex. <$MTEntryBody words="N"$>
記事本文をN文字分表示(かつ、HTMLタグは除去される)。全文を表示したい場合は属性不要。
Filed under: CMS | タグ: TypePad
Tail-Lagoon @ 02:00
|
PageUp
2008/03/14(金)
動的出力をするページで、時々、ドキュメントタイプ宣言(!DOCTYPE)より前──つまりソースの第1行──にHTMLコメント文などを出力するプログラムがあるが、これをやると Windows IE の描画がおかしくなることがある。
散々HTMLソースやらCSSをあちこち確認したあげく、原因がこれだとわかった時の虚脱感はなんともいえないものだ。
対策は、とりあえずプログラムの該当箇所をコメントアウトして何も出力させないようにするか、DOCTYPE より後になるように調整すれば済むことだけど、プログラム作者が自分じゃない場合などは、バージョンアップの際に元に戻ってしまったりして、しかもこちらもそんな対策をしたことなどすっかり忘れてしまってたりするから、思い出すまであれやこれやするはめになるのだ。
もし他にどこにも原因になりそうな箇所がないのに、どういうわけか WinIE で表示が変だという場合、ソースの第1行がどうなっているか見落としてはいけない。忘るべからず。
Filed under: ブラウザ | タグ: HTML, IE
Tail-Lagoon @ 20:01
|
PageUp
2008/03/12(水)
.htaccess ファイルを用いて、Webサーバ(Apach)における PHP その他の動作設定を変更することはよくあるが、大概サイト構築時の初期の段階において行い、あとは殆ど顧みることがないため、そのうちすっかり忘れてしまうものだ。そして毎回新しいサイトを作るたび、何だったっけ? と探し回るはめになるので、下記に記録。
DirectoryIndex sample.php index.php index.html
(先に記述したものほど表示の優先順位が上になる)
AddType application/x-httpd-php .html .htm
php_flag register_globals Off
php_flag track_vars On
php_flag display_errors Off
※ PHP の httpd オプションについては下記サイトに詳しい。
http://jamesthornton.com/php/japanese/configuration.directives.html
***
↓以下は、PHP じゃないけど、htaccess 関連としてついでに書いておくと
Options +Includes
AddType text/x-server-parsed-html .shtml .html .htm
(Options は SSI 実行可能領域を設定するのだが、もともと実行可なら必要なし)
※ httpd の設定に関する参考サイト
http://www.tagindex.com/other/htaccess.html
Filed under: Sample,Web Design | タグ: htaccess, PHP
Tail-Lagoon @ 16:03
|
PageUp