PHPを学ぼう!

▼PHPを学ぶチャプターです。


SMS付き2Gは、900円。
通話付きは、1600円。

 

素材メニュー

 ◆Chapter 1

 ◆Chapter 2

 ◆Chapter 3

 ◆Chapter 4

 

制作ヒント

 ◆制作のヒント

 

レッスンメニュー

 ◆Chapter2 練習問題

 ◆Chapter3 DB練習問題

 

サイト運営者がPHPを学んだ
お勧めの書籍です!
これ一冊で基本的なPHPの仕組み、簡単なプログラムの作成、SQLiteを使ったデータベースなどかなり学べる要素が詰まっています!

↓↓↓ ↓↓↓

PHPレッスンブック―PHP5対応

新品価格
¥2,520から
(2013/2/24 04:38時点)

 

 

サイバーテロの技法について書かれた書籍です!
ハッカーの手法を知ることでご自身のサイトがハッカーに攻撃されたときそれを防ぐ手法を紹介しています。

↓↓↓ ↓↓↓

PHPサイバーテロの技法―攻撃と防御の実際

新品価格
¥1,890から
(2013/11/5 10:09時点)

 

 

★初年度100円! サブドメインやメールアカウントを無制限に設置できます。
PHPやCGIは勿論、WordPress、Movable Type Open Source、掲示板、ブログ、ショッピングサイトなどが簡単に導入できるので複数サイトを運営したい場合に便利なサービスです。

↓↓↓ ↓↓↓

 

PHPが動作するサーバー

 

はじめてのHP | 無料素材 | タグ辞典 | CSSガイドEX | PHPを学ぼう!

◆Tip17 - 配列をそのまま(シリアライズ)保存する

配列の値をシリアライズして保存しておきたい場合があります。
シリアライズとは配列の形、値をそのまま保存できる仕組みのことで "serialize" 関数で保存し、"unserialize" 関数で読み込むことができます。

 

データベースに並び替えや検索する必要がない値の場合は、配列を文字列としてカラムに保存することができるのです。
通常はデータベースは 1 カラムにつき 1 つのデータを格納します。
配列を格納するイメージ

 

例えばショッピングサイトを運営する場合、会員情報は次のようなものが考えられます。

  • 氏 名
  • よ み
  • 性 別
  • 年 齢
  • 住 所
  • 電話番号
  • 携帯番号

 

この内容なら普通にカラムに値を入れてあげた方がデータベースとしては利用しやすいと思います。
この中で配列として保存したいとするなら、電話番号と携帯番号というところでしょうか・・・。
シリアライズして保存するとカラムは1つ減らすことができます。
しかしこれでは検索が出来なくなってしまいますのでどちらが便利か判断がつきますよね。
セッション情報などをシリアライズして使うことがあるそうです・・・。

 

では販売する商品について考えてみましょう。
商品情報としては次のようなものが考えられます。

  • 商 品
  • 価 格
  • 個 数
  • カテゴリ

 

商品、価格、個数については直接カラムに値を入れてあげた方がいいでしょう。
カテゴリは、例えば食べ物であれば「食品」と入れるところでしょうか?

 

しかしこれでは大まか過ぎますね・・・。
アイテム数が多くなれば細分化されたカテゴリに区別してあげた方が目的の商品が探しやすくなります。
工夫ができそうですね!

 

ショッピングサイトをご覧になるとわかると思いますが、商品カテゴリは大まかな区分、該当区分に分かれていることに気がつきます。
食品と本のカテゴリでイメージしてみました。

■カテゴリ
  ├ 食品
    ├ 肉、肉加工品
    ├ 魚介類・海産物
    ├ 野菜
    ├ 米・雑穀
    ├ 惣菜・調理品
    ├ フルーツ
    └ スイーツ・洋菓子
  └ 本
    ├ コミック、アニメ
    ├ 雑誌
    ├ 写真集
    ├ ビジネス、経済
    └ その他

 

このイメージを変数 "$cate" に配列してみると次のとおりになります。

$cate[0][0] = "食品";
$cate[0][1] = "肉、肉加工品";
$cate[0][2] = "食品-魚介類・海産物";
$cate[0][3] = "野菜";
$cate[0][4] = "米・雑穀";
$cate[0][5] = "惣菜・調理品";
$cate[0][6] = "フルーツ";
$cate[0][7] = "スイーツ・洋菓子";

$cate[1][0] = "本";
$cate[1][1] = "コミック、アニメ";
$cate[1][2] = "雑誌";
$cate[1][3] = "写真集";
$cate[1][4] = "ビジネス、経済";
$cate[1][5] = "文芸";

"$cate[*][0]" は大まかな区分であるところがミソです。
こうすることで例えば、

echo "[カテゴリ]<br />";
echo $cate[1][0]." - ".$cate[1][3];

とした場合、

[カテゴリ]
本 - 写真集

と書き出すことができます。
キーがそのままカテゴリを特定する数字になるので書き出しも簡単です。

 

この配列をシリアライズしてファイル名を "category.dat" として保存するには serialize 関数を使います。
ファイル拡張子は "txt"、"log" など任意のものでかまいません。

//配列の中身をファイルに保存
file_put_contents("category.dat", serialize($cate));

逆にシリアライズされたファイルを読み込むには、unserialize 関数を使います。

//配列をファイルから読み込み
$cateArray = unserialize(file_get_contents("category.dat"));

 

ではデータベースにカテゴリの情報を保存するようにするにはどうしたらよいでしょうか?
データベースに大まかなカテゴリと該当カテゴリのカラムを追加すればよいでしょう。
配列を格納するイメージ

 

これで大まかなカテゴリ、該当カテゴリの分類ができますし、データベースでカテゴリ検索もできます。

 

では複数カテゴリの場合はどうでしょうか?
例えば、"ビジネスマンガ"の商品が存在するのなら本のカテゴリは "コミック、アニメ" と "ビジネス、経済" の二つのカテゴリになるでしょう。
複数カテゴリの場合にはそれに対応した仕組みを考えてあげます。
以下はそのカテゴリーのイメージです。
配列を格納するイメージ

前者のイメージは、登録するカテゴリが増えれば増えるほどカテゴリのカラムを増やしていかなければなりません。
はじめから登録できるカテゴリ数を限定しておけばデータベースのカラムを追加する必要はないのですが、そうでなければ関連するプログラムの修正に手間を取られることになります。
後者はカテゴリのカラムは一つだけです。
このケースの場合、格納するカテゴリは制限なく格納することができます。
格納する値は、"1-1,1-4"、"1_1<>1_4" などと判別しやすい任意のものを入れておけば、データの呼び出しや加工もしやすくなるでしょう。

 

データベースと配列ファイルを分ければ便利に使えるのです。
工夫次第で配列ファイルは便利に使えるのです。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ex-mode.net | ツールEX | 素材EX | アフィモール | 初級者向 初めてのホームページ作り | Htmlタグ辞典 | 初めてのプランター菜園 | リンク・ボード
気のみ気のままなブログ | CSSガイドEX | ホビ★コレ | 班長日記!

▲UP

Copyright (C) ex-mode.net 2017. All Rights Reserved.