PHP-はじめの一歩(その5)スクリプトのコーディング

   プログラミング [2010/11/19]
11/18「PHP-はじめの一歩(その4)スクリプトの設計」の続きです。
上記の記事で予告した(?)の機能のスクリプトを作成します。

●テストデータの準備
まずは、扱うデータとして、テスト用データをテキストエディタで作成します。
データの構成は、
-----------
・サンプル番号     :テキスト
・籠サンプルの写真   :画像ファイル名
・大きい写真      :画像ファイル名
・名前         :テキスト
・サイズH       :数値(cm)
・サイズW       :数値(cm)
・サイズD       :数値(cm)
・残数         :数値
・作成数        :数値
・材料の提供可/不可  :1=可、0=不可
・不可の場合のコメント :テキスト
・サンプルの値段    :数値(円)
-----------

これをデータの並び(レコード)に置き換えて、入力すると以下のような感じ。
------------------------------
S-1 PPkagoS-1.jpg PPkagoS-1B.jpg 籠 20 15 25 1 4 1 色違い可 850
S-5 PPkagoS-5.jpg PPkagoS-5B.jpg 筒 25 25 10 0 1 0      1000
------------------------------
間が空いているところは、タブを入力して区切ります。
テスト用なので2行(レコード)もあれば十分でしょう。

ファイル名は、ppkago_sample_list.tsvとします。
これを 開発環境のフォルダである、「C:\Pleiades_e35\xampp\htdocs\sarumosunaru_cgi」にセーブします。

●PHPスクリプトを作る
まずは、Eclipseを起動します。(11/17「PHP-はじめの一歩(その3)サンプルをアップ」ご参照。)

先日作った「sample.php」が表示されました。
この間sample.phpのテストを実行した状態で閉じたので、「PHPデバック」の画面構成になってます。
編集中心の「PHP」という画面構成があるので、それに切り替えます。Eclipseの画面の右上くらいに切り替え用のアイコンボタンがあります。「PHPデバック」と書いてある隣です。

▲新規にPHPスクリプトファイルを開く
「ファイル」-「新規」-「PHPファイル」を選択して、
作成するファイル名を「ppecosamples.php」と付けます。
「完了」ボタンをクリックします。エディタとしてのウィンドウ中央に、<?php とだけ書かれた「ppecosamples.php」が表示されます。

さあ、それではコーディングに入りましょう。

▲作りこむ処理は
昨日も書いたのですが、おおまかな処理シーケンスとしては、以下です。
//****タブ区切りデータファイルをオープンして読み込み
//****1行づつ配列に変換して保持
//****HTMLとして出力

▲今あるHTMLのベースをコピペ
<?php下に「//」でこのプログラムの機能とかをコメントで入れて、?>で閉じます。
次に、今回作る「見た目」は、前のHTMLがあるので、それを一旦全部コピペします。
そこで<table>内をデータファイルを元に作成すればいいだけ。(のはず。)

▲一個一個処理を潰していきましょう。
・ファイルのオープンは、fopen()関数
・読み込みは、一行づつ読む fgets()関数
・一行の解析は、explode()関数
※タブ区切りのデータを簡単に配列にしてくれちゃいます。
 こんな便利な機能があるとは。感動ものです。
・それと、mb_conbert_encoding()関数
 後で気づいたのですが、Windowsなのでデータは単純にはshift-jisとしてデータが作成されます。
 なので、それをUTF-8に変換する必要があります。
※shift-jisのままでもEclipseの設定をshift-jisに設定して、
 htmlに<meta>でcharsetをshift-jisに設定してあげればいいだけ
 なんですけど、今回はサーバ標準?のUTF-8を使います。

▲こんな感じに・・・・・
============
<body ・・・・>



<table border="1" width="95%">

<?php
$errmsg = "";
$item_ary = array();

//****タブ区切りデータファイルをオープン
$tsvfp = fopen("PPkago_sample_list.tsv", "r");
if ($tsvfp == false)
{
  $errmsg = "データファイルのオープンに失敗しました。";
}
//****オープン成功
else
{
  //****1行づつ読み込み
  while($sline = fgets($tsvfp, 4096))
  {
    //****EOF/空行はスキップ
    if (strlen($sline) < 9) continue;
    //****日本語の部分をshift-jisからutf-8に変換
    $sline = mb_convert_encoding($sline, 'UTF-8', 'SJIS-win');
    //****配列として分解
    $item_ary = explode("\t", rtrim($sline));
    //****材料提供可否とコメントを文字メッセージに変換
    if ($item_ary[9] == "1")
    {
      $fOKNG = "可";
      $OKmsg = htmlspecialchars($item_ary[10]);
    }
    else
    {
      $fOKNG = "不可";
      $OKmsg = "";
    }
    //****HTMLとして出力
?>

    <tr>
    <td width="50%" align="center" bgcolor="#ffffff">
    <img src="ppeco/<?=htmlspecialchars($item_ary[1]);?>">
    </td>
    <td width="50%" align="left" bgcolor="#ffffff">
    <font color=blue>番号:
    <b><?=htmlspecialchars($item_ary[0]);?></b></font><br>
    <?=htmlspecialchars($item_ary[3]);?><br>
<?php
    if ($item_ary[2] != null)
    {
?>

    <a href="ppeco/<?=htmlspecialchars($item_ary[2]);?>">
    大きい写真</a><br>
<?php
    }
?>

    <font color=blue>サイズ:おおよそ
     H<?=htmlspecialchars($item_ary[4]);?>
    ×W<?=htmlspecialchars($item_ary[5]);?>
    ×D<?=htmlspecialchars($item_ary[6]);?>
    cm</font><br>
    <font color=red>サンプル個数:<b>
     <?=htmlspecialchars($item_ary[7]);?>
    /<?=htmlspecialchars($item_ary[8]);?>
    </b></font><br>
    <font color=red>材料提供:<b><?=$fOKNG;?></b></font><br>
    <?=OKmsg;?><br>
    <font color=green>手数料:
    <b>¥<?=htmlspecialchars($item_ary[11]);?>
    </b></font><br>
    <!input type="SUBMIT" NAME="submit" VALUE="申し込み">
    </td>
    </tr>
<?php
  }
  fclose($tsvfp);
}
?>


</table>



</body>
============


ちょっと記事が長すぎなので、中身の解説は次回。
今日はこの辺で。m(__)m
スポンサーサイト


コメントの投稿

非公開コメント

カレンダー
07 | 2017/08 | 09
- - 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 - -
プロフィール

さるもすなる

Author:さるもすなる
さるです。別HPサイト「さるもすなる」から侵食してきました。 山菜/きのこ、それとタイトルにしたPPバンド籠のことをメインに徒然に・・・・暇を持て余したさるの手仕事:男手芸のブログってことで。

最新記事
最新コメント
月別アーカイブ
カテゴリ
天気予報

-天気予報コム- -FC2-
本家のHPのトップ
山菜や茸の話です
PPバンドの籠作品と作り方です
投稿をお待ちしております



ブログランキング・にほんブログ村へ にほんブログ村 ハンドメイドブログへ



マニュアルのお申し込み



検索フォーム
リンク
RSSリンクの表示
ブロとも申請フォーム

この人とブロともになる

QRコード
QR