CGI初心者です。セレクトボックスで表示しているものをプルダウン形式にしたいのですが、どこを直したらいいのか教えてください。

ちなみに、いまのスクリプトは

$size1 = @part1 + 1;
print "<td valign=top nowrap><font color=\"$t_color\">■</font> <B>ユーザ名</B><br>\n";
print "<select name=P1 size=\"$size1\">\n";
print "<option value=\"99\" selected>指定なし\n";

foreach (0 .. $#part1) {

print "<option value=\"$_\">$part1[$_]\n";
}

print "</select></td>\n";

です。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

selectタグの 「 size=~ 」の部分をカットすればドロップダウン(プルダウン)形式になりますよ。

    • good
    • 0
この回答へのお礼

こんなに早く解決するなんて!\(◎o◎)/!
どうもありがとうございました。できました!

お礼日時:2001/01/24 16:31

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

Q
の場所は?

CGIでデータを受け渡しするアンケートを作っています。html中に書く<form method=post action="***.cgi">~</form>“~”の場所についてですが質問項目を全て挟まなくてはいけませんか?実は、チェックボックスの「最大2つまで回答可」という部分をJavascriptでチェック個数を超えてチェックした時点でアラートが出るようにしてます。その記述中にすでに<form>~</form>タグを制限をかけたい質問に置いているので、質問全体を<form method=post action="***.cgi">~</form>でくくると入れ子になってしまいます。大丈夫ですか?

Aベストアンサー

<form method=post action="***.cgi" name="form1">~</form>
にする。つまり「最大2つまで回答可」という部分だけをonclickでJavascriptを呼び出したらいいと思います。

Q「<」や「>」を「&lt;」や「&gt;」に変換させなかったらどうなるのでしょうか?

今CGIをカスタマイズしています。
書き込みフォームでタグを使いたいのですが、タグをそのまま書き込むとHTML出力時に、&lt;や&gt;に変換されて表示されてしまいます。
なのでその変換する処理を無くしたいと思っているのですが、その処理を無くすとどういう不具合があるのでしょうか?無くそうと思っているのは下記のような箇所です。
~ s/</&lt;/g;
~ s/>/&gt;/g;
(わざと全角で書いてます)
書き込みデータにはdatファイルを使っています。

Aベストアンサー

念のため・・・
No.4は表示するときではなく、
>formからのデータ取得時にタグを解析して<b>や<font color="~">以外のタグは変換する
方法のつもりで書きました
※<>→&lt;&gt;変換処理の直後に入れる。

いちいち<font color="~">と記述するのは大変なので、
<色=red>赤文字</色>などと覚えやすいタグにするのも親切でいいかも

#<色=red>~</色>を<font color=red>~</font>に
=~ s/&lt;(色)(.*?)&gt;(.*?)&lt;\/\1&gt;/<font color$2>$3<\/font>/gi;

Q[返信]

夜分にすみません。
[~]の鍵括弧はどういう言語なのでしょうか?
htmlの辞書に載っていませんでした・・。

Aベストアンサー

ブラウザで見ると
[返信]
って感じになり「返信」のトコだけ下線付きのリンクになります。
「[」と「]」は単なる文字ですよ(笑)

Qハッシュについて><;

ハッシュにいれた変数と値を、それぞれ
変数=値
の形にしたいのですが、どうすればよいのでしょうか?><;

どなたか教えてくださいーっ><;

Aベストアンサー

while(($var, $val)=each %hash){
#処理
#$$var=$val;
}
って感じだと思うけど、
ハッシュに入れた変数というのは、リファレンスですか?
でないとうまくないけど
(ハッシュの内容というのがもうひとつ、不明なので)テストしてないのでちゃんと動くかどうかはわかりません。

どういう感じでやっているのか補足して下さい。

Qどうやればいいのかわかりません><;

あるプログラムを完成させたいんですが、
以下の部分がうまくいきません。

foreach $del_word ( @del){
if ( "$FORM{'sub_product'}" =~ /$del_word/){
open(IN, ">>./csv/log.csv") or printErrorPage("エラー");
eval{ flock (FILE, 2) };
seek(IN, 0, 2);
print IN "$in";
close(IN);
{ exit; }
}
}

簡単に説明しますと、
@delは1行に1単語(例えば「時計」など)ずつ約10行ほど入力したdel.csvファイルの内容が入っています。

ちなみにそこの部分は
open(OUT, "./csv/del.dat") or printErrorPage("エラー");
eval{ flock (OUT, 1) };
@del = <OUT>;
close OUT;
です。

そして、どういった作業をしたいかというと、
この$FORM{'sub_product'}に入っているワードに@delに収納されているワードがひとつでもマッチする場合、
$inという文章をlog.csvに書き込むというプログラムです;;

初心者なのですが、どなたかアドバイスいただけたらと思います!!どうぞ宜しくお願いしますーっm(_)m

あるプログラムを完成させたいんですが、
以下の部分がうまくいきません。

foreach $del_word ( @del){
if ( "$FORM{'sub_product'}" =~ /$del_word/){
open(IN, ">>./csv/log.csv") or printErrorPage("エラー");
eval{ flock (FILE, 2) };
seek(IN, 0, 2);
print IN "$in";
close(IN);
{ exit; }
}
}

簡単に説明しますと、
@delは1行に1単語(例えば「時計」など)ずつ約10行ほど入力したdel.csvファイルの内容が入っています。

ちなみにそこの部分は
open(OUT, "./csv/del.dat") or p...続きを読む

Aベストアンサー

>以下ではなぜか動作しません><;
多分、
@delと@nodelと@limdel
の配列のサイズが違うのに
$nで参照しているからじゃないですかね~
同じサイズの配列で、同じ位置にあるもので判定するならいいかもしれないですけど。
いちいち、配列でループして調べるのがいいと思いますけど
例えば、あんまり能率を気にしないのだったら
$retdel =grep "$FORM{'sub_product'}" =~ $_/x, @del;
$retnodel =grep "$FORM{'sub_product'}" =~ $_/x, @nodel;
$retlimdel=grep "$FORM{'sub_product'}" =~ $_/x, @limdel;
とかしておいて
if($retdel > 0 && $retnodel==0 && $retlimdel > 0){
#@delでマッチしてかつ、@nodelにマッチしなくてかつ、@limdelにマッチ
}
とかできるかも(未確認)


このカテゴリの人気Q&Aランキング

おすすめ情報