選択式アンケートで分岐するCGIを教えて

このQ&Aのポイント
  • ホームページ作成ソフトを購入してホームページが自作できるようになったので、プレゼントの紹介サイトを作りたい。選択肢を点数化し、選択された回答項目の合計点数で分岐し、商品紹介ページを変える。
  • アンケート結果に応じて合計点数で分岐し、プレゼントの商品紹介ページを変える仕組みを作りたい。宝くじセット、ご当地スイーツ、シネコンチケット、ワイン試飲会チケットなどのプレゼントを用意する。
  • ホームページ作成ソフトで作成したサイトの中に、選択式のアンケートを盛り込みたい。しかし、CGIプログラムの作成はできないため、選択アンケートCGIを探している。無料のものを希望している。
回答を見る
  • ベストアンサー

選択式アンケート項目合計点で分岐するCGIを教えて

こんにちは、お世話になります。 ホームページ作成ソフトを購入して ホームページがすこしづつ自作できるように なってきたので プレゼントの紹介サイトを作りたいと思っています。 具体的には次のようなことがしたいです 次のようなアンケートをとり それぞれの選択肢を点数化して配点しておき、 選択された回答項目の合計点数で分岐して プレゼントの商品紹介のページを 変えるように表示したいと思います。 たとえば次の3項目の質問をして、 それぞれの選択肢にそれぞれ配点をしてみた場合ですが  注.(配点部分)はホームページには表示しません =============================== ●あなたのプレゼントについてのアンケートです。  どうぞ条件を選択してください 1.年齢: 20代(10点) 30代(20点) 40代(30点) 50代以上(30点) 2.予算: 2000円(10点) 3000円(15点) 5000円(20点) 6000円以上(30点) 3.プレゼントの相手: 女性(20点) 男性(10点) ================================ この結果  訪問者が20代、予算は3000円、相手は女性を選択した アンケート結果とすれば合計点45点になりますが 合計点数のテーブルは あらかじめ次のように設定してあるとします。 30点台:宝くじセット      →分岐先A.html 40点台:ご当地スイーツ     →分岐先B.html 50点台:シネコンチケット    →分岐先C.html  60点以上:ワイン試飲会チケット →分岐先D.html 結果、表示するのはB.htmlになります。 ホームページそのものは自分でホームページ作成ソフトで 作れるようになりましたが このようなアンケートを取って、合計点数をつけ このように条件分岐するには そのような動作をする選択アンケートCGIが必要らしいと 聞きました。 自分ではCGIというプログラムを書くことは できませんので どなたか、このような選択アンケートを使えるCGIを ご存知でしたら 教えていただけませんでしょうか。 (できたら無料のものがありがたいのですが) サーバーはロリポップさんというところを借りて います。FTPというのは少しわかります。 よろしくお願いいたします

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

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

  • ベストアンサー
回答No.1

ささっと、要求する仕様のものを作ってみました。 http://www.daiba.cx/okwave/q7773869/test.cgi ダウンロードは、こちらより。。。 http://www.daiba.cx/okwave/q7773869/test.zip 注意点 Shift-JIS、EUC、UTF8どのコードでも一応動きます。 (使用する文字で、Shift-JISは化ける場合があります) ですが、できればUTF8にして、htmlのヘッダ部分を 以下のようにして下さい 最初のHTML の・・の部分あたりです。 <html><head> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html lang="ja"> <head> <meta http-equiv="Content-Language" content="ja"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> あとは、パーミッションを、最低でも 755 に設定し、 この例では、0.htmlとa.htmlからd.htmlまで移動しますので、 ファイルを置いてください。 以下、コード ---------- #!/usr/bin/perl use strict; use CGI; # プレゼントのデータハッシュ my $presents={ 1=>{ name=>"年齢", 1=>{ name=>"20代", score=>10, }, 2=>{ name=>"30代", score=>20, }, 3=>{ name=>"40代", score=>30, }, 4=>{ name=>"50代以上", score=>40, }, }, 2=>{ name=>"予算", 1=>{ name=>"2000円", score=>10, }, 2=>{ name=>"3000円", score=>15, }, 3=>{ name=>"5000円", score=>20, }, 4=>{ name=>"6000円以上", score=>30, }, }, 3=>{ name=>"プレゼントの相手", 1=>{ name=>"男性", score=>10, }, 2=>{ name=>"女性", score=>20, }, }, }; # 合計点数のテーブル my %scoretable=( 0=>"0.html", # 該当なかったので新設 30=>"a.html", # 宝くじセット 40=>"b.html", # ご当地スイーツ 50=>"c.html", # シネコンチケット 60=>"d.html", # ワイン試飲会チケット ); # エラーメッセージ my $errmsg="選択されていません。"; my $errflg=0; my %err; my $score=0; my $cgi=new CGI; # チェック及び計算 if($cgi->param("submit") ne "") { for(my $i=1; $presents->{$i}->{name} ne ""; $i++) { my $parm=$cgi->param("form$i"); if($parm eq "") { $err{$i}=$errmsg; $errflg=1; } else { $score+=$presents->{$i}->{$parm}->{score} } } # スコアに応じてページに飛ぶ # (ここもCGIでもいいのですが、あえて飛ばします) if(!$errflg) { my $page=""; foreach my $stable(sort keys %scoretable) { if($score >= $stable) { $page=$scoretable{$stable}; } } print <<EOM; Location: $page EOM exit; } } if(1) { # HTTPヘッダ print "Content-type: text/html\n\n"; # 最初のHTML print <<EOM; <html><head> <title>プレゼントテスト</title> </head> <body> <h1>あなたのプレゼントについてのアンケートです。</h1> どうぞ条件を選択してください <hr /> <form action="test.cgi"> <table> EOM for(my $i=1; $presents->{$i}->{name} ne ""; $i++) { print <<EOM; <tr><td> $i.@{[$presents->{$i}->{name}]} </td><td> EOM for(my $j=1; $presents->{$i}->{$j}->{name} ne ""; $j++) { print <<EOM; <input type="radio" name="form$i" value="$j"@{[$cgi->param("form$i") eq $j ? ' checked="checked"' : '']} /> @{[$presents->{$i}->{$j}->{name}]} EOM } print <<EOM; </td><td>$err{$i}&nbsp;</td></tr> EOM } print <<EOM; <tr><td>&nbsp;</td><td> <input type="submit" name="submit" value="送信" /> </td></tr> </form> </body> </html> EOM }

resetbrain
質問者

お礼

vmdaさん こんばんは   ご親切に教えていただきありがとうございます。 魔法のようにCGIを書いていただき感謝です。 ロリポップのサーバにアップロードして 属性を変更したら見事に動きました。 自分のやりたかったことがそのまま現実になりました 本当にありがとうございました。 とてもうれしいです。 また、未記入の時にエラーメッセージがでるようにまで 気を使っていただきありがとうございました 最初に htmlのデータをホームページビルダー17で 読み込んで 開いてみるとどういうわけか <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <meta http-equiv="Content-Style-Type" content="text/css"> <meta name="GENERATOR" content="JustSystems Homepage Builder Version 17.0.2.0 for Windows"> が書き込まれてしまい、 chraset=utf-8になりませんでした。 タイトルのところや他の文字が化けてしまったので 無償ソフトのKompozerで読み込み直し、 教えていただいた通りの設定を書き込み 文字エンコードを指定して保存でUTF-8で保存したら うまくいきましたので そちらと差し替えています。 検索してみるとCGIというのは、 PerlとかPHPとか いろいろな言語で書いてあるそうなので こんなに自分の欲しかったものを さくっと作られてしまう vmdaさんは本当に尊敬してやみません 自分でも条件や商品名を変えれば うまくつかえそうです

resetbrain
質問者

補足

ymdaさん こんばんは さきほどはありがとうございました。 で、実はお名前をタイプミスしておりました。 yとvを間違えてしまい 申し訳ありませんでした プロフィールを拝見させていただきました。 プログラミングにお強い理由がよくわかりました。 これからも困ったときには「教えて」のお世話になるかと 思いますが、またお教えいただければと思います 本当にありがとうございました

その他の回答 (1)

回答No.2

実は、偶然たまたま組んでいたもののカケラを 利用したようなものなのですが・・・ その為に、書き方が一部いいかげんな部分があるかもしれません。 後は、これは無料サーバーでは動かない場合があるかもしれません。 (海外だと、文字コードの問題も出ることもありますが) ページを転送する部分を書き換えれば動くかとは思われます。 後は、自分の探しているCGIというのは、見つかるようで見つからない ことも結構あるようです。 ページを転送しない仕様でしたら、既存であるかもしれませんが 今回のは、HPビルダを使うことを前提にしましたので 転送するようにしています。 本当は、勉強して頂くのが一番ですが、最低でも、改造するスキルが あれば良いかもしれません。 最後に (使用する文字で、Shift-JISは化ける場合があります) と書きましたが、その場合、化けている文字の前に、半角の¥を 記述すると、化けがなおることがあります。

resetbrain
質問者

お礼

ymdaさん こんにちは きょうは午後からは時間がとれたので いろいろHPビルダーで試行錯誤していました ymdaさんはPerlでも、 最初の方にuse cgiを書かれているから どうもモジュールとかいうものを使って 簡潔なものを作られたらしいことだけは 検索してわかりました とても偶然のカケラで作られたものなんて... 謙遜されていますが、 ぜんぜんオーダーメードのCGIです あと、言語についてもわからないながら 自分も少し勉強しようと思って 無料のプログラム学習サイト ドットインストール http://dotinstall.com/ を見つけました。 そのうち自分でもできるようにマイペースで 勉強してみたいとおもいます。 のちほど ベストアンサーでお礼を差し上げます

resetbrain
質問者

補足

ymdaさん こんばんは  しばしHPビルダーと格闘しておりました。 CGIについては わからないながらいろいろ 検索して勉強してみました 付け焼刃ですが どうも配列というのをうまく使うと いろいろな条件や配点を組み合わせるのが 容易になるみたいです そのうちに自力でCGIかけるよう頑張っていきたいです

関連するQ&A

  • アンケートのCGIを探しています

    ホームページ上にアンケート調査を追加したいと思っていますが、 無料で設置できるようなCGIをご存知でしたら教えてください。 ホームページビルダー12でアンケート機能があり試用してみましたが メールで記入者から送信される形態の為、記入者のメールアドレス 情報が見えてしまい、管理義務を問われかねませんので避けたいです。 また集計の機能も無く不便を感じます。 要望としては ・簡単に設置できるもの(あまり詳しくありません) ・必須入力条件設定 ・単一選択回答 ・複数選択回答 ・フリー記入回答 ・Web上で完結して集計したい  メールで記入者から送られるようなものは×  (メールアドレスの漏洩を警戒) ・同一者の重複入力制限(あまり重視はしません) ・結果データをCSV等で管理者がダウンロードできる などでしょうか・・・。 なおレンタルサイトのCGI動作要件は「Perl5」とあります。 よろしく御願いします。

  • 選択アンケートから結果表示のCGIが欲しい

    やや具体的な例を挙げます。質問は10。内容と順番はいつも同じ。選択肢はYESかNO。特に大切なのは次で「そのYESとNOが、解答と(例えば)8個以上合っていたらAのページ、7個以下ならBのページを表示する」・・・そんなアンケートプログラムが欲しいです。 でも私はCGIが作れません。どこかに該当するものはありませんか。或いは作成していただけるところはありませんか。ご存知の方、ぜひ教えて下さい。よろしくお願いします。

    • 締切済み
    • CGI
  • アンケートCGI作成について、form actionの呼びだし等につい

    アンケートCGI作成について、form actionの呼びだし等について質問です。 初めまして、CGIアンケートを作成しようとしているPerl初心者です。 説明ページ(ex01.html) ↓ フォーム付きアンケートページ(enk01.html) ↓ 説明ページ(ex02.html) ↓ 以下略 という流れでアンケートを続かせたいのですが (だいたい、ex.htmlとenk.htmlが各20ずつくらいです。) フォーム付きアンケートのフォーム <form action="form.cgi" method="post"> <input type="radio" name="Emotion_Body" value="0" checked> 選択肢1 <input type="radio" name="Emotion_Body" value="1"> 選択肢2 <input type="radio" name="Emotion_Body" value="2"> 選択肢3 <input type="submit" value="次のアンケート"> となっていて、actionに次のページのhtmlをいれ込むことができませんでした。 (form.cgi:formから受け取ったデータを外部ファイルへ書きだすCGIファイルです。) フォームの「次のアンケートボタン」を押すと、 form.cgiにフォームのデータを送りつつ、ex02.htmlを表示させるということはできないものでしょうか? 過去ログによるCGIに表示させる方法を書くのだと、 フォームページの間に、ただのhtmlファイルを挟むので、 (例:enk01.html→ex02.html→enk02.html→…) 各ページに対応したCGIファイルを書かなければならないということなのでしょうか? よろしくお願いいたいします。

    • ベストアンサー
    • Perl
  • 損益分岐点の求め方

    会社で経営分析の試験があるのですが解法わからず困ってます。 皆様方の知恵を貸してください。よろしくお願いいたします。 取引先A社の見積書をもとに予算を次のように見積もりました。 販売単価 500円 製品1個あたり変動費 300円 製造固定費総額 200万円 Q1.A社の損益分岐点は次のうちどれか? (1)10,000,000円 (2)6,250,000円 (3)5,000,000円 Q2.A社は収益力を向上させるため人員整理などのリストラ策を実施し、その 結果、人件費20万円、減価償却費が45万円(ともに固定費)減少しました。 損益分岐点販売量は何個になるか? (1)9,000個 (2)7,750個 (3)6,750個 売上高/変動費/固定費から求められることはわかっているのですが、数量が ないので売上高が求められません…。

  • CGI内での条件分岐について教えてください。

    CGI内での条件分岐について教えてください。 買い物カートCGIの中で下記のラジオボタンの選択において入力フォームを表示・非表示に切り替える質問をしたばかりですが、 <input type="radio" value="1" onclick="func1()" name="gift" checked />1ヶ所 <input type="radio" value="2" onclick="func2()" name="gift" />3ヶ所 <input type="radio" value="3" onclick="func3()" name="gift" />5ヶ所 今度は入力後の確認画面にて上記で選択された内容によって。。。 value1の場合は1ヶ所分の発送先住所、value2の場合は3ヶ所分の発送先住所・・・ と言った感じで表示をさせたいのですが、条件分岐に関してどのようにしたら良いのか分からず質問をさせて頂きます。 require "cgi-lib.pl"; ReadParse(*input_data); if ($input_data{'gift'} eq "1") {  ※value1で入力した1件分の発送先住所 } elsif ($input_data{'gift'} eq "2") {  ※value2で入力した3件分の発送先住所 } else {  ※value3で入力した5件分の発送先住所 } とか、試してみましたがだめでした(泣 CGI(Perl)に関しては初心者的で少々初心者レベルで触る程度の技術レベルです(汗 どうしたら良いのか教えてください。 思い当たる点は、そもそも条件式の中にある"gift"はどこかで指示を出さないとCGIの中で認識されていないのでは?とも思っています。 実際に上記の例でカートの確認ページを表示すると、 if ( eq "1") { } else ( eq "2") { } else { } と表示されるので素人ながらそう思いました。 質問がへたですが宜しくお願いします。

  • アンケートCGI(メールフォーム)

    ホームページでアンケート&プレゼントをしようと思っています。 http://form.fc2.com/ これがベストに近いのですが、デザイン上の制約があるのと、毎月変わるプレゼント内容を表示できないなどがあり他のものを探しています。 そこで、設置型のアンケート&メールフォームを教えてください。 必要な機能は以下のものです。 ・もちろん、メールで結果が届く。 ・項目を自由に追加できる。 ・項目の種類を1つずつ順番に選べない場合、順番を入れ替えることが出来る。(fc2と同じ機能) ・項目の修正が簡単に出来る。 また、デザインの修正(html)は自分で出来るので、デザインがいまいちと言う物については全然問題ないです。 良いCGIがあれば紹介をお願いします。

    • 締切済み
    • CGI
  • 損益分岐点売上高等について

    損益分岐点売上高等について次の事例でどなたか教えていただけますでしょうか。 (事例)●売上高8,500 ●固定費6,500 ●変動費比率20% (1)損益分岐点売上高を算出する計算式はどうなりますでしょうか。 (2)次期において変動比率が5ポイント増加し、25%となる見込みで、当期より利益を100万円増加させるには売上高がいくら必要なりますでしょうか。

  • 損益分岐点の計算法について教えてください

    ダイニングバーの3代目店長として、現在きりもりしていますが、損益分岐点を計算すると270万円ほどになります。しかし、オーナーの計算だと430万円とのことです。理由は他店舗(もつ鍋屋)とオーナー自身の給与を含めるとそうなるとのことです。損益分岐点とはそもそもオーナーの給与を含めたり、他店の借入を含めたりするものなのでしょうか? ご指南の程、宜しくお願い致します。

  • 損益分岐点の問題

    <設問3> 次の損益分岐点に関する記述中の (1) に入れるべき適切な字句を解 答群から選べ。 固定費が月額250 万円掛かり,売価が1個当たり10 万円の製品を販売する。この製 品の1個当たりの変動費は8 万円である。この製品の損益分岐点売上高における売上 個数は1 か月当たり (4) 個となる。また,1 か月間に100 万円以上の利益を上げ るためには (5) 個以上の製品を売らなければならない。 (4) ,(5) の解答群 ア.25 イ.35 ウ.125 エ.175 オ.1250 カ.1750 答えは(4)がウ、(5)がエです。 よろしくお願いします

  • 損益分岐点の計算の仕方を見てください

     起業するために準備しています。 売値を決めるにあたり損益分岐点を見ていますが、下記の考え方であっているか、見てもらいたいのです。 http://www.hapilabo.com/main/post_535.html こちらのサイトを見て数字をあてはめています。難しくて、計算もあてはめる数字があってるかもまったくわからないのです。  このサイトの最終の式にたどりつくと  損益分岐点 = 固定費 ÷ (1 - (変動費 ÷ 売上高))   だそうなのです。  固定費に、一つあたりにかかる費用(生地代・縫製代・包装用袋代・明細書紙代など)を注文するロット数(50で注文します)をかけました。売値は5250円です。  固定費  2343円×50=117,150 とドメイン費用など2000円 計119,150円  変動費  3000円               たぶんこれぐらい  売上高  5250円×50=262,500 この三種類の数字を式に当てはめると   120,527=119,150÷(1-(3000÷262,500)) になります。 損益分岐点が120,527円ということで良いでしょうか。 この先を自分で考えました。 5250×22枚=115,500 <120,527円 < 5,250×23枚=120,750 なので、23枚目から黒字になると考えていいのでしょうか。 120,527円÷5,250=22.5枚  この計算式の数字の四捨五入の数字が、黒字になる枚数の計算式でいいのでしょうか。

専門家に質問してみよう