CGI初心者です、Perlの知識は皆無です。
質問は2つあるのですが・・・
1、CGIのページを例えば画像を呼び出すようにHTMLで指定できるのでしょうか?
画像であれば<img src=".../AAA.gif">ですが、こんな感じでCGIのページ自体をHTMLの指定した枠に呼び出すことはできるのでしょうか。
2、CGIページのカスタマイズ
現在、CGIレスキューさんからダウンロードしたファイルをカスタマイズしています。
条件指定ができる検索データベースです。
設置と動作確認はできたのですが、思うようにレイアウトできないでいます。
Perl記述中にテーブル(HTML)を挿入すると、プルダウンメニューから選択項目が飛び出してしまうのです。
(おおざっぱに記述すると)
print <<"---HTML---";
あいうえお<select name="aiueo" size=1>
---HTML---
forseach $i (@AIUEOs) { print "<option value=\$i\"$pref_selected{$i}>$i</option>\n";}
print <<"---HTML---";
</select>
<p>
(略)
---HTML---
こんな感じです、変数の部分は変えてます。
ずっと上の方で、
@AIUEOs = ("あああ", "いいい", "ううう", "えええ", "おおお");
と、変数が定義されてるようです。
名称かきく「プルダウンメニューA」
名称あいうえお「プルダウンメニューB」
要は、「 」の部分を揃えたい(縦に整列)のですが、うまくいきません。プルダウンメニューが飛び出してしまいます。
2段目のHTML記述部分がなぜ閉じタグから始まっているのかもよくわからないです。
端折ってますので、分かりにくいと思いますが、コメントいただける方、よろしくお願いします。
No.2ベストアンサー
- 回答日時:
再び回答しにきました。
1. iframeについて
iframeタグにはそれ自身のサイズを指定するwidth(幅) と height(高さ)の属性があります。
また、スクロールに関しても、scrolling=noとすることでスクロールバーの表示もコントロールできます。
<iframe src="hoge.cgi" width="50%" height="200" scrolling=no></iframe>
2. select周りについて
ようやくお悩みの部分がわかってきました。
純粋なHTMLなら理解されているようですね。
ならば、「foreach $i (@PREFs) 以下の部分は selectタグのoption部分にあたる部分である」という風に考えてください。
<<"---HTML---"; 部分をまたがっても構わないのです。</select>の部分も含めてテーブルにしてしまってください。
要は、perlって言語を使ってはいますが、結局はHTMLを書いているのです。
今回のプログラムをブラウザで実行させて、
画面に出した状態でソースを表示してみると分かりますが、
perlはhtmlを動的に書き出しているのであって、
結局はprintなどで書き出されるhtmlがページのレイアウトを決めます。
したがって、<<"---HTML---"; 部分をまたがってても、最終的に出力されるhtmlが正しければよいのです。
chupark様
ありがとうございます。1、の属性はあとで気付きました。これは問題なかったのですが、2、にて
<<"---HTML---";を気にせずにテーブルで挟んだら、うまくいきました!項目がはみでらずに表示されてます。
これでレイアウトはなんとかなりそうです。どうもご親切にありがとうございました。
なぜこうなるのか仕組みがまだ理解できてませんが、Perlも少しづつ勉強していこうと思います。また機会がありましたらよろしくお願い致します!
No.1
- 回答日時:
1.
カウンタープログラムなどのように、表示結果がGIFで表示されるようなものは<img>タグで埋め込まれていることがありますね。
そうではなく、formなども表示させたいのであれば、フレームか iframe を使うのはどうでしょうか?
<iframe srce="hoge.cgi"></iframe>
2.
perlで print と書かれいている部分は単純にその内容を出力する部分です。
HTML部分へ細工をしてレイアウトをいじってみてはどうでしょう?
具体的には、tableタグなどで かきく、あいうえお の部分と <select>の部分とを別のセルへ入れるようにします。
ちなみに、例文でお書きになった部分は、
selectの中身になる option の部分をプログラムで制御して @AIUEOs に入っているものを表示させるようにしてあるようです。
プログラムでoptionをすべて書き終わった後、selectの閉じタグを改めてprint で出力させているので閉じタグからはじまったような形になっています。
この回答への補足
早速のご回答、ありがとうございます。
1、については仰せのとおり、<iframe src="~ で表示できました。
ただ、フォームの大きさを、表示させたいサイズに指定するとスクロールバーがでてきてしまいます(また課題が・・・)
2、例えば、
<table>
<tr>
<td>かきく</td>
<td> <select name="kakikku"></select>
<option value="かきく"$kakiku_selected{'かきく'}>かきく</option> </td>
</tr>
<tr>
<td>あいうえお</td>
<td> <select name="aiueo"></td>
</tr>
</table>
---HTML---
foreach $i (@PREFs) { print "<option value=\"$i\"$aiueo_selected{$i}>$i</option>\n"; }
print <<"---HTML---";
</select>
---HTML---
このように名称と入力フォームをそれぞれテーブルに入れようとすると、“あいうえお”の方がプルダウンメニューからはみ出して表示されてしまうんです。
“かきく”の方は、正しく表示されます。“かきく”の方は<select>タグの直後に<option>でメニュー項目がきてるから正常に表示されるのだと思いますが、
“あいうえお”の方は、閉じタグ</select>だけが、挟んだテーブルタグの外側にきてしまってるからだと思うのですが、いかがでしょうか?
>プログラムでoptionをすべて書き終わった後、selectの閉じタグを改めてprint で出力させているので閉じタグからはじまったような形になっています。
たぶんこの辺がよくわかっていないためだと思います。
</select>も含めてテーブルで囲むべきでしょうか。
そうすると、
---HTML---
<<"---HTML---";
をまたがってテーブルを記述することになるんですが・・・
でも大変参考になりました。ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
CGIのテキストが文字化けし...
-
my $html<<EOMの意味を教えてく...
-
HTMLで作っているサイトに、別...
-
JSONで文字列が長い時
-
Application.ScreenUpdating = ...
-
16進の10進変換について
-
テキスト入力後、エンターを押...
-
VBAでPDFのコピーとリネームを...
-
formで特定のinputを送信しない...
-
C言語のflagの使い方が分かりま...
-
FindFirst を複数条件で検索
-
セレクトボックスのselected属...
-
実行時エラー 3020の対策
-
文字の横にプルダウンを表示さ...
-
c言語 16進数の2進数への変換
-
セレクトメニューで2つの項目...
-
ACCESS テキストボックスを隙...
-
エクセルマクロでフォルダのコ...
-
メモリをアドレスを直接指定し...
-
テーブル内でドロップダウンメ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
結果を得て自動的にページ移動...
-
どうしてもCookieとCGI・perlの...
-
CGIにおいて、エンコード・文字...
-
malformed header from script....
-
my $html<<EOMの意味を教えてく...
-
何がいけないんでしょうか?
-
アクセス人数制限CGIについて。
-
Perl CGIの中で # を使ってコメ...
-
ランダムリンク(ランダム表示...
-
CGIから出力される文字が化けて...
-
CGIにてPrintを一気に行う
-
TeraPadでよく使う文字を特定キ...
-
初歩的なCGIですが その2
-
半自作cgiが思うように動作しま...
-
HTMLの代わりに「SCALAR(・・・...
-
出来ているHTMLに無料CGIをつけ...
-
FLASHとCGIでのデータの受け渡...
-
shift-jisからutf8に変換
-
SSI にグローバル変数を渡すこ...
-
Perlでの数字の12桁化
おすすめ情報