Codeigniter:インサートした行のIDを取得

Codeigniterデータベースに行を挿入する時は、「$this->db->insert()」を使用します。
データを挿入する場合は、下記のようにテーブル名とデータ配列を設定し実行します。

$this->db->insert('table', $data);

「$this->db->insert()」を実行後に挿入した行のIDを取得したい場合があります。

ID取得する場合は、クエリヘルパーメソッドの「$this->db->insert_id()」を使用すると、
データベースインサートした行のIDを取得することができます。


$this->db->insert_id()

データベースに挿入した行のIDを取得します。


インサートした行のIDを取得

インサートを行った後に「$this->db->insert_id()」記述します。

$data = array(
	'name' = 'テスト',
	'address' = '東京都',
	'tel' = '000-0000-0000'
);

$this->db->insert('table', $data);

$id = $this->db->insert_id();

「$id」に挿入した行のIDが格納されるので、IDを取得することができます。


PHP:strip_tagsを使用してHTMLタグを削除する

HTMLPHPで記述している文字列をタグ削除して、テキストで出力したい場合があります。
strip_tags関数を使用すれば、タグを取り除いて出力することが可能です。

また、特定のタグを許可することもできます。

phpstrip_tags関数を使用して、HTMLソースのタグ削除し、テキストで出力する方法をメモします。


strip_tagsを使用してHTMLタグを削除

HTMLタグを含む文字列を出力した場合、下記のように出力されます。

$html_body = 'テスト<br><p>テスト</p><strong>テスト</strong>';
echo $html_body;

strip_tags1


strip_tagsを使用して出力した場合は、HTMLタグが除去されて出力されます。

$html_body = 'テスト<br><p>テスト</p><strong>テスト</strong>';
$html_body = strip_tags($html_body);
echo $html_body;

strip_tags2


brタグ、strongタグを許可して、その他のHTMLタグを除去して出力した場合は下記のように出力されます。

$html_body = 'テスト<br><p>テスト</p><strong>テスト</strong>';
$html_body = strip_tags($html_body, '<br><strong>');
echo $html_body;

strip_tags3


PHP:文字列を指定した文字数で出力する

phpで変数に格納している文字列を出力する際に、指定した文字数を超えたら「…」などで表示したい場合があります。
サイトのトップページや一覧ページなど、表示する文字数が決まっている場合に使用することが多いと思います。

mb_strimwidthを使用すれば、文字列の長さを調節することができます。

mb_strimwidthを使用して、文字列指定した文字数出力する方法をメモします。


文字列を指定した文字数で出力(mb_strimwidth)

・半角文字列の場合

$str = '0123456789';
$str = mb_strimwidth($str, 0, 7, '…', 'UTF-8');
echo $str;

【出力結果】

012345…

・全角文字列の場合

$str = 'あいうえお';
$str = mb_strimwidth($str, 0, 7, '…', 'UTF-8');
echo $str;

【出力結果】

あいう…

半角文字を1文字、全角文字を2文字として扱います。
また、追加した文字も文字数に数えます。

Fuelphp:Fuelphpでcoreクラスを拡張する方法

フレームワークを使用してシステムを開発しているとコアクラスを変更したり、処理を追加したい場合があります。
あまりコアクラスは変更したくないので、コアクラスを拡張して処理を記述します。

今回はFuelphpcoreクラス拡張し、処理を追加したり、オーバーライドする方法をメモします。


Fuelphpでcoreクラスを拡張する

Paginationクラスを拡張する場合、「fuel/app/classes」の直下に「pagination.php」を作成します。
作成した「pagination.php」に処理を追加したり、オーバーライドしたい処理を記述します。
※「fuel/core/classes/pagination.php」をオーバーライドします。

<?php

class Pagination extends Fuel\Core\Pagination
{
    // 処理を記述

}

処理を記述したら、「fuel/app/bootstrap.php」を下記のように編集します。
作成した「pagination.php」を読み込むように記述します。

Autoloader::add_classes(array(
	// Add classes you want to override here
	// Example: 'View' => APPPATH.'classes/view.php',
	'Pagination' => APPPATH.'classes/pagination.php',
));

「bootstrap.php」に拡張したクラスを追加すれば、拡張した処理を使用することができます。


Fuelphp:日本語のエラーメッセージを設定する

FuelphpValidationクラスを使用し、エラーを出力した際にエラーメッセージ日本語で出力する方法をメモします。
最初の設定では英語で表示されるので。

エラーメッセージは日本語で出力することが多いと思うので、最初に設定してると実装しやすくなると思います。

また、エラーメッセージを個別に設定して、設定ファイルの内容を上書きする方法をメモします。


日本語のエラーメッセージを設定

設定ファイルで日本語のファイルを読み込むように設定します。
「fuel/app/config/config.php」の「language」の箇所を「ja」に変更します。

    /**
     * Localization & internationalization settings
     */
    'language'           => 'ja', // Default language
    'language_fallback'  => 'en', // Fallback language when file isn't available for default language
    'locale'             => 'ja_JP.utf8', // PHP set_locale() setting, null to not set

    'encoding'  => 'UTF-8',

日本語のエラーメッセージファイルを設定します。
「fuel/app/lang/ja/validation.php」を作成し、日本語のエラーメッセージを記述します。
※エラーメッセージは出力したい内容に変更してOKです。

<?php

return array(
    'required'      => ':label は必須入力です。',
    'min_length'    => ':label は、:param:1 文字以上で入力して下さい。',
    'max_length'    => ':label は、:param:1 文字以下で入力して下さい。',
    'exact_length'  => ':label は、:param:1 文字で入力して下さい。',
    'match_value'   => ':label は、使用できない文字が含まれています。使用可能な文字 [:param:1] ',
    'match_pattern' => ':label は、:param:2で入力して下さい。',
    'match_field'   => ':label は、:param:1 と異なっています。',
    'valid_email'   => ':label は メールの形式で入力して下さい。',
    'valid_emails'  => ':label に、有効でないメールアドレスが含まれています。',
    'valid_url'     => ':label は、有効なURLではありません。',
    'valid_ip'      => ':label は、有効なIPアドレスではありません。',
    'numeric_min'   => ':label には、:param:1 より大きい数値を入力して下さい。',
    'numeric_max'   => ':label には、:param:1 より小さい数値を入力して下さい。',
    'valid_string'  => ':labelは:param:2で入力してください。',
);

上記の設定が完了したら、設定したエラーメッセージで出力されます。

fuelphp_error1

個別に設定する場合は「set_message()」を使用して設定します。

$validation = \Validation::forge();

$validation->set_message('required', ':label は必ず入力してください。');

$validation->add('name', 'name')
    ->add_rule('trim')
    ->add_rule('required');

エラーメッセージが「set_message()」で指定した内容で出力されます。