ホームページ作成の小技-BreathTake-

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

--------(--) --:-- スポンサー広告 編集 |

SQLサーバーを使わずCSVファイルに登録する形式のデータベース

>>完成版はこちら
SQLサーバーを使わずCSVファイルに登録する形式のデータベースを作成する為には、下記のようなプログラムが基本となります。
■データをCSVファイルに書き込む
①入力データをコンマ区切りの配列にする
②配列を一行毎にテキストファイルに書き込む
<?PHP
// CSVファイル名
$file_name = "test.csv";
// CSVファイルで保存するデータ
$id = 999;
$name = "岡田";
$point = 90;
// 3つの変数から配列を作成する
$array = compact("id", "name", "point");
// 配列のデータをカンマで区切って結合する
$string = implode(",", $array);
// 結合された文字列を侮ヲする
echo "<p>CSVファイルにセットされるデータ:".$string;
// ファイルを追記モードで開く
$file = fopen($file_name, "a") or die("OPENエラー $file_name");
// ファイルをロックする
flock($file, LOCK_EX);
// データを書き込む
fputs($file, $string."");
// ロックを解除する
flock($file, LOCK_UN);
// ファイルを閉じる
fclose($file);
?>

■書きこんだデータを表示する
<?PHP
// ファイル名
$fname = "test.csv";
// ファイルを開く
$file = fopen($fname, "r");
// 全データを出力する
while (list($id, $name, $point) = fgetcsv($file, 1000, ",")) {
    echo "<hr>";
    echo "<br>ID:".$id;
    echo "<br>名前:".$name;
    echo "<br>点数:".$point;
}
// ファイルを閉じる
fclose($file);
?>

これをアレンジして新規登録・登録修正・削除出来るものを作成していたのですが、作成したプログラムを見なおしていたら、「岡田」が表示されなくなっていました。
1週間ほど悩み、なんとか表示出来るようになりましたので、その経過報告です。
①文字コードの問題かと思い、強制的に文字コードを指定してみたけれど駄目
②$file = fopen($file_name, "a") or die("OPENエラー $file_name");
の部分の「a」に、
text-mode変換フラグ('t')を付加
バイナリモ-ドで開く('b')を付加
してみたけれど駄目
③データの書きこみ時に、「a岡田」と書いてやると、読み込み時に「a岡田」と表示される。
データ書き込みで、入力データの先頭に、強制的に「a」の文字を付加してやり、読み込み時に、二番目からの文字を読み込むようにする。
…これで、一応、解決はしたのですが、どうもすっきりしません。
④良く雛型のプログラムを見たら、2バイトコードのデータは「"」で囲まれていることに気づき、それを付加してやることで解決しました。
$id = 999;
$name = "岡田";
$point = 90;
初歩的なミスすぎるのか、ネットで検索しても答えが判りませんでした。
スポンサーサイト

2011-11-23(Wed) 19:58 PHP | トラックバック(0) | コメント(0) 編集 |


管理者にだけ表示を許可する
Top
http://akb48boys.blog39.fc2.com/tb.php/20-9505249b
copyright © 2011 BreathTake all rights reserved. / Template By innerlife02
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。