こんにちは、お世話になります。
ホームページ作成ソフトを購入して
ホームページがすこしづつ自作できるように
なってきたので
プレゼントの紹介サイトを作りたいと思っています。
具体的には次のようなことがしたいです
次のようなアンケートをとり
それぞれの選択肢を点数化して配点しておき、
選択された回答項目の合計点数で分岐して
プレゼントの商品紹介のページを
変えるように表示したいと思います。
たとえば次の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というのは少しわかります。
よろしくお願いいたします
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}</td></tr>
EOM
}
print <<EOM;
<tr><td></td><td>
<input type="submit" name="submit" value="送信" />
</td></tr>
</form>
</body>
</html>
EOM
}
この回答への補足
ymdaさん こんばんは
さきほどはありがとうございました。
で、実はお名前をタイプミスしておりました。
yとvを間違えてしまい
申し訳ありませんでした
プロフィールを拝見させていただきました。
プログラミングにお強い理由がよくわかりました。
これからも困ったときには「教えて」のお世話になるかと
思いますが、またお教えいただければと思います
本当にありがとうございました
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さんは本当に尊敬してやみません
自分でも条件や商品名を変えれば
うまくつかえそうです
No.2
- 回答日時:
実は、偶然たまたま組んでいたもののカケラを
利用したようなものなのですが・・・
その為に、書き方が一部いいかげんな部分があるかもしれません。
後は、これは無料サーバーでは動かない場合があるかもしれません。
(海外だと、文字コードの問題も出ることもありますが)
ページを転送する部分を書き換えれば動くかとは思われます。
後は、自分の探しているCGIというのは、見つかるようで見つからない
ことも結構あるようです。
ページを転送しない仕様でしたら、既存であるかもしれませんが
今回のは、HPビルダを使うことを前提にしましたので
転送するようにしています。
本当は、勉強して頂くのが一番ですが、最低でも、改造するスキルが
あれば良いかもしれません。
最後に
(使用する文字で、Shift-JISは化ける場合があります)
と書きましたが、その場合、化けている文字の前に、半角の¥を
記述すると、化けがなおることがあります。
この回答への補足
ymdaさん こんばんは
しばしHPビルダーと格闘しておりました。
CGIについては
わからないながらいろいろ
検索して勉強してみました
付け焼刃ですが
どうも配列というのをうまく使うと
いろいろな条件や配点を組み合わせるのが
容易になるみたいです
そのうちに自力でCGIかけるよう頑張っていきたいです
ymdaさん こんにちは
きょうは午後からは時間がとれたので
いろいろHPビルダーで試行錯誤していました
ymdaさんはPerlでも、
最初の方にuse cgiを書かれているから
どうもモジュールとかいうものを使って
簡潔なものを作られたらしいことだけは
検索してわかりました
とても偶然のカケラで作られたものなんて...
謙遜されていますが、
ぜんぜんオーダーメードのCGIです
あと、言語についてもわからないながら
自分も少し勉強しようと思って
無料のプログラム学習サイト
ドットインストール
http://dotinstall.com/
を見つけました。
そのうち自分でもできるようにマイペースで
勉強してみたいとおもいます。
のちほど
ベストアンサーでお礼を差し上げます
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語 1 2022/11/09 13:05
- 再婚 30代後半女性を点数で付けると何点になりますか? 婚活男性の方に質問です。 女性を婚活から見た時の点 1 2022/10/11 23:14
- C言語・C++・C# C言語 3 2022/11/09 13:27
- その他(コンピューター・テクノロジー) Pythonについて a = [[a, [1,2,3,4,5],3], ....(50人ほど続く)] 3 2022/05/16 01:37
- SQL Server DBのテーブルの設計ができず困っています。 2 2023/06/29 16:43
- その他(プログラミング・Web制作) python コードについて(初学者です) 3 2023/07/20 14:44
- その他(教育・科学・学問) 確率の問題 6 2022/07/27 12:00
- Excel(エクセル) ユーザー定義について質問です。 2 2023/06/28 13:21
- 大学受験 松山大学 1 2023/06/15 00:39
- 高校受験 中学校3年生です。 今回の前期中間のテストが9教科 900点中364点でした。 僕は高校に進学を取る 3 2022/06/25 01:56
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・「黒歴史」教えて下さい
- ・2024年においていきたいもの
- ・我が家のお雑煮スタイル、教えて下さい
- ・店員も客も斜め上を行くデパートの福袋
- ・食べられるかと思ったけど…ダメでした
- ・【大喜利】【投稿~12/28】こんなおせち料理は嫌だ
- ・前回の年越しの瞬間、何してた?
- ・【お題】マッチョ習字
- ・モテ期を経験した方いらっしゃいますか?
- ・一番最初にネットにつないだのはいつ?
- ・好きな人を振り向かせるためにしたこと
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・2024年に成し遂げたこと
- ・3分あったら何をしますか?
- ・何歳が一番楽しかった?
- ・治せない「クセ」を教えてください
- ・【大喜利】【投稿~12/17】 ありそうだけど絶対に無いことわざ
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・集合写真、どこに映る?
- ・自分の通っていた小学校のあるある
- ・フォントについて教えてください!
- ・これが怖いの自分だけ?というものありますか?
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・10代と話して驚いたこと
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
(フリーの)ツリー掲示版CGI、...
-
perlでpostが受け取れない
-
CGI.pmはもう古い!?
-
皆さんはGUCCIはハイブランドだ...
-
古ーくからフリーのtree.cgi掲...
-
apacheでPerl CGIが作動せず、5...
-
htmlからパラメータで、cgiに渡...
-
フォームを再送信しますか?
-
入力フォーム(電話番号)
-
エクセルで集計したい。
-
cgi-binのエラー?
-
Trees掲示板CGI(CGI-Resque氏...
-
めちゃきれい
-
number 改行が追加できない
-
生成AI画像について
-
3DCG
-
ホームページにメールフォーム...
-
cgi アクセス制限 エラー
-
CGIの記述について教えてくださ...
-
CGIの設置が分かりません・・・
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
掲示板(kentさんの所のsunbbs...
-
perl/cgi リダイレクトができない
-
超初心者 ローカルでOKだった...
-
ソフトバンクだけ見られない
-
CGI経由でのPDFファイルをダウ...
-
iis+cgiでmultipart/form-data...
-
CGI内でけいたいスマホの振り分け
-
ヒアドキュメントでHTMLを書い...
-
sendmailで送信すると、迷惑メ...
-
クオートの多重入れ子をするには?
-
sendmail 送信先を複数設定す...
-
普通のHTMLの画面からCG...
-
掲示板 imgboard のcgi改造方法
-
CGI によるファイルのアップロード
-
買い物かごの返信メール CGI ...
-
htmlからパラメータで、cgiに渡...
-
レンタルサーバーでperlのcgiフ...
-
sendmailで送信の時に文字化け
-
パスワード認証のCGI
-
cgi-perlでテーブルのセルに色...
おすすめ情報