Fuelphp:Uriクラスを使用し、URLのセグメントを取得

FuelphpURLセグメントを利用し、処理を変更したり判断させたりすることをすることが多くあります。
Uriクラスを使用すれば簡単にURLセグメントを取得することが可能です。

今回はFuelphpUriクラスを使用して、URLセグメント情報を取得する方法をメモします。


segment()

引数で指定した番号のセグメントを取得します。
セグメントがない場合はfalseを返します。

Uri::segment(セグメント番号, デフォルト値);

使用方法

「http://www.example.com/test/hoge/」でアクセスした場合

$str = Uri::segment(2);
var_dump($str);

2つ目のセグメントを取得することができます。

string(4) "hoge"

segments()

URLの全てのセグメントを配列で取得します。

Uri::segments();

使用方法

「http://www.example.com/test/hoge/」でアクセスした場合

$arr = Uri::segments();
var_dump($arr);

セグメントを配列で取得することができます。

array(2) { [0]=> string(4) "test" [1]=> string(4) "hoge" }

「/fuel/app/config/routes.php」で「(:num)」や「(:any)」などで指定した場合、セグメントの情報によってデータを取得したり、処理を変更したりなど色々な使い方ができると思います。

MySQL:MySQLの基本的な構文の書き方

MySQLSQL文を直接書くときがあります。
データベースで直接操作したり、phpなどのシステム内でもSQL文を直接記述し、データを取得する場合があります。

いつも忘れてしますので、MySQL基本的構文の書き方をメモします。


MySQL 構文

SELECT

指定したテーブルのデータを検索、取得します。
*(アスタリスク)で指定した場合、全てのフィールドのデータを取得します。

・全てのフィールドの値を取得する場合

SELECT * FROM テーブル WHERE 条件式 AND 条件式;

・取得するフィールドを指定する場合

SELECT フィールド1, フィールド2, フィールド3 FROM テーブル WHERE 条件式 AND 条件式;

INSERT

指定したテーブルにデータを追加します。

INSERT INTO テーブル (フィールド1, フィールド2, フィールド3) VALUES (フィールド1の値, フィールド2の値, フィールド3の値);

UPDATE

条件式で一致したデータを更新します。

UPDATE テーブル SET フィールド = 値, フィールド = 値 WHERE 条件式 AND 条件式;

DELETE

条件式で一致したデータを削除します。

DELETE FROM テーブル WHERE 条件式 AND 条件式;

MySQL:サブクエリを使用したデータ取得

MySQLサブクエリを使用してデータを取得することがあります。

複雑な仕様のデータベースや複数のテーブルが紐づいていたりなど、サブクエリを使用すると簡単に値を取得できることがあります。

今回はMySQLサブクエリを使用してデータを取得する際の基本的な方法をメモします。


サブクエリ

サブクエリは副問合せとも言います。
SELECTで取得した値を別のSQL文のSELECT句やWHERE句などで使用します。
一つのSQL文の中にもう一つのSELECT文があるイメージです。
サブクエリは()で囲って使用します。

SELECT
 フィールド 
FROM
 テーブル 
WHERE
 フィールド 演算子 (SELECT フィールド FROM テーブル WHERE フィールド 演算子 値)
;

サブクエリの使用方法

userテーブルのtestという名前のidを取得して、
取得したユーザのアイテムデータを取得する場合

DB

・userテーブル

id name
1 hoge
2 test
3 sample

・itemテーブル

id user_id item_name
1 1 りんご
2 2 いちご
3 2 ぶどう
4 1 ぶどう
5 3 りんご

SQL

SELECT * FROM item WHERE user_id = (SELECT id FROM user WHERE name = 'test');

itemテーブルのidが2と3のレコードを取得することができます。


他のテーブルから値を持ってきて、取得した値を条件に使いたい時などに便利です。

CSS:CSSで簡単なツールチップを作成する方法

CSSだけで簡単なツールチップを作成しました。

WEBサイト内の説明を書く場合などにツールチップを利用することがあります。
管理画面などでは項目ごとにどのような機能かを説明したりと便利です。

jQueryなどでもツールチップを作成することができますが、
今回はCSSのみで簡単なツールチップ吹き出し)を作成する方法をメモします。


CSSでツールチップ(吹き出し)を作成

・テキストリンクにツールチップを付ける場合

CSS

<style type="text/css">
a.tooltip span {
    display: none;
    width: 200px;
    padding: 5px;
    margin: 10px 0 0 -10px;
}
a.tooltip:hover span{
    display: inline; 
    position: absolute; 
    border: 1px solid #CCC; 
    border-radius: 5px;
    background: #F7F7F7;
    color: #666;
    font-size: 12px;
    line-height: 1.6em;
}
</style>

HTML

<a href="#" class="tooltip">
テキストリンク<span>説明を書きます。<br />説明を書きます。説明を書きます。</span>
</a>

表示例

css_tooltip_1


・画像にツールチップを付ける場合

CSS

<style type="text/css">
a.tooltip span {
    display: none;
    width: 200px;
    padding: 5px;
    margin: 10px 0 0 -10px;
}
a.tooltip:hover span{
    display: inline; 
    position: absolute; 
    border: 1px solid #CCC; 
    border-radius: 5px;
    background: #F7F7F7;
    color: #666;
    font-size: 12px;
    line-height: 1.6em;
}
</style>

HTML

<a href="#" class="tooltip">
<img src="hatena.jpg" /><span>説明を書きます。<br />説明を書きます。説明を書きます。</span>
</a>

表示例

css_tooltip_2


jQuery:setTimeoutを使用してHTMLや画像を遅らせて出力

HTMLで画像や出力データをアクセス時より遅らせて出力したり、処理をしたりしたい場合があります。

jQuerysetTimeoutを使用すれば、指定した時間の後に出力させることが可能です。


setTimeout

指定した時間(秒数)の後に処理を実行します。

$(function(){
	setTimeout(function(){
		// 処理を記載
	}, 2000);
});

setTimeoutの使用例

jQuery

1秒後に処理を実行します。

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
<script type="text/javascript">
$(function(){

    var str = '遅らせて出力する内容';

    // 1秒後に出力する
    setTimeout(function(){
        $('.output').append(str);
    }, 1000);

});
</script>

HTML

出力したい場所に下記のコードを記述します。

<div class="output"></div>

指定した時間の後に処理を実行できるので、重い画像や複雑な処理をするときなどに便利だと思います。