PHPでテキストファイルを簡易データベースとして使用するTextDbクラス公開!updateBase($form)
レコードの更新は前の記事で説明したsave($arr)でも行うことができますが、特定のidの特定のカラムをサッと更新するなら処理はupdateBase($form)の方が早いです。
では、updateBase($form)の使い方を説明します。
今、
このディレクトリ構成で、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を数値で取得する。 |