買い物かご 掲示板 メール DB 利用規定 FAQ サポートBBS


次(デコード)
前(CGI内のHTML)
必要なツール
最低限必要な知識
Make CGI Top
Basic

Home



変数の設定と変更 --最低限必要な知識--


変数とは

CGIでは、あらかじめ初期設定などで、動的に変更される可能性のある文字や数字などを特定の文字列に割り当て、該当する個所を一気に変更してしまうことができます。
この特定の文字列を「変数」と呼び、Perlでは変数は文字列の先頭に「$」を付けて、他の文字列と区別しています。

例えば、汎用の掲示板で、ページの先頭にあいさつ文を入れたいとします。
あいさつ文は、ユーザーにより異なりますので、ユーザーが掲示板に表示したいあいさつ文を、

$aisatu

という変数に割り当てます。(一般的に変数に代入するといいます)

$aisatu = "こんにちは。ホームページの感想などご自由にお書きください。";

すると、そのCGIスクリプトのどこであっても、$aisatuと入力するだけで、入力した場所には、自動的に「こんにちは。ホームページの感想などご自由にお書きください。」 と表示されることになります。このように、変数と、変数に代入する文字列のペアーを作成することを、「変数を定義する」と呼びます。

さらに、変数同志の四則演算もできます。

$tanka = 100;
$kosuu = 10;
$goukei = $tanka * $kosuu;

すると、 print "$goukei\n";と入力することで、合計金額としての「1000」が表示されます。

簡易買い物かごシステムでは、商品一覧フォームから、商品ごとの価格と個数をCGIへ引き渡し、引き渡された単価、個数をそれぞれ変数へ代入し、合計金額を計算しています。

※変数名として使用できるのは、半角英数と_(アンダーバー)のみです。また、数字で始まる変数の場合は、変数を構成するすべての文字が数字でなくてはなりません。
(例:$aisatu $0011 $aisatu_top)、
また変数の文字の中にスペースを空けることはできません。
(例:$aisatu top・・・ダメ!)


変数を作る

では、新しく変数を作って見ましょう。
ここでは、買い物かごオリジナル版の商品一覧画面を改造してみます。


お買い上げ一覧の「商品ID」「商品名」「単価」「個数」「合計」「削除」のセルの色を自由に変更できるようにします。

なお、このスクリプトでは、変更箇所は2ヶ所ありますので注意してください。


まず、初期設定欄の一番下に、次の文章を追加します。

#テーブルの色。
$tablecolor = '#CCCCFF';

次に、テーブルの色を変更したい場所を探ます。

490行目付近 (初期設定でフォームを作成するので、必ずしもこの付近にあるとは限りません)および620行目付近に

<tr><th>商品ID</th><th>商品名</th><th>単価</th><th>個数</th><th>合計</th><th>削除</th></tr>

という記述があります。この個所を、

<tr bgcolor=$tablecolor><th>商品ID</th><th>商品名</th><th>単価</th><th>個数</th><th>合計</th><th>削除</th></tr>

に変更します。必ず2箇所とも書き換えてください。書き換えたら上書き保存します。

ブラウザで呼び出してみましょう。あなたの指定した色に置き換わっているはずです。
$tablecolor = '#CCCCFF';#CCCCFFを変更すると、ページ上のテーブル色も変更されます。

$tablecolorは、他の場所でも利用できます。注文フォームや送信確認フォームのテーブル色にも設定してみましょう。


約束

さて、ここでいくつかの記号が出てきました。

#、;(セミコロン)などです。これらの記号は、Perlの約束事で、省略することはできません。

# コメント記号。#以降の文字列は無視されるので、説明文などを記述するのに使われます。複数行にわたるコメントをつける場合は、行頭に必ず#をつけるようにします。

#コメントです。
#これもコメントです。
#くどいけどこいつもコメントです。
#4行にわたるコメントは、4行とも行頭に#を付けるんです。
; セミコロン。文の終わりを示す記号です。忘れるとサーバーエラーになって動作しません。
'' シングルクォーテーション。文字列を文字として表示させるときに使う。
「こんにちは」など文字を表示したいときは、必ず囲むようにする。忘れると、Perlが「こんにちは」という命令だと判断し、当然そんな命令は存在しないので、エラーになるなど、正常に動作しません。
"" ダブルクォーテーション。文字列を文字として表示させるときに使う。
「こんにちは」など文字を表示したいときは、必ず囲むようにする。

シングルクォーテーションとダブルクォーテーションは、異なった役割を持っています。

ヒアドキュメントを使う際、

print <<"EOF";とすると、ドキュメント内で、変数を指定した文字列に変更してくれます。変数をあらかじめ指定した文字列や数値に変更することを、「変数展開」と呼びます。

print <<'EOF';とすると、変数展開はしてくれません。$tablecolorを指定した文字列に置き換えず、$tablecolorを、$tablecolorという文字列として、そのままブラウザに表示します。そのため、テーブルの色がおかしくなります。

初期設定で変数を定義する場合は、変数の中で変数を使っている場合を除き、どちらを使ってもかまいませんが、心配な方は、ダブルクォーテーションを使いましょう。



Web寺子屋 OGIPOGI E-mail:info@web-terakoya.net
Copyright© 2000-2001 OGIPOGI All Rights Reserved.