どこに住んでる?

  • このエントリーをはてなブックマークに追加
  • 人気ブログランキング

今回は、前回よりもちょっと複雑な入力フォームです。

 

こちらをクリックしてください。

 

「ふむふむ。よく見かけるぞ!」
と思われたでしょう。

 

では、都道府県の選択、誕生日の選択はどんな書き方でしょうか?

 

もちろんhtmlで書くことはできますが、
都道府県47個、誕生日の年100個なんて、大変大変。

 

場合によっては、
「都道府県の並びを変えて!」
とか
「都道府県の最初の表示を大阪にして」
とか、
お客様に変更依頼をされることがあります。

 

せっせとエディタでカットアンドペーストでやりますか?

 

こんな入力フォームがたくさんあったら、
もう大変ですね。

index.cfm

<cfset title="フォーム入力テスト2">
<cfset tdfk="北海道,青森県,岩手県,宮城県,秋田県,山形県,福島県,茨城県,栃木県,群馬県,埼玉県,千葉県,東京都,神奈川県,新潟県,富山県,石川県,福井県,山梨県,長野県,岐阜県,静岡県,愛知県,三重県,滋賀県,京都府,大阪府,兵庫県,奈良県,和歌山県,鳥取県,島根県,岡山県,広島県,山口県,徳島県,香川県,愛媛県,高知県,福岡県,佐賀県,長崎県,熊本県,大分県,宮崎県,鹿児島県,沖縄県">
<!---解説
    tdfkという変数に都道府県をセットしています。
    実際のプログラムでは都道府県がセットされています。
    長くなるので抜粋しました。

    「,」で区切ってありますが、
    ColdFusionではリストと呼んでいます。

    都道府県の並び順は、ここで変えれば
    OKです。
--->

<cfoutput>
<html>
<head>
    <title>#title#</title>
</head>

<body>
■#title#<br><br>

<cfif IsDefined("url.chk")>

    <cfif url.chk eq "ok">
    <!---解説
        「url.chk変数がokである場合は?」です。
        「eq」はイコールを意味します。
        「eq」の代わりに「is」も使うことができます。
        否定の場合は「neq」または「is not」です。
        ここで演算子を整理すると

        演算子            代替名
        ----------------------------------------------
        IS                            EQUAL,EQ
        IS NOT                        NOT EQUAL,NEQ
        GREATER THAN                  GT
        LESS THAN                     LT
        GREATER THAN OR EQUAL TO      GTE,GE
        LESS THAN OR EQUAL TO         LTE,LE
        ----------------------------------------------
        ちなみに、ColdFusionは大文字・小文字の区別はありません。
    --->

以下の内容が入力されました。<br>
<br>
○名前<br>
#form.my_name#<br>
○都道府県<br>
#form.tdfk#<br>
○誕生日<br>
#form.year#年#form.month#月#form.day#日<br>
<!---解説
    名前、都道府県、誕生日が表示されます。
    前回の名前の表示方法と同じです。
--->

    </cfif>
<a href="index.cfm">もう一度入力する</a><br>
<cfelse>
以下の内容を入力・選択してください。

<form action="index.cfm?chk=ok" method="post">
<!---解説
    actionを見ると、「chk=ok」とあります。
    これによってurl.chk変数が生成され、
    okの値をセットします。
--->

○名前<br>
<input type="text" name="my_name"><br>

○都道府県<br>
<select name="tdfk">
<cfloop index="i" list="#tdfk#">
<option value="#i#"
<cfif i eq "東京都">selected</cfif>
>#i#</option>
</cfloop>
<!---解説
    cfloopタグは「繰り返し」です。
    この場合、変数iを宣言し、tdfk変数を使用します。
    #tdfk#とありますが、タグ内ではtdfkの内容が展開されます。
    <cfloop index="i" list="北海道,青森,沖縄">
    と書くことと同じです。

    <cfif i eq "東京都">selected</cfif>
    とありますが、
    iの値が「東京都」だった場合に
    selectedをつけます。

    これによって最初の画面表示では、
    「東京都」が最初に表示されます。
--->

</select>
<br>
○誕生日<br>

<cfset sele_year=dateformat(DateAdd("yyyy",-30,now()),"yyyy")>
<!---解説
    sele_year変数に、現在の西暦から30年前の年をセットします。
    now()は、現在の日時を取得します。
    DateAdd("yyyy",-30,now())
    これで30年前の日時を取得します。
    dateformatの指定で、年だけを取得します。
--->

<select name="year">

<cfloop index="i" from="#dateformat(dateAdd('yyyy',-100,now()),'yyyy')#" to="#dateformat(now(),'yyyy')#">
<option value="#i#" 
<cfif i eq sele_year>selected</cfif>
>#i#</option>
</cfloop>
<!---解説
    このcfloopは、変数iを宣言し、100年前の年から現在の年まで繰り返します。

    <cfif i eq sele_year>selected</cfif>
    とありますが、これはiの値が30年前の年と同じだった場合にselectedをつける
    ということです。
--->

</select>
年
<select name="month">

<cfloop index="i" from="1" to="12">
<option value="#i#">#i#</option>
</cfloop>
<!---解説
    このcfloopで、月を表示します。
--->

</select>
月
<select name="day">

<cfloop index="i" from="1" to="31">
<option value="#i#">#i#</option>
</cfloop>
<!---解説
    このcfloopで、日を表示します。
--->

</select>
日<br>
<input type="Submit" value="実行">
</form>
</cfif>

</body>
</html>
</cfoutput>
  • このエントリーをはてなブックマークに追加
  • 人気ブログランキング

この記事に関連する記事一覧

最近の投稿
カテゴリー
タグ
アーカイブ
プロフィール