年月日を横一列に表示させる方法

このQ&Aのポイント
  • 生年月日を入力フォームにて入力し、送信ボタンを押すと、確認画面に生年月日が横一列に表示されます。
  • 現在は生年月日が縦に表示されてしまうため、表示方法を横一列に変更したいと思っています。
  • 質問者はCGIの知識が初心者だが、HTMLソースとCGIの一部を添付しており、必要な箇所を指摘してほしいとしています。
回答を見る
  • ベストアンサー

年月日を横一列に表示させたい

お世話になります。 入力フォームにて、生年月日(例:2011年1月29日)を入力し、送信ボタンを押す。 その後に表示される確認画面にて、 生年月日:2011年1月29日 という具合に横一列に並べて表示するには、どのようにすればよろしいのでしょうか。 現状は、 年:2011 月:1 日:29 という具合に縦に表示されてしまいます。 過去の質問を検索したところ、 まさに今回したい事と同じ質問が見つかったのですが、 質問を読んでみたところ、どうやら解決には至らなかったご様子でした。 http://questionbox.jp.msn.com/qa479099.html 以下にhtmlのソースの記述と、CGIの(恐らくここの記述をいじれば良いのだろうなぁという箇所の)記述を抜粋して添付いたします。 当方、CGI知識は、全くの初心者ですので、見当違いでしたら何とぞご指摘ください。 どうぞよろしくお願い致します。 【html】 <td> <input name="年" type="text" id="year" size="4"/>年 <input name="月" type="text" id="month" size="2"/>月 <input name="日" type="text" id="day" size="2"/>日 </td> ------------------------------------------ 【CGI】 HTML foreach (@names) { $view_flag = 0; print "<INPUT type=\"hidden\" name=\"$_\" value=\"$FORM{$_}\">"; foreach $view(@no_view_item){ if ($_ eq $view) { $view_flag = 1; last; } } if ($view_flag == 0) { print "<TR><TD bgcolor=\"#EEEEEE\" width=\"20%\" align=\"left\">$_</TD>"; if ($_ eq URL && $FORM{$_} ne "") { print "<TD><A href=\"$FORM{$_}\" target=\"_blank\">$FORM{$_} </A></TD></TR>\n"; } else { print "<TD>$FORM{$_}</TD></TR>\n"; } } } print "</TBODY></TABLE><BR><INPUT type=\"submit\" value=\"送信する\"></FORM>\n";

  • CGI
  • 回答数2
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • ralf124c
  • ベストアンサー率52% (232/446)
回答No.2

 提示されているプログラムソースが表示部分を指してはいるのですが、ここだけを改造 してどうこうって訳にはいかないと思います。  まず、受信したフォームの項目が年月日以外にもあると思うのですが、問題点は「年」 と「月」と「日」が順にまとまっているという保証が有りませんので、このリストのよ うに、データが表示不可かどうかのチェックだけで順不同表示されてしまう場合、表示 順を意図的に表示させるための根本から考慮しないと対処のしようがありません。  表示させたくない要素を「@no_view_item」に入れていますが、表示させたい要素をリス ト化すべきだったかと思います。  この状況で年月日をまとめて表示可能なのは確認項目の先頭か最後尾に表示するしか できないでしょう。  最後尾に表示させる例として「@no_view_item」に年月日をリストに加えてループ内で非表 示にしてから以下の3行を -------------------------------------------------------------------- my $sTMP = sprintf("%s年%s月%s日",$FORM{'年'},$FORM{'月'},$FORM{'日'}); print "<TR><TD bgcolor=\"#EEEEEE\" width=\"20%\" align=\"left\">年月日</TD>"; print "<TD>$sTMP</TD></TR>\n"; -------------------------------------------------------------------- 最終行(下のリスト)の手前に挿入する print "</TBODY></TABLE><BR><INPUT type=\"submit\" value=\"送信する\"></FORM>\n"; -------------------------------------------------------------------- という方法が最小限(追加分の3行の最適化を除いて)の変更でしょう。  あとは、ループ内で表示処理させずに、表示要素のテーブルをいったん作ってから表示させな おす方法も有りますが、どちらにしても年月日がどの位置となるのかの指定が必要です。

hige_bear
質問者

お礼

ご回答いただき、誠にありがとうございます! ご指摘いただきましたとおりに試してみたところ、 確かに年月日が横一列に並んで表示されました! ただ、表示される場所が先頭か最後となると、現在作成中のフォーマットでは問題があります。 今回はひとまず、年月日の入力フィールドをひとつにして対処しようと思います。 ですが、「@no_view_item」の件など、今後の検証作業の上で、とても参考になりました。 (お恥ずかしい話なのですが、@no_view_itemの意味もわかっておりませんでした) 本当にありがとうございました!

その他の回答 (1)

回答No.1

HTMLの記述方法だけでよければ、下記のコードで横並びになると思います。 【入力用コード】 <form id="form1" name="form1" method="post" action=""> <label> <input name="year" type="text" size="4" /> 年 </label> <label> <input name="month" type="text" size="2" /> 月 </label> <label> <input name="day" type="text" size="2" /> 日 </label> </form> だめでしょうか?

hige_bear
質問者

お礼

ご回答いただき、ありがとうございます! ご指摘いただいたコードを貼り付けたところ、入力フォームでの表示は横並びなのですが、 「送信」ボタンを押した後に表示される、確認画面は year:2011 month:1 day:29 といった具合にやはり縦に表示されてしまいます。 確認画面はCGIから自動で生成されているものなので、CGIファイルの修正が必要なのだろうとは思うのですが、どこを修正すれば良いかわからず…。 もう少し調べてみようと思います。 取り急ぎお礼申し上げます。

関連するQ&A

  • 掲示板スパム対策(改造)1行追加でエラー

    書き込み文字が変換されるタイプの掲示板です。 1行追加、アップした後に、サーバーのエラーが出るのですが、 どこが悪いのかわかりません。 #HTMLドキュメントのヘッダー宣言 ~省略~ #投稿フォームを作成 ~省略~ print "<td align=center>名前</td>\n"; print "<td><input type=text size=34 name=name value=" . $COOKIE{'name'} . "></td>\n"; print "</tr>\n"; print "<tr>\n"; print "<td align=center>E-mail</td>\n"; print "<td><input type=text size=34 name=email value=" . $COOKIE{'email'} . "></td>\n"; print "</tr>\n"; print "<tr>\n"; print "<td align=center>見出し</td>\n"; #返信の場合は、見出しを挿入 if ($FORM{'flags'} eq 'return') { print "<td><input type=text size=34 name=subject value=RE:" . $FORM{'subject'} . "></td>\n"; } else { print "<td><input type=text size=34 name=subject></td>\n"; } print "</tr>\n"; print "<tr>\n"; print "<td align=center>内容</td>\n"; print "<td align=center><textarea name=comment rows=3 cols=34></textarea><br>\n"; if ($FORM{'flags'} eq 'return') { print "<input type=submit value=$FORM{'subject'}へ返信>\n"; print "<input type=hidden name=ress value=$FORM{'code'}>\n"; } else { print "<input type=submit value=新規投稿>\n"; } print "ガードコード<input type=text name="guard" size=8>\n"; #スパム対策用で追加●●●●●●●●●● print "</form>\n"; (TっT)

    • ベストアンサー
    • CGI
  • フォームメールへ引き継ぐ値が表示されないことがある。

    Perl 5.6.1、cgi-lib.pl 2.17、jcode.pl 2.11です。 以下のソースで、htmlファイルより引き継いだ値(theme,number,day)をたまに取り込めていないというか、これらの値だけ表示されていないことがあるようです。 私の環境では再現できておりません。 ユーザーの環境に依存するようなソースコードなのでしたら変更したいと思っております。 どなたかご教授よろしくお願いいたします。 #!/usr/local/bin/perl require "./cgi-lib.pl"; require "./jcode.pl"; &ReadParse; $text = $in{'theme'}; &jcode'convert(*text, 'sjis'); $in{'theme'} = $text; $text = $in{'number'}; &jcode'convert(*text, 'sjis'); $in{'number'} = $text; $text = $in{'day'}; &jcode'convert(*text, 'sjis'); $in{'day'} = $text; print<<'end_mark'; Content-type: text/html <html> <title>XXX</title> </head> <form action="/cgi-bin/XXX.cgi" method="post"> <table> <tr> <td>テーマ/</td> <td> end_mark print "<input type=\"hidden\" name=\テーマ\" value=\"$in{'theme'}\">$in{'theme'}</td></tr>\n"; print<<'end_mark'; <tr><td>番号/</td><td> end_mark print "<input type=\"hidden\" name=\"番号\" value=\"$in{'number'}\">$in{'number'}</td></tr>\n"; print<<'end_mark'; <tr><td>日時/</td><td> end_mark print "<input type=\"hidden\" name=\"日時\" value=\"$in{'day'}\">$in{'day'}</td></tr>\n"; print<<'end_mark'; <tr> <td>会社名(正式名)</td><td> <input type="text" name="_会社名"></td></tr> <tr> <td> <input type="submit" value="申込み" name="submit"> <input type="reset" value="リセット" name="reset"> </td> </tr> </table> </form> </body> </html> end_mark

    • 締切済み
    • CGI
  • 文字の表示色を変えたい

    いつも、ありがとうございます。 下の記述で、<他社より安い場合は・・・>の文字を 青くしたいのですが、いろいろとやっても、 青文字になってくれません。 500 Internal Server Error になってしまいます。 どうやれば、青文字になりますか? **********記述文************************ print "<table>\n"; print "<tr>\n"; print "<td>\n"; print "<form action=\"$script\" method=\"POST\" target=\"_blank\">\n"; print "<input type=hidden name=mode value=note>\n"; print "<input type=hidden name=job value=blank>\n"; print "<input type=submit value=ご 利 用 方 法></form>\n"; print "</td><td>\n"; print "<form action=\"$home\" method=\"POST\" target=\"_self\">\n"; print "<input type=hidden name=mode value=_top>\n"; print "<input type=hidden name=job value=blank>\n"; print "<input type=submit value='ト ッ プ へ 戻 る'>\n"; print "</form></td></tr></table> <他社より安い場合は、ご相談ください。>

    • ベストアンサー
    • CGI
  • 掲示板のコメント欄にあらかじめ文字を入れたい

    掲示板の設置をしています。 掲示板のコメント欄の中に、あらかじめこちらが伺いたいことを表示しておきたいのですが、どのようにしたらできるのでしょうか? sub in_form { print "<table cellspacing=1 cellpadding=0>\n"; print "<form action=\"$script\" method=POST enctype=\"multipart/form-data\">\n"; print "<input type=hidden name=mode value=\"newwrt\">\n"; &getcook; if (!$mode) { $submit = '投稿する'; } else { print "<input type=hidden name=rno value=\"$in{'no'}\">\n"; $submit = '返信する'; } print "<tr><td>名前</td><td><input type=text size=30 name=name value=\"$name\" style=\"ime-mode:active;\"></td></tr>\n"; print "<tr><td>HP</td><td><input type=text size=50 name=hp value=\"http://$hp\"></td></tr>\n"; print "<tr><td>題名</td><td><input type=text size=50 name=sub style=\"ime-mode:active;\"></td></tr>\n"; print "<tr><td valign=top><br>内容</td><td><textarea cols=65 rows=8 name=com style=\"ime-mode:active;\"></textarea></td></tr>\n"; print "<tr><td>画像</td><td><input type=file size=60 name=img></td></tr>\n"; print "<tr><td>削除キー</td><td><input type=password size=10 maxlength=8 name=pwd value=\"$pwd\"> (英数8文字以内)</td></tr>\n"; print "<tr><td></td><td><input type=submit value=\"$submit\"></td></tr></table></form>\n"; } おそらくこの部分を変えるのかなぁと思うのですが・・・どうすればいいのかわかりません。どなたかアドバイスいただけるとうれしいです。 よろしくお願い申し上げます。

    • ベストアンサー
    • CGI
  • FORMメソッドでvalueがうまく渡されない

    Perlで下記のようにFORMメソッドを 色々なところで使っているのですが ↓のFORMメソッドだけVALUEが渡らないのです。 print "<FORM ACTION=\"$homeurl\" METHOD=$method>\n"; print "<TABLE BORDER=1>\n"; print "<TR>\n"; print "<TD>会員番号</TD>\n"; print "<TD><TT>会員番号-</TT><INPUT type=text name=mytonum value=\"$mynum\"></TD>\n"; print "</TR>\n"; print "<TR>\n"; print "<TD COLSPAN=2>\n"; print "<INPUT TYPE=SUBMIT VALUE=\" 基本情報 \">\n"; print "<INPUT TYPE=hidden NAME=mynum VALUE=\"$c_mynum\">\n"; #非表示。クッキー用 print "<INPUT TYPE=HIDDEN NAME=mycmd VALUE=write2>\n"; print "</TD>\n"; print "</TR>\n"; print "</TABLE>\n"; print "</FORM>\n"; それで改変したのが↓です。 こちらはボタンを押したらちゃんと値が渡りました。 ただ、予定した位置にテキストボックスが表示されず別の位置に表示されそれも困っています。 上の表記はどこが間違っているのでしょうか? print "<FORM ACTION=\"$homeurl\" METHOD=$method>\n"; print "<TABLE BORDER=1>\n"; print "<TR>\n"; print "<TD>編集先の会員番号</TD>\n"; # print "<TD><TT>会員番号-</TT><INPUT type=text name=mytonum value=\"$mynum\"></TD>\n"; #コメントにして・・・ print "</TR>\n"; print "<TR>\n"; print "<TD COLSPAN=2>\n"; print "<INPUT TYPE=SUBMIT VALUE=\" 基本情報 \">\n"; print "<INPUT TYPE=text NAME=mynum VALUE=\"$mynum\">\n"; #こちらtypeを変更→OK ~~以下上記同じ~~

  • HTMLの表示内容にfor文を使用したい

    現在Perlで予約画面を作成しています。 ソースは↓のような感じです。 ============================== #! c:/perl/bin/perl #DBより取得 @type = (); @type=('シングル','ツイン'); &display; #------------------------------------------------- sub display { print "Content-type: text/html\n\n"; print <<EOM; <html> <head> <META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=Shift_JIS"> <title></title> </head> <body> <form> <table border="0"> <tr> <td>タイプ</td> ##Loop Start <td><input type="checkbox" name="kotsu" value="1"></td> <td>$type[0]</td> <td><input type="checkbox" name="kotsu" value="2"></td> <td>$type[1]</td> ##Loop End </tr> <tr> <td>お名前</td> <td colspan="4"><input type="text" size="28" name="name">(全角文字)</td> </tr> <tr> <td><input type="submit" id="submit" value=" 送 信 ">   <input type ="reset" value="リセット"></td> </tr> </table> </form> </body> </html> EOM exit; } ============================== HTMLのLoopと記述している部分にDBより取得した値をfor文で記述したいのですが、うまくいきません。 HTML内にPerlの処理を組み込むには、どうすればいいのでしょうか?

    • ベストアンサー
    • Perl
  • <FORM TYPE="subumit">でデータをCGIに飛ばして、画面には別のHTMLを表示する。

    #submitでデータを飛ばす(A.cgi)処理以外にもう一つウィンドウを開いて(B.html)中継をした上で(B.html)からリンクで(A.cgi)に飛ばせたいと思います。ちなみに質問No.994791も私の疑問に近いのかとも思い参照しましたが初心者でわかりません。 print "<td><form action=\"$script\" method=\"GET\">\n"; #認証後の投稿ページ画面へ(forum.cgiへパラメータを渡す/forum.cgi?id=$id&pw=$pw)へ飛ぶ print "<table align=\"center\"><tr><td>\n"; print "<tr><th><UL><LI>すでにパスワード取得済みの方はこちらからどうぞ</th>\n"; print "<tr><th>ログインID<th><input type=text name=id size=8></tr> \n"; print "<tr><th>パスワード<th><input type=password name=pw size=8></tr> \n"; print "<tr><th colspan=2><input type=submit value=' 認証する '></tr> \n"; #この辺に入れるのかな? #やりたい処理をまとめると<FORM TYPE="subumit">でデータをCGIに飛ばして、画面には別のHTMLを表示する。 #CGI入力されたデータを一個飛ばしてCGIで利用したいためです。 print "<td><input type=hidden\">\n"; print "</td></tr></table>\n"; print "<P><table align=center>\n"; print "<UL><LI> <a href=\"$postmail\">パスワードを新規取得の方</a> はこちら \n"; #認証の前処理:会員登録画面(postmail.html)へ飛ぶ#2004.12.6 print "<LI> <a href=\"$pwmake?mode=change\">パスワードを変更の方</a> はこちら \n"; print "</table></form>\n</body></html>\n"; exit;

    • 締切済み
    • CGI
  • 「option」をソートしたい!

    お世話になります。 調べてもわからないので、丸投げです。ごめんなさい。 このCGIのアイコン選択の「option」をソートで名前順にしたいのですが、 お分かりになるでしょうか? どうぞ、宜しくお願いします。 print "<tr><td><b>アイコン</b></td><td>\n"; if ($UZa_icn) { push(@icn_img,"$myicon"); push(@icn_nam,"管理者専用"); } print "<select name=gicon>\n"; foreach(0 .. $#icn_img) { if ($gicon eq "$icn_img[$_]") { print "<option value=\"$icn_img[$_]\" selected>$icn_nam[$_]\n"; } else { print "<option value=\"$icn_img[$_]\">$icn_nam[$_]\n"; } } print "</select>$ic_tog</td></tr>\n"; } else {print"<input type=hidden name=gicon value=\"$gicon\">";} print <<"EOM"; <tr><td><b>URL</b></td><td><input type=text name=ul size="$ltx_wth" value="http://$gurl" class="text"> </td></tr> <tr><td>&nbsp;</td><td> <input type=hidden name=ps value="$F{'ps'}"> <input type=hidden name=no value="$F{'no'}"> <input type=hidden name=dl value="$F{'dl'}"> <input type=hidden name=mode value="kakikae"> <input type=submit value="修正する" class="button"> </form></td></tr> </table></td></tr></table></div><br><br>

    • ベストアンサー
    • CGI
  • プルダウン選択によるボタンの表示/非表示に関して

    教えて下さい。 下のように、ONCHANGEイベントで、プルダウンにて選択された内容を、別のテキスト ('text')エリアに表示させる記述をしましたが、今度は選択された内容によって、 ボタンの表示/非表示をコントロールしたいと考えています。 実際には、下の記述で、'BBB'が選択された場合のみ、***よりしたの"日"ボタンを 表示させたいと考えています。 どのように記述すれば良いでしょうか。。。 教えて頂きたいと思います。 <SCRIPT LANGUAGE="JavaScript"> function ChangeSelection(form, selection,num) { v = selection.value; form.text.value = v; } <FORM NAME="fm_a" print("<TD><input name='text'></input>\n"); print("</TD>\n"); print("<TD><select name='am_note' ONCHANGE='ChangeSelection(this.form, this)'>\n"); print("<option value=''></option>\n"); print("<option value='AAA'>AAA</option>\n"); print("<option value='BBB'>BBB</option>\n"); print("<option value='CCC'>CCC</option>\n"); print("</select>\n"); print("</TD>\n"); ************************************************************** print("<TD>\n"); print("<input name='Cal' type='button' value='日'\n"); print("</TD>\n");

  • cgiログデータ入力

    下記のようなものを作成しました。 if ($FORM{'WORD'} eq 'フォーム'){ &form; } elsif($FORM{'WORD'} eq '確認'){ &kakunin; } elsif($FORM{'WORD'} eq '入力'){ &nyuuryoku; } sub kakunin{ print "<FORM METHOD=POST ACTION=top_nyuuryoku1.cgi>\n"; print "<TABLE CLASS=TABLE2 CELLSPACING=0 CELLPADDING=2>\n"; print "<TR><TD WIDTH=80 CLASS=TD1>社員番号</TD><TD CLASS=TD2>$FORM{'BANGOU'}<INPUT TYPE=HIDDEN NAME=BANGOU VALUE=$FORM{'BANGOU'}></TD></TR>\n"; print "<TR><TD WIDTH=80 VALIGN=TOP CLASS=TD1>本文</TD><TD CLASS=TD2>$FORM{'NAKAMI'}</TD><INPUT TYPE=HIDDEN NAME=NAKAMI VALUE=$FORM{'NAKAMI'}></TR>\n"; print "</TABLE>\n"; print "<BR>と入力されました。これでよければボタンを押してください。<BR><BR>\n"; print "<INPUT TYPE=HIDDEN NAME=WORD VALUE=入力>\n"; print "  <INPUT TYPE=SUBMIT CLASS=BUTTON VALUE=入力>\n"; print "</FORM>\n"; } sub nyuuryoku{ print "入力しました。<BR>\n"; print "<A HREF='top.cgi'>戻る</A>\n"; open (FILE,">>top.log"); flock(FILE,2); @FILES = "$buffer\n"; print FILE @FILES; flock(FILE,8); close(FILE); } ※多少省略あり。 ※$bufferはこれの前のページから受け取ったもの。 kakuninのところの$FORM{'NAKAMI'}ではちゃんと半角スペースや改行が認識されていますが、nyuuryokuになるとだめです。 一体何が原因なのでしょうか?

    • ベストアンサー
    • CGI

専門家に質問してみよう