2010年12月18日土曜日

【PHP関連】改行文字を
タグに変える関数の使いどころについて

お疲れ様です。

何回も忘れるので備忘録します。

メールフォーム等で、ユーザが入力した項目を確認画面にて表示する場合、
Postされたデータだと、改行された文字データに
タグが入っていないため
改行されずに、続けて表示されてしまいます。
それを防ぐには、Postするデータにnl2br関数を通します。
この関数は改行コードをbrタグに変えてくれるので、確認画面でも改行されて
表示されます。

ただし、nl2b関数を通したデータをそのまま利用すると、
brタグまでも表示されますので
確認画面だけはnl2br関数を通す、という使い方がいいでしょう。

以上


2011.05.15追記
上記ですが
DBに登録する際は、特に処理をする必要はありません!!
DBには特に処理せずそのまま登録し
出力する際にDBから参照したデータにnl2br関数を通せば
出力時に改行されます。

なのでDB登録時はそのまま、出力時にnl2br関数を通すと覚えましょう。

以上

2010年11月26日金曜日

【PHP関連】文字列にある○文字目の表現方法について

お疲れ様です。

タイトルの件で詰まったことがありましたので
備忘録します。

例えば
$str = "ABCD";

とあった場合

echo $str[1];

とすれば、なんと"B"が表示されます!!

配列っぽいな~と思いますが、こういう書き方もあるということです><
(可読性についてはちょっと問題ですが・・・)

参考サイト:ありがとう。また会おう。様
■[PHP][ネタ]文字列中のn文字目にアクセスする方法
http://d.hatena.ne.jp/m_norii/20080818/1219066712

ありがとうございました。

以上

2010年11月18日木曜日

【VB関連】配列を宣言するには

お疲れ様です。

現在業務で、既にAccess97で作成されたシステムを分析しているのですが
そこで見慣れない変数定義箇所があり、詰まったので備忘録。

例)
Dim test(30,6) As Double

この宣言方法は配列を宣言しているとのことです。
この場合2次元配列になります。
始めは括弧の意味がわからず、四苦八苦してました(笑)

ちなみに、1次元配列は

Dim test(30) As Double

これでいけます。

ちなみにPHPと違って
添え字の数がプラス1されるのでご注意です。
例で宣言した


Dim test(30) As Double

この場合は test[0] ~ test[30] の31個の箱が用意されることになります。

以上です。

2010年11月1日月曜日

【CakePHP関連】メール送信のQdmalをヘルパーで利用するには

お疲れ様です。
CakePHPでメール送信のQdmalをヘルパーで利用する機会があったので
備忘録します。

その前に、「Qdmail」について
CakePHPでメール送信には、EmailComponentsなるものがあるようですが、
日本語だと文字化けを起こすようで、あまり使えないとのこと。
そこで登場するのが、「Qdmail」という非常に有益なメールクラスライブラリです。

このQdmailは通常のライブラリの一種ですが、
Cakephpのコンポーネントとしても利用が可能です。
また、外部SMTPにも対応しているようです。

PHP高機能日本語メール送信ライブラリ・文字化けフリー
Qdmail - PHP::Mail Library , Quick and Detailed for Multibyte
公式サイトhttp://hal456.net/qdmail/

それでは、CakePHPのヘルパーで利用する方法を紹介します。

コントローラー内で利用する方法
①まずは以下のディレクトリにQdmailファイルをアップロード
app/controllers/components/

②ヘルパー内でインスタンス化
App::import('Component','Qdmail');
$Qdmail = new QdmailComponent();

③各種設定
$Qdmail->to( 'address@example.com' , '日本語名' );
$Qdmail->subject('Qdmail on CakePHP メールのテスト');
$Qdmail->from('from@example.com' , '配信元日本語名' );
$Qdmail -> text( '本文をここにかきます' );
$Qdmail -> send();

以上です。

2010年9月26日日曜日

【CakePHP関連】CakePHPで携帯サイトを作る際の参考サイト

お疲れ様です。
Cakeで携帯サイトを作成する際の情報を検索していたら
いい参考サイトが見つかったので備忘録します。

sandmanの旅行の写真”とか”様
CakePHP その20 〜1.2RC2でPC&携帯対応サイトを考えた 〜 [CakePHP]
http://sand-man.blog.so-net.ne.jp/2008-09-11

参考になりますので
ぜひご覧くださいませ。

以上

2010年9月25日土曜日

【PHP関連】カンマ区切りで生成した文字列の最後のカンマを取り除く方法

お疲れ様です。
よく、カンマ区切りでデータを表示したりするのですが
最後にカンマが残る場合があります。
そのカンマを取り除く場合は

$str = trim ($str, ","); 
 
という方法で取り除けます。
ただしこれは、先頭にもカンマがある場合は
先頭のカンマも取り除いちゃいますので
 
A,B,C,D,
テスト,テスト1,
 
といった形式の文字列のみ有効です。
 
以上

2010年9月6日月曜日

【PHP関連】ヒアドキュメントについて

皆様お疲れ様です。
phpを触り始めて2年くらいなりますが
ヒアドキュメントというものを初めて知りました・・・
なので備忘録します。


ヒアドキュメントとは
HTMLと変数が混在した長い文字列を一度に出力
できる活気的なものらしいです。
使い方は
<<<(適当な文字列) から(適当な文字列):
という具合で例として

<<

この間がヒアドキュメント

test;
 ですね。

これは非常に便利ですね☆
以上

2010年8月26日木曜日

【PHP関連】配列をhiddenで渡す方法

備忘録します。

配列データそのものはhiddenで送ることができないようです。
なので、手順としては
1.送り先で配列をimplodeで文字列の変数に結合
2.受取り先で explodeで分解し配列に格納し直す。

でいけます。
まぁ、受け取り先で配列化する必要がなければ
分解したデータをそのまま利用してもよさそうですね☆

コーティング例

list" value="echo implode("\t",$args);?>">

hoge.php
$list = explode("\t",$_POST["list"]);


以上です。

参考サイト
http://www.phppro.jp/qa/586
PHPプロ!Q&A掲示板

ありがとうございます。

2010年8月25日水曜日

【PHP関連】数字の先頭に0をつけたい場合

通常数字は先頭に0なんかつけませんが
テキストデータとして受付番号等、0をつける必要性が出てくることがあります。
その方法です。

sprintf(整形後の文字列の書式,整形の対象となる文字列)
<例>
echo sprintf("%02d",1);
//出力結果 01
echo sprintf("%02d",10);
//出力結果 10
echo sprintf("%02d",123);
//出力結果 123
※「%2d」の「2」が数値の桁数。4桁の数値とする場合は、「4」を指定する。
echo sprintf("%04d",1);
//出力結果 0001
以上です。

2010年8月21日土曜日

【CakePHP関連】findメソッドの条件としてNOTを指定する場合

詰まったので備忘録します。

findメソッドでDBからデータをセレクトする際
条件式にNOTを指定する方法です。
書き方は
$member_list=$this->Member->find('list',array('conditions'=>'not role=2','fields'=>'name'));

ほぼ通常のSQL文と同じですね☆

以上

2010年8月16日月曜日

【CakePHP関連】連続でInsertする際の注意点

詰まったので備忘録します。

参考サイト
http://www.msng.info/archives/2008/02/cakephp_save_insert_update.php
ありがとうございました。

以上

2010年8月6日金曜日

【CakePHP関連】ajax->linkヘルパーの画像表示するには

詰まったので備忘録します。
Ajaxヘルパーの、Linkメソッドがありますが
画像リンクにしたい場合
第一引数に$this->html->image(画像ファイルパス,null)
のように画像を生成するメソッドを利用するだけでは
表示がエスケープされ、画像が表示されません。

表示させるには
Linkメソッドの第5引数をFalseにする必要があります。
これは第一引数の文字をエスケープしないようにしますので
タグが有効化され、うまく画像が表示されます。

参考サイト
http://q.hatena.ne.jp/1216385183
ありがとうございます。

以上です。

2010年7月22日木曜日

【CakePHP関連】ヘルパーによって生成したラジオボタンの初期値の設定方法

何気によく忘れるので備忘録します。

radioメソッドの第3引数に
array('value'=>'1')といった具合に指定してあげるといけます。

以上

2010年7月21日水曜日

【CakePHP関連】オリジナルレイアウトのタイトルを設定する際の注意事項

時間をつぶしてしまったので備忘録します。

CakePHPではオリジナルのレイアウトを設定できますが
その際にページタイトルを各コントローラーのアクションメソッドごとに設定ができます。
Webで調べてみると
$this->pageTitle で設定できます、的なことが書いてあったので
下記のように記述
$this->pageTitle('タイトル');

できませんでしたorz

正確には
$this->pageTitle = 'タイトル'; でした☆

また、ctpファイル(テンプレート的なもの)でもタイトルタグの間に
<?php echo $title_for_layout; ?>と書きましょう。
私はこれを<?php echo $title_for_Layout; ?>となぜか大文字で書いてしまい
またまたできませんでしたので・・・

まとめ
コントローラー内では
$this->pageTitle = 'タイトル';

ctpファイルでは
<?php echo $title_for_layout; ?>

以上です。

2010年7月15日木曜日

【CakePHP関連】findメソッドにてDISTINCTを利用するには

コントロール内でfindメソッドよりデータをセレクトする際に
Distinctを利用する方法です。

findメソッドの引数であるfieldsにdistinct (フィールド名)と記述するだけです。

便利ですね~~、CakePHP☆

2010年7月10日土曜日

【CakePHP関連】自前のSQL文を実行するには

CakePHPにはfindメソッドに代表されるように
ある程度SQL文を書かなくても、SQL文を発行できるようになっていますが
かなり細かく指定する際は直接記入した方がいい場合もあります。

そこで、方法が無いか調べてみると有益な情報がありました。

findBySqlメソッドを利用する

単純に findBySql($Sql)で
$Sql=Select~~

でいけるみたいです。

~2010.07.21追記~
上記方法ですが・・・どうやら間違いのようです!!

正しくはqueryメソッドを利用する のが正解のようです・・・
お詫びして訂正いたします。m(__)m

2010年7月9日金曜日

【CakePHP関連】ajaxヘルパーのobserveFieldメソッドについて

ajaxヘルパーのひとつであるobserveFieldメソッドですが
監視するフィールドと、更新したいdivのidを同じにすると動きません・・・


今考えれば当たり前なのかもしれませんが、時間を潰してしまったので
備忘録します。

2010年7月6日火曜日

【CakePHP関連】コントロール内で処理を抜ける方法

通常ですと
exitを利用しますが
Cake流の書き方があるのかなと気になって調査しました・・・が、
特に無いようです。

普通に
exit();

でいけるっぽいです。

情報が入り次第更新したいと思います。

2010年7月3日土曜日

【CakePHP関連】ヘルパー内で別のヘルパーを利用する方法

カレンダーヘルパーを自作していますが
Ajax的な動きが必要なので、Ajaxヘルパーを利用するため調べました。

やり方は

$helpersメンバ変数を用意するだけ

意外とあっさりいけました。
今回の例で行くと

public $helpers = array('html','javascript','ajax');

これでいけます。
ただし注意点として
「読み込まれるヘルパーのインスタンスは$this内のメンバ変数になる」
ということです。
なので使用するときは

「$this->ajax->~~~」

って感じになります。

【PHP関連】連想配列からキーの値を取得する

連想配列から、キーの値のみを取得したいことがあったのでGoogle先生に聞いてみると
以下のサイトより情報を頂きました。

初心者のPHP入門
http://php.quus.net/

ありがとうございます。

http://php.quus.net/array/key.php

key-配列関数:キーを取得

key関数は連想配列からキーを取得してそのキー返す関数です。
以下にkey関数の使用例を示します。
//key (配列);

$ar = array("PHP" => "PHP5", "CGI" => "PERL");
// ① //
echo key($ar);

next($ar);

// ② //

echo key($ar);
in_array関数は現在位置の要素のキーを返します。
したがって、①では一番最初の配列要素のキーである PHP が返されます。

②はnext関数によって内部配列ポインタが次に進められている為、連想配列のキー CGI が 返されます。

忘れないために備忘録しておきます。