WEBサイト制作ど素人のおやっさんが、HTML、CSS、PHPなど学んでいく技術ブログです。
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
今度はCSVに書きだしたデータをブラウザで見るため
show_question.phpをchap4ディレクトリに作ります。
日付、通貨、記号、単位等を指定した言語や地域に合わせる。とりあえずめんどくさいのでsetlocal(LC_ALL,'jp-JP')でいきましょう。LC_ALLは全部ってことです。後は日本的なって事で海外になったら違うのいきましょう。fgetcsv関数を使うときに必要です。
ファイルポインタから行を取得し、CSVフィールドを処理するだそうです。CSVファイルから1行取得するってことですかね?1行の最大長とは1行に書ける最大バイト数ですかね?UTF-8だと日本圏で1~4バイトで1文字らしいかな?この辺も難しいです。
while(条件){条件を満たす場合はループします。}
配列やループ数が決まっているものはfor文、それ以外はwhile文でいきます。ここの場合、
while(fgetcsv($handle,1000)){
// 一行分のデータを取り出す
list($pdate, $pprice, $star,$lang[0],$lang[1],$lang[2],$lang[3],$lang[4],$lang[5],$job) = $data;
// 一行分のデータを表示
echo '<tr><td>' . htmlspecialchars($pdate, ENT_QUOTES) . '</td><td>' . htmlspecialchars($pprice, ENT_QUOTES) . '</td><td>' . htmlspecialchars($star, ENT_QUOTES) . '</td>';
for ($i =0; $i < 6; $i++) {
if($lang[$i] == '') {
echo '<td align="center">-</td>';
} else {
echo '<td align="center">○</td>';
}
}
echo '<td>' . htmlspecialchars($job, ENT_QUOTES) . '</td>';
echo '<tr>';
}
fget関数がCSVファイルからデータを取得できなくなるまでループします。
エラーが出なければ下のような画面ができます↓(※画像はクリックで拡大できます。)
write_question.phpを作りましょう。
まずchap4ディレクトリにuploadsディレクトリを作っておいてください。ここではCSVファイルを作ります。CSVファイルの特徴としては、データをカンマ区切り表す。エクセルで扱える。表に近い感覚で扱える。MIMEタイプが「text/csv」なのでメモ帳でも編集可能です。ECサイトの売り上げ・ユーザー情報出力ファイルなどに使用。などです。
配列の一括指定ができる便利な関数です。
$data=[0 ] = $pdata;
$data=[1 ] = $pprice;
$data=[2] = $star;
$data = array(0 =>$pdata, 1=>$pprice, 2=> $star,・・・・・)的な感じです。
連想配列の場合は
$ary = array('naem '=>$usename, 'age'=>$age);みたいな感じです。
とばす場合は
$ary = array(3=> 1,2,3・・・・・);
$ary[3]・・・1
$ary[4]・・・2
$ary[5]・・・3的な感じです。
二次元配列は
$ary = array('tanaka' =>array('age'=>$age, 'tel'=>$tel), 'product' =>array('price'=> $price, num=> $num));
$ary['tanaka']['age']
$ary['tanaka']['tel']
$ary['product']['price']
$ary['product']['num']
的なややこしさです。
ファイルまたはURL?をオープンする関数です。
モードは'a'で追加書き込み、ファイルがない場合は新規作成です。
'r'で読み込み用にファイルを開くです。
ファイルをロックしたり。ロック解除したりもできます。ファイルポインタについてはいろいろ調べたのですが今一つ理解できません。モードは
LOCK_EX・・・排他的ロックです。(排他的ロックされていると、たぶんほかの人はアクセスできません。
LOCK_UN・・・ロック解除です。
配列を一行分のデータとしてCSVの書式で書き込みます。
CSVファイルに書き込み成功すると↓のような画面になります。
(※画像はクリックで拡大できます。画面はCSSで多少装飾してあるので、本当はもっとシンプルな画面です。)
確認画面を作りましょう。
check_question.phpを作ります。
全角かな、半角かな等に変換します。
①は対象文字列です。
②はオプション記号です。これは決まってます
a:全角英数を半角にします。
s:全角スペを半スペにします。
k:半角カナを全角にします。
とりあえず「as」で覚えちゃってもいいみたいです。
③は文字コードです。ここは、UTF-8でいきましょう。
とりあえず、わかりやすいように例で書いてみました。listは割り当てです。$aryは配列でいっぱいあります。この場合だと3個です。それを変数$year,$month,$dayに割り当てて代入します。
文字列を文字列で分割する関数です。例えば
$ary = explode('/' 2012/10/28; 2)
なら、$ary[0]・・・[2012]、$ary[1]・・・[10/28]になります。最後の2で、/で文字列を2分割するって意味です。ややこしいですね。
正しい年月日かチェックします。過去、未来も可です。うるう年にも対応です。うるう年ってなんでしたっけ?順番は月,日,年です。これ面倒ですが決まってるみたいです。
引数が数値かどうかをチェックします。整数、小数、16進数(0~9,a~f)、と指数(1e4=104らしいです。指数はよくわかりませんが天文学的な数字みたいな感じだと思います。)がいけます。数値ならtrue、数値でないならfalseで返します。
変数があるかどうかを調べます。正確には変数がセットされているかどうか?です。NULLではないかを調べます。NULLは何もないという意味らしいです。NULLの場合はfalseを返します。
変数が空かどうかを調べます。深くやるとまだ意味がありそうですが、とりあえずこれで自分を納得させます。NULLのとき、文字が空のとき、値が0の場合true、それ以外の場合はfalseです。
正規表現によるマッチングを行う。らしいです。色々記述があり正直わかりません。
なんとなくですが、ここですと
preg_match("/([0-9]{4})[-\/]+([0-9]{1,2})[-\/]+([0-9]{1,2})/", $pdate)
だと0-9の数字を4回繰り返し/で区切り、0-9の数字を2回繰り返し/で区切り、0-9の数字を2回繰り返し/で区切るってことです。もう少し詳しく調べてみます。
上のソースでやればエラーは出ないです。が多々おかしいと思うところもあります。本当は必須条件とかでちゃんと打ち込まないと先に進めなくするのが普通だと思いますが、とりあえず出るエラーを全部防ぎました。たぶんですけど。
※htmlspecialchars()の使いどころは、echoのところらしいです。直前で入れることが好ましいらしいです。ようはブラウザ側で働く悪意のあるJSのプログラムを防げればいいらしいです。
アンケートフォームの確認画面です。画僧はクリックで拡大できます。確認画面はCSSで装飾されています。本当はもっとシンプルな画面です。↓
アンケートフォームを作ってみましょう。
chap4ディレクトリを作り
↓question.htmlを作りましょう。
■アンケートにお答えください。
ボタンだけでなくテキストもクリックできるようになるタグです。ユーザービリティ、アクセシビリティの面でつけて損はないです。クリッカブルとか言うらしいです。上のでテキストをクリックすると選ばれるで試し見てください。
例えば、この本の購入日を教えてください。をクリックりてみたり。
とても良いをクリックしてみたり。PHPをクリックりてみたりしてください。スマホ的なものに役に立つかな。
アンケート入力画面です(※画像はクリックで拡大できます。画像はCSSで装飾されています。実際の入力画面は、もっとシンプルです。↓
カレンダー
最新コメント
最新記事
プロフィール
ブログ内検索
最古記事
P R
忍者ツールズプロフィール
カウンター
コガネモチ