HOME > 簡易データベースを作ってみよう > 

§CSVへの書き込み

送信されたデータをCSVに書き込むプログラムです。

文字列を整形してから書き込む。

"フォームから送信された文字列には、そのままでは使えない文字が含まれる可能性があります。
また、改行を自動的に<br>に置き換えられたら便利ですね。
これら一連の処理は、繰り返し使いますので自作関数にまとめておきましょう。

function ShapeStr($Str‚ $Br‚ $Esc){
$Str=str_replace(""‚ ""‚ """"‚ $Str);//解説(1)
if($Br==1){
$Str=nl2br($Str); //解説(2)
}
$Str=str_replace(""\n""‚ """"‚ $Str);
$Str=str_replace(""\r""‚ """"‚ $Str);
return $Str;//解説(3)
}

解説(1)
CSVファイル内では区切り文字として以外に「カンマ」は使えませんので削除します。
解説(2)
第二引数に「1」を指定したときは改行コードを<br />に置き換えます。
nl2br関数は文字列内の改行コード「\n \r」の前に<br />を自動的に挿入します。
挿入するだけで削除はされませんので、処理の後str_replace関数で改行コードを削除します。
解説(3)
返り値は処理後の文字列です。

次に登録するデータにIDを指定します。
IDは他のデータのIDと重複してはいけません。
item.csvに登録されているIDをすべて調べて一番大きい数字に「1」を足したものを新しいIDとします。

$ID=0; //解説(4)
$Data=file(""item.csv"");
for($i=0;$i<sizeof($Data);$i++){
$line=explode(""‚ ""‚ $Data[$i]);
if($line[0]>=$ID) //解説(5)
$ID=$line[0]+1;
}

解説(4)
新しいIDを「0」としてitem.csvに登録されたIDと比較していきます。
解説(5)
登録済みIDが$IDより大きいまたは同じ場合、登録済みIDに1を足した数字に入れ替えます。
いちいち比較して入れ替えるという作業は一見遠回りな気もしますが、こうしておくことで仮にCSVをローカルで操作してIDの順番が入れ替わった場合なども対応できるようになります。

ここから受け取ったデータの処理です。
$Cat=$_POST['cat'];
$ImageLink=ShapeStr($_POST[""image""]‚ 0); //解説(6)
$TextLink=ShapeStr($_POST[""text""]‚ 0);
$Comment=ShapeStr($_POST[""comment""]‚ 1);
$Price=ShapeStr($_POST[""price""]‚ 0);
//データを連結する。
$lines=array($ID‚ $Cat‚ $ImageLink‚ $TextLink‚ $Price‚ $Comment‚ """"‚ """"‚ """"‚ ""1""); //解説(7)
$lines=implode(""‚ ""‚ $lines);
$lines=$lines.""\n"";
//CSVファイルに書き込み
$fp=fopen(""item.csv""‚ ""a""); //解説(8)
flock($fp‚ LOCK_EX);
fputs($fp‚ $lines);
fclose($fp);

解説(6)
自作関数「ShapeStr」をつかってPOSTで受けとった文字列をそれぞれ処理します。
解説(7)
CSVファイルに書き込むには「カンマで区切られた1行の文字列」にしなければいけません。
implode関数は配列を文字列に変換する関数です。explode関数とまったく逆ですね。

implode(区切り文字‚ 配列)

データを一旦配列に収めimplode関数で文字列に変換するようにしておくと後でデータを追加する場合など間違いが少なくなります。
配列の後半に「‚ """"‚ """"‚ """"‚ ""1""」とありますが、これは後でフィールドを追加したくなったときのための予備です。
特になくても構いません。また「1」という数字に意味はありません。

解説(8)
item.csvを書き込みモードで開きます。「a」に指定するとポインタを最後尾に置きます。
書き込み処理中はflock関数で他者が読み書きできないようにしておきます。

前ページのフォームとこれらを組み合わせれば登録画面の完成です。
実際の運用には入室制限などのセキュリティーが必要です。
認証のプログラムはこちらで解説しています。
"

簡易データベースを作ってみよう

  1. 仕組みとファイル構成
  2. CSVとは
  3. トップページを作る
  4. カテゴリー別ページを作る
  5. アイテム別ページを作る
  6. フリーワード検索を作る
  7. 検索結果がゼロの場合の処理
  8. 絞込み検索(and検索)
  9. 1ページを10件表示に制限する
  10. 登録画面を作る。
  11. CSVへの書き込み
  12. データを編集する。
  13. データを削除する。

メイン・メニュー

  1. はじめに
  2. 入門者向け参考書
  3. PHPの基本
  4. ローテーション・バナーを作ってみよう
  5. 検索結果リンクを自動化しよう
  6. 簡易データベースを作ってみよう
  7. ホームページ制作のためのリンク集

PHPが使えるサーバー

僕が使っているサーバーです。

エックスサーバー
多くのアフィリエイターが支持するレンタルサーバー。
当サイトでも使用しています。

管理人のブログ

音楽サイトでアフィリエイトblog
音楽アフィリエイトとサイト運営の効率化を考えるブログ