• 締切済み

aspファイル内でのIF文埋め込み

現在とあるホームページの編集をするのに.aspファイルをいじっています。 ホームページ上に「氏名」と「社員番号5桁」を入れるテキストボックスがあり、それを以下のように表示させています。 1.氏名:○○ (社員番号:○○) <tr height="25"> <td width='25' align='left' valign='top'>1.</td> <td nowrap width='120' align='left' valign='top'>氏名:</td> <td width='400'  align='left' valign='top'><b><%= session.contents("name") %></b>   (社員番号:<b><%= session.contents("bangou") %></b>)</td> </tr> この時「社員番号」テキストボックスに入力があれば(社員番号:○○)の部分を表示させ、 入力がない場合(社員番号:○○)の表示そのものをしない設定にしたいのですが、aspやhtmlに関して未経験で勉強での知識だけでは追いついていないため、<%>を使った埋め込みや、構文が出来ていない為困っております。なのでお力添えして頂けると有り難いです。 <tr height="25"> <td width='25' align='left' valign='top'>1.</td> <td nowrap width='120' align='left' valign='top'>氏名:</td> <td width='400'  align='left' valign='top'><b><%= session.contents("name") %></b> <% if len("HosCode") = 5 then %>   (社員番号:<b><%= session.contents("bangou") %></b>)</td> <% end if %> </tr> ↑私自身が考えてみた一例(5桁を入れても「社員番号:○○が表示されない」)

みんなの回答

回答No.2

おそらくNo.1さんの回答の前半部分について理解されてないと思います。 len("HosCode") というのは、HosCodeという変数に入っている文字列の長さではなく "HosCode"と言う文字列の長さです。だから常に7文字です。 同様に len("bangou") は、"bangou"と言う文字列の長さですから、常に5文字です。 ここは、本当は <% if len(session.contents("bangou")) = 5 then %> としたいんじゃないでしょうか? あと > len=5よりlen>0のほうが良いのでしょうか? この処理の前処理で0か5以外ならエラーにする処理をしているし、 ここのif文は社員番号のHTML表示にしか影響しないので、 ここで5桁かどうか意識する必要はないと考えるならlen>0で見るべきだし、 もし将来の改造やWebサイト攻撃により0か5以外をチェックしている ルートと別のルートからこの処理が呼び出される可能性があって、 かつこのif文の中で社員番号の桁数を5桁に限定しないとまずい処理を 追加する可能性を心配するなら、それを見越した処理でlen=5で 見てもよいと思います。 要するにあなたがどう考えるかの問題です。

すると、全ての回答が全文表示されます。
  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.1

そのHosCodeっていうのはなんじゃらほい? まぁ、少なくとも len("HosCode") は7だな。だから5じゃないな。だから len("HosCode") = 5 は真にならないな。だから if len("HosCode") = 5 then の中には入らないな。ここの条件を見直してみましょう。 直接は関係ないが、社員番号がイコール5だと「5桁だったら」という条件になるため、 もし社員番号が6桁に変わったら全部直さないといけなくなるんじゃないかな。 現在、社員番号が5桁でないなら絶対に0桁(存在しない)なのであれば、条件は len(<社員番号>) > 0 という風に「社員番号が0桁を超えているなら」というものにした方が良いのかも知れない。 後、ifの条件を満たしてなくても閉じtdタグは必要なので <tr height="25"> <td width='25' align='left' valign='top'>1.</td> <td nowrap width='120' align='left' valign='top'>氏名:</td> <td width='400' align='left' valign='top'><b><%= session.contents("name") %></b> <% if len("HosCode") = 5 then %>   (社員番号:<b><%= session.contents("bangou") %></b>) <% end if %> </td> <!-- ←ここね --> </tr> とすると良かろう。

tennkuukisi
質問者

お礼

早速のご解答ありがとうございます。 一部編集した際の替え忘れですので、 <% if len("HosCode") = 5 then %>は<% if len("bangou") = 5 then %>です。 また</td>は完全に失念しておりましたので、ご指摘ありがとうございます。 社員番号は、前のページで0桁か5桁以外はエラーで弾く処理をしていますので、ここの処理を行う際0桁か5桁の判断のみを考えて書きましたが、len=5よりlen>0のほうが良いのでしょうか? お忙しいとは思いますが、 ご確認のほどよろしくお願い致します。

すると、全ての回答が全文表示されます。

関連するQ&A