プログラミングで飯を食え。腕をあげたきゃ備忘録!

PHP、JavaScript、HTML5、CSS3などWEB系言語を中心に基本テク、備忘録をまとめます。Android、Iphoneアプリ開発についても!

PHPでテキストファイルを簡易データベースとして使用するTextDbクラス公開!updateBase($form)

サクウェブTVはコチラ↓↓↓
サクウェブTV

レコードの更新は前の記事で説明したsave($arr)でも行うことができますが、特定のidの特定のカラムをサッと更新するなら処理はupdateBase($form)の方が早いです。

では、updateBase($form)の使い方を説明します。

今、

f:id:senoway:20130804160245j:plain

このディレクトリ構成で、index.php

require_once 'TextDb.php';
$c_fields = array("id","name","address");
$c_db = new TextDb("tbl/customer.txt","::",$c_fields);

$i_fields = array("id","name","customer_id");
$i_db = new TextDb("tbl/item.txt","::",$i_fields);

と記述してあるとして、customer.txtに

tablename::customer
id::name::address
1::yamada::tokyo
2::tanaka::osaka
3::suzuki::kyoto
4::sato::tokyo
5::sasaki::tokyo

このようなレコードがあるとき、

例えば「idが5のレコードのaddressカラムをkyotoに更新」

してみましょう。

updateBase($form)は

引数$formに以下のような配列を指定して実行することで更新します。

$form = array(
    "ID.カラム名"=>値,
    "ID.カラム名"=>値,
    "ID.カラム名"=>値,
    ・・・・・
    ・・・
    ・
);

ですので、上記の更新を行うには以下のような記述になります。

$form = array(
    "5.address"=>"kyoto"
);

$c_db->updateBase($form);

実行してみると、

tablename::customer
id::name::address
1::yamada::tokyo
2::tanaka::osaka
3::suzuki::kyoto
4::sato::tokyo
5::sasaki::kyoto

このように更新できます。

save($arr)でも更新できるのにどうしてこの関数があるかというと・・・

フォーム要素から更新を行う際に便利だからです。

例えば、以下のようなフォームを送信した場合、

<form action="index.php" method="post">
<input type="text" name="5.name" />
<input type="text" name="5.address" />
<input type="submit" value="送信" />
</form>

受け取れるデータは、

$_POST = array(
    "5.name"=>入力された値,
    "5.address"=>入力された値
);

のような形をとりますので、inputのnameにきちんと名前をつけておけば、

エスケープ処理ぐらいはして、そのままupdateBase($form)に設定するだけで更新できます。

関数名説明
get()

テーブルの全レコードを取得する。 

find($conditions = array()) 

検索条件を指定してレコードを取得する。

引数がない場合はget()と同じ動作をする。

 findJoin($join,$con1=array(),$con2=array())

テーブルを結合して

指定条件に合致したレコードを取得する。 

save($arr) 

レコードを追加または更新する。

引数の配列にidが指定されている場合は、

そのidのレコードを更新する。idがない場合は追加する。 

updateBase($form)  特定のレコードの特定のカラムを更新する。 
updateAll($arr,$conditions) 

指定した条件に合ったレコードの指定カラムを

一括更新する。 

delete($id)  指定したidのレコードを削除する。 
deleteAll($conditions) 

指定した条件に合ったレコードを

一括削除する。 

getLastId()  最後のレコードのidを数値で取得する。