pagetop

BLOG

PHPでCSVデータの消し込みをする

  • HOME

  • BLOG

  • PHPでCSVデータの消し込みをする

Article

PHPでCSVデータの消し込みをする

PHP

先日、クライアントから「くじ引きキャンペーンを予定しているが、その際のプレゼントがクーポンコードでエクセルにリストアップした1行1クーポンコードを順番にプレゼントしたい。」とご相談がありました。
くじ引きのプログラムはおいといて…、当たりがでたら(当たりページが表示されたら)エクセルのクーポンコードをどう管理するかということでメモです。

 

まず必要な事

1:エクセルをCSVにコンバートしcode.csvを作成する
2:当たりがでたら、上から順番にクーポンコードを消し込む
3:消し込んだら、行を上に移動する

 

こんな感じ。

code.csvを作成する

コンバートの方法はそれぞれなので省略するとして、以下の様な内容のCSVデータを作成する。
1111111111
2222222222
3333333333
4444444444


消し込みプログラムを書く

tousen.phpを用意しプログラムは以下のように記述。
CSVデータの中身をみる変数は$codeにする

$id_url = $_GET['id'];
//消し込み
$fp = fopen("csv/data.csv", "r+");
if (flock($fp, LOCK_EX)) { // 排他的ロックを行う
while (($data = fgetcsv($fp, 1024))!==FALSE) {
list($code) = $data;
if($id_url != $code){
$wk[] = "$code\n";
}
}
ftruncate ($fp, 0);//中味の削除
rewind($fp); //ポインタのリセット(巻き戻し)
foreach($wk as $data){
fwrite($fp, $data);
}
flock($fp, LOCK_UN); // ロックを解放する
} else {
echo "Couldn't lock the file !";
}
fclose($fp);

以下で該当ファイルの読み込みと書き込みを行う
$fp = fopen(“csv/data.csv”, “r+”);

 

if($id_url != $code){
部分の$id_urlはidtというGET引数としてクーポンコードが代入され、$codeとマッチングしています。
https://www.example.com/tousen.php?id=1111111111
つまり、消し込むクーポンコードをここで判断します。

あとは、消し込みし行を上に移動するプログラムです。
ざっくりだな〜

サーバーにアップロード

ファイルが用意できたら以下のディレクトリでサーバーにアップロードして動作確認
tousen.php
csv
|_data.csv

以下にアクセス。
https://www.example.com/tousen.php?id=1111111111
それでdata.csvの1111111111が消え2222222222が最上部にあればOKです。

Spread the love