• 締切済み

普通のHTMLの画面からCGIへリンクを貼るには?

誰か助けてくれる方おしえていただけますでしょうか 何個か質問があります。 ▼一つ目 HTMLでトップページを作りました。 次にCGIでプログラムを作りHTMLを吐き出す”○○○.cgi”を作りました。 トップページ(HTML)から○○○.cgiへリンクを貼る方法をおしえてもらえないでしょうか? 現在の対応としては・・ ●普通にリンクを貼ってみましたが、ファイルをダウンロードする格好になってしまいました。 ▼二つ目 perlとmysqlを使ってCGIを作っています。内容的には、必要なデータを登録し、それを検索する作業を作っています。キーワードの検索をした時に引っかかってきた内容を一覧画面に表示させる時に、○×件ごとに画面に表示させたいのですが方法が分かりません。 例えば検索結果を10件ごとに画面に表示させるにはどのようにしたらよいのでしょうか? どうか教えて下さい。 ▼三つ目 先ほどと状況適には変りませんが、今度は情報を登録する時の事です。 情報をインプットボックスに入力してもらいそれをmysqlのDBに格納するようにしています。しかし入力する手間を省くためにコンボボックスやチェックボックスなどに代入できる物はしたいと考えています。 しかし普通にやったのではだめなのでしょうか? 又一度入力したデータを変更があったために少し入力データを編集できるようにしています。 どうかおしえていただけないでしょうか 文章が長々となってしまいましたがどうぞ助けて下さい。(回答して頂いた方にはすぐにお礼、補足説明などをさせて頂きます。)

みんなの回答

  • kazu-kun
  • ベストアンサー率31% (72/232)
回答No.8

一応、確認ですが、ブラウザ依存はなしですよね? (MSIEでもNNでも同じですよね?) やはり、CGIが吐き出すHTMLのヘッダにContent-Typeヘッダが ないんじゃないかと思うんですが。

aeic
質問者

お礼

回答頂いてありがとうございます。 そのとおりでした。 トップページにCntent-Tyoeを入れた所、画面が表示されるようになりました。 どうもありがとうございます。 (涙)

  • kazu-kun
  • ベストアンサー率31% (72/232)
回答No.7

一つ目は解決したんでしょうか? トップページは表示できているんですよね? それでHTMLを吐き出すCGIを実行するとどうなるんですか? スクリプトの中身が表示されてしまうんですか? 「普通に」とか曖昧な書き方だと状況がよく分からないです。

aeic
質問者

お礼

ご指摘ありがとうございます。 kazuさんの言う通りです。 トップページは表示できるのですがリンクを貼りそこからCGIのファイルに飛ばす時にクリックするとウィンドウが現れます。 メッセージは”ファイルに保存する、ファイルを開く” というメッセージが現れます。 という事です。 何か手がかりになる事がございましたら どうか教えて頂けないでしょうか?

  • noopee
  • ベストアンサー率38% (114/297)
回答No.6

再び。 3について。 「最初から」というのは、aeicさんが「普通にやる」というのと同じ方法です。 もし、セットしたい情報の項目や数が変化するのでしたら、別のテーブルに入れておいて、そこから持ってくるようにした方がいいと思います。 その友達がおっしゃっている「もっと特殊なやり方」ってどんなのでしょう。 別に、htmlでの入力ならこれ以外の特殊な方法なんていらないと思うんですが...。 それ以外は使ったことなくて、思い当たる方法がないので。 先ほどの2についての修正。 print "hiddenかリンクアドレスでname=$beforepage…"; と書きましたが、name=page、value=$beforepageか、page=$beforepage&その他条件等の間違いでした。

  • noopee
  • ベストアンサー率38% (114/297)
回答No.5

2について。 1、検索結果が何件あるかをカウント 2、?ページ目か(現在表示しているものが10件ごとの何回目に当たるか) 3、判断したものから10件を表示(DB使用ならIDナンバーなどから) 4、次ページのための変数をセット 私は以下のようにしてます。 ****************************** $max_db_get = 検索結果の件数; $max_page_print = 表示させたい件数; if ($page eq '' || $page == 0){ $page_start = 0; } else{ $page_start = $page; } $end_data = $max_db_get; $page_end = $page_start + ($max_page_print -1); if ($page_end >= $end_data) { $page_end = $end_data;} foreach ($page_start .. $page_end) { $i = $_; 変数群表示; } $nextpage = $page_end + 1; $beforepage = $page_start - $max_page_print; if (($end_data - $page_start) >= $max_page_print) { print "インプットボタン「次へ」orリンク"; print "hiddenかリンクアドレスでname=$nextpage・毎回検索の時は検索条件等の変数をセット"; } if ($page_start ne 0 && $beforepage >= 0) { print "インプットボタン「前へ」orリンク"; print "hiddenかリンクアドレスでname=$beforepage・毎回検索の時は検索条件等の変数をセット"; } ****************************** 3について。 よくある住所や職業のような形態の情報なら、別テーブルにそれをセットしておいて、そこから持ってくるか、最初から表示させておく、というのはダメなんでしょうか。 「普通にやったのではだめなのか」という意味がよくわかりません。

aeic
質問者

お礼

noopeeさん本当にありがとうございます。 すごく助かりました。 3についてですが、最初から表示させるやりかたというのはどのようななりかたなのでしょうか?具体的に教えていただけないでしょうか? また”普通にやったのでは”というのは <FONT size="+1">場所SELECT NAME="DBUNRUI" SIZE="1"> <option value="zz">全部 <option value=a>農業 <option value=m>公務 . . . <option value=n>分類不能産 </SELECT></TD> ような状態で入れるという形式の事です。 友達に聞いたのですがそのやり方ではなくもっと特殊なやり方でないとだめだときたのですが・・・

  • natural
  • ベストアンサー率37% (419/1115)
回答No.4

No2のnaturalです。 すいません、フォーム入力が要らないなら件の方法ではないですね。(^_^; フォームが伴う場合のみとして聞き流してください。

  • GOLDEN
  • ベストアンサー率46% (283/607)
回答No.3

1:.htaccessというファイルを作成し、その中に.cgiは実行形式のファイルだと 言うことを記述してやります↓ AddType application/x-httpd-cgi .cgi と書けばOKです その上で、.cgiのファイルのパーミッションを実行可能に変更すればOKです ちなみに、.htaccessは、そのファイルが存在する場所以下のすべてのディレクト リに於いて有効ですので、cgiが存在する最初の場所よりも、index.htm等がある 場所に置いた方がいいでしょう 2、3についてはちょっとわかりません・・・ゴメンなさい

  • natural
  • ベストアンサー率37% (419/1115)
回答No.2

とりあえず一つ目だけですが・・・。 CGIの呼び出しはformタグのactionで指定できます。

  • kazu-kun
  • ベストアンサー率31% (72/232)
回答No.1

mysqlについては知りませんので、一つ目だけ。 普通にリンクするだけでいいはずですよ。 ダウンロードする格好とは、あのブラウザが出すダイアログのことですか? そうなら、ブラウザがHTMLと認識していないということですから、 Content-Typeがおかしいのでは?(text/htmlになっていないのでは?)

aeic
質問者

お礼

わざわざご足労して頂きありがとうございます。 <<-- Content-Typeがおかしいのでは?(text/htmlになっていないのでは?) -->> というありがたいアドバイスですが、トップページ側(HTML)なのかCGI側にファイルに入れるのかが解りませんでした。 どちらなのかおしえていただけないでしょうか? 失礼します。

関連するQ&A