過去ログ NO.1164627562
□ KENJI [2006年11月16日21時51分]はじめまして! サイトにアンケートを作りたく色々探していまして。想像にぴったりなCGIプログラムを発見し大変嬉しく思います。 そこであんQで質問なんですが、質問数は何項目まで増えていくのでしょうか? また、たくさん質問が増えてくれば下にずらーっとならんでそれを超えると次のページになるのでしょうか? それとも永遠と下に増えていくのでしょうか? ご回答のほどよろしくお願いします
□ NXer [2006年11月17日17時43分] KENJIさん、はじめまして。NXerです。こちらこそよろしく。
1>質問数は何項目まで増えていくのでしょうか? 2>超えると次のページか/下に増えていくのでしょうか?
その1)項目の「超える」上限
スクリプトの初期設定欄には、質問/投票項目の最大数、上限設定は ありません。テーマにそって考えられる質問数だけ増えます。 百名山をテーマにすると100項目必要かもしれません。
見落としているかも分かりませんので、KENJIさんも初期設定を スクリプトでみてください。
cgi歴にかかわらず、次のおよそ222行目付近のスクリプトを見てください。 -------------------------------------222 foreach (@lines) { ($num,$content,$point,$color,) = split(/\,/,$_); ------------------------------------------ 画面表示するために、データに格納されている数だけの質問/投票項目を それぞれの行(@lines)ごとに項目番号、内容、得票、バーの色に分解して います。今のサーバやコンピュータなら100項目程度は瞬間で処理すると 思います。
その2)スクリプト的には下に続く
データの数だけ、番号、項目名、得点のように270行付近で表示されます。 -------------------------------------------------- 270 print "$content</td><td align=right>$point</td>\n"; --------------------------------------------------
以上です。 ----------------------------------------------------- 以下はアンケート調査に関する愚論です。時間があればお読みください。
参考: アメリカ(USA)での成人の余暇の過ごし方のある 調査では、項目数は、10です(Putnam,R.Bowling Alone,2000)。 レストランでの食事、食事で友人宅に訪問、友人を食事に 招く、映画などです。テレビが主たる娯楽であるについて の態度をアンケート調査する度合いの項目数は、まったくその通り から、まったく違うまでの6項目になっています。
このようにアンケートにすることがらや態度、感じ方を1画面内に 収まる程度の質問項目数にすることが調査、統計の手法と思います。 ネット上の個人的なアンケートでも、その結果を公開すれば サーチ・エンジンでその情報を必要とする人が、アクセスする かもしれません。あんQの可能性を追求してみてください。ま たその信頼性を高めてください。
なお、KENJIさんが予想されます、調査する人ごとに微妙な態度、 感じ方の違いなどの項目が際限なく人の数だけ増えることを避け る方法があります。より近い項目を選択いただき、意見を書き込 んでいただくというものです。運用してその必要性を感じられました ら、スクリプトをすこし改造して意見収集付きあんQにしてくだ さい。
たとえば、この回答の満足度調査では次の6項目で十分です。 ---------------------------------------------------- 1 わからない 2 まったく不満0% 3 びみょうに不満25% 4 ふつうに満足50% 5 かなり満足75% 6 ドまん中満足120% (その他ご意見欄 ) ----------------------------------------------------
□ KENJI [2006年11月20日22時22分]NXerさん大変貴重なお意見ありがとうございました! そこで一つお聞きしたいのですが、例えばアンケートの一覧を50行までとし、それ以降のアンケート分は次のページへみたいな事は出来るのでしょうか?
□ NXer [2006年11月21日16時36分] >一覧を50行
KENJIさんのcgi歴は不明です。以下のスクリプトと説明が 分からない時は改めてご質問ください。NXerです。
当方のtestデータ例 --------------------------------質問項目名a1~d2 view test,20061121130714,36PeRwkZZZZ,0,0,1,nxer,,, 20041030153736,a1,2,#000000, 20041030153735,a2,3,#a9a9a9, 20041030153734,a3,1,#8b0000, 20041030153733,a4,2,#ffc0cb, 20041030153732,a5,2,#000000, 20041030153731,a6,3,#a9a9a9, 中略 20041030153707,c0,3,#a9a9a9, 20041030153706,d1,2,#8b0000, 20041030153705,d2,1,#ffc0cb, --------------------------------- このようなデータ32件を作成してテストします。
サンプルのために20件を始めに表示。次の21件以上は新たに作成 する次頁ボタンで残る12件が表示されます。21件以上は残り全デー タです。(20単位ではありません。)これは特殊な要望と考えて そのためだけの処理です。汎用性は考えていません。 50件単位のときは数値を変えてください。ただし、判定フラッグ の名称は、ご要望どおり$fiftyとしてあります。
変更その1)46行目挿入 45行はコメント文 初期値設定-------------------行番号はエディタ表示例(後ほどかなりずれます) 43 $max = 300; 44 45 #表示単位フラグ 50件 0は単位前の件数、1は単位後の残部件数 46 $fifty=0; #---------------- 初期設定ここまで ----------------#
変更その2)単位フラッグ切り替え 次ページボタンの値nextで旗を $fifty=1 に切り替え --------------------------125挿入他既存 122 &get_cookie;#既存行これを探してください
124 #表示旗変更 125 if ($in{'mode'} eq 'next') { $fifty=1; }
126 if ($in{'mode'} eq 'reg' || $in{'mode'} eq 'adreg' || $in{'mode'} eq 'change') { ®ist; } --------------------------------------------
変更その3)アンケート質問一覧 html サブルーチン内 266〜269行の挿入 元の行はサブルーチンにします。 --------------------------------------------- 263 $len = int ($point * $scl); 264 } #◆-----------------266、267挿入 50件の時は$cの変数の値を50にします。 266 if ($fifty<=0 && $c<=20){ 267 &view; } #元の268〜280行付近はサブルーチンにします。 #■--------------------------268と269行挿入 268 elsif ($fifty>=1 && $c>20){&view;} 269 } #-------------- 285 if ($vote_stop) { ----------------------------------------
変更その4)次頁ボタン挿入 -------------------------------------------- 293 print "<tr><td colspan=5 class=plain><table class=plain><td class=plain><input type=submit value=' 投 票 ' class=btn></td></form>\n"; #-----------------------次ページボタンの作成以下5行挿入 print "<form action='$script' method=POST>\n"; print "<input type=hidden name=mode value=next>\n"; print "<input type=hidden name=data value=\"$in{'data'}\">\n"; print "<td colspan=5 class=plain><table class=plain><td class=plain><input type=submit value=' 次 頁 ' class=btn></td></form>\n"; #-------------------- name 属性はmode, その値は next です。
その下の更新ボタンを value=' 更新前頁 ' とすると、20件の次12件にないため、前の20件から選びたいとき、このボタン で戻れます。
変更その5)サブルーチン作成
最後にview サブルーチンを作成しました。 --------------------------------------------- sub view { #-------------------------------268〜280行付近コピーペーストします。 if ($vote_stop) { print "<tr><td align=right>$c</td>\n"; } else { print "<tr><td align=right>$c</td><td><input type=radio name=select value=$num></td>\n"; }
if ($last_cont eq $num) { print "<td bgcolor='$sel_bg' background='$pos'>"; } else { print "<td>"; }
print "$content</td><td align=right>$point</td>\n"; print "<td><table cellpadding=0 cellspacing=0 class=plain><td class=plain>"; print "<table cellpadding=0 cellspacing=0 bgcolor='$color' class=plain><td class=plain><img src='$grh' width=$len height=10></td></table></td>"; print "<td width=5 class=plain> </td><td class=plain>$perse\%</td></table></td></tr>\n"; } -------------------------------------------
変更後、はじめの20件で投票したり、また、次の21〜32件で 投票して確認しましたが不具合はありませんでした。 次のページという表現よりも、固定した一覧画面で 次のアンケート項目だけが変化するという 発想です。
使い方としては、プロファイルで100の質問風にたくさん 項目を並べて答えていただくと、他者が認識している自分 との評価/認識のズレ(perception gap)などが明確になり 面白そうです。タレントなどがファンサイトにこのあんQ を設置して、本人が気が付かないファンが認識している魅 力などが数値で出そうなきもします。 組み込み可能なら、ブログにも使えそうです。
その前にエラーがでるかもしれません。実験台を覚悟で いろいろ編集してみてください。この投稿に基づくテストで 不具合の発生する恐れがあります。発生の責任はNXerには 一切ありません。しかし、文法ミスなどは当方の責任です。 サーバでのスクリプト暴走などを避けるために、ローカル サーバでテストするか、できる環境を整えてください。
なお、変更したスクリプトの再配布は許可されていません。 簡単な挿入やコピーペースト編集で多分成功すると思います。
□ KENJI [2006年11月22日10時10分]NXerさんまず初めにご回答ありがとうございます。 CGI歴としましてはごく最近興味をもちだしたくらいです。 ご指示通り、してみたのですが、どうも上手くできませんでした。 以下の部分はこれでいいのでしょうか?
$len = int ($point * $scl); } if ($fifty<=0 && $c<=20){ &view; } elsif ($fifty>=1 && $c>20){&view;} } sub view { if ($vote_stop) { print "<tr><td align=right>$c</td>\n"; } else { print "<tr><td align=right>$c</td><td><input type=radio name=select value=$num></td>\n"; } if ($last_cont eq $num) { print "<td bgcolor='$sel_bg' background='$pos'>"; } else { print "<td>"; } print "$content</td><td align=right>$point</td>\n"; print "<td><table cellpadding=0 cellspacing=0 class=plain><td class=plain>"; print "<table cellpadding=0 cellspacing=0 bgcolor='$color' class=plain><td class=plain><img src='$grh' width=$len height=10></td></table></td>"; print "<td width=5 class=plain> </td><td class=plain>$perse\%</td></table></td></tr>\n"; }
□ NXer [2006年11月22日14時03分] >sub view {
このサブルーチンの位置を示す行番号を付かなかったため 期待通り動作しなかったものと思われます。NXerです。
表示ルーチンの位置です。行番号をつけます。スクリプトの最後 に追加します。書き込みが不十分だった点失礼しました。 ----------------------------- 952 sub copy { print "<hr noshade color='$text'>\n"; print "<div align=right>\n"; print "<a href='http://CGIScriptMarket.com/' target='_blank'>あんQ $ver</a>\n"; print "</div>\n"; 958 }
960 sub view { 以下略 ---------------------------
なおKENJIさんの記述のようにより近くで、任意の位置にサブルーチン を置くことができます。しかし、サブルーチン内に置くことはできません。 ------------------------------ sub html { 〜 } sub view { 〜 } sub 他のルーチン{ 〜 } ------------------------------ エラーは sub html{ 〜 sub view{ 〜 } }
となったことが原因と思われます。m(_ _)m;
>cgi歴、、最近
最近はブログやiPOD、SNS、ケイタイなどが流行しています。 それぞれ多機能満載です。しかし、自分でウェブプログラミン グするには、perlによるcgiも面白いと思います。 KENJIさんの100項目のアンケートは、すぐ実現すると 思いますが、ウェブで体験してみたいですね。 一般に多項目の商品などの選択肢になると、上位2%が頭を形成し て残り98%が尻尾になるそうです。その現象をロングテールと いいます。アンケートでも恐竜の尻尾がでるのか、ぜひ貴サイト のあんQで検証してみてください。
□ NXer [2006年11月23日20時56分] >それとも永遠と下に
KENJI [2006年11月16日21時51分]さんの質問に項目 一覧を中心に回答させていただきました。NXerです。
ファイル上で作成した32項目のデータに基づく回答の ため、実際にあんQでためすには、入力画面で次の制約があります。 ---------------------------------------- 758 (一度に設定できるのは10項目までです) ----------------------------------------- 愚案のように6項目程度のアンケートを作成しておりこの 制限に触れたことが無く、気が付きませんでした。すえぽん さんはおそらく画面処理を考慮し、一般用ソフトとして 10を限度に作成されています。このようなソフトは汎用 ソフトといわれ、万人向けですが、個別の目的にはカス タマイズが多少必要になります。
その1)入力画面で10項目を越える質問を作成するには
以下の変更で動作します。なお、変更する部分はperlでは なくてjavascriptというスクリプト言語で記述されています。 -------------------------上限30の変更下例 文の一部引用 661 for (i = 0; i < 30; i++) { document.forms[0].anq_view.options[i].value = ''; 672 if (29 < n) { if (confirm('初期設定で入力できるのは10項目までです。\\nこれ以上追加すると入力した順上書きされます。')) 677 if ( (30 > n) && val) { 702 for (i = 0; i < 30; i++) { 753 for ($i = 0; $i < 30; $i++) { if (! $i) { print "<option>現在設定されて ------------------------------------------------- 753の変更がない場合は、javascriptの、null あるいはオブジェクトではない などのエラーメッセージがでます。753が上よりも小さい時、上の添え字変数 i では、より大きな配列が未設定のためにエラーになります。
その2)原作入力スクリプトを変更しないで10を超える任意の 事項を設定するには。(とても沢山入力するとき便利です。)
始めに新たな次のテーマ「view test]のように、5項目程度入力します。 ---------------------------------------- view test,20061121130714,36PeRwkZZZZ,0,0,1,nxer,,, 20041030153736,a1,0,#000000, 20041030153735,a2,0,#a9a9a9, 20041030153734,a3,0,#8b0000, 20041030153733,a4,0,#ffc0cb, 20041030153732,a5,0,#000000, ----------------------------------------- tempファイルからダウンロードしてエディタやエクセル(コンマ で区切ったcsv形式保存読み込み)で残りの10を越える任意のデータ をコピーペースト、入力、変更などして作成します。完成したら 転送します。
a1,a2,a3が質問事項です。 このとき、左の時間の下2桁を36、35、34など入力時間を 降順になるように整序しておけば、表示がその順になり ます。また棒グラフの色も16進数値でカラーチャート表 などを参考に見やすい色を時間をかけて設定することが できます。
あんQは、印字するとA4用紙で20ぺージ程度の作品です。 その可能性は、他に例を見ないファイル管理能力などがある ことから、アンケートという枠を突き抜けて、多様なインター アクティブ(相互交流可能)な場面で活用できるcgiの一つと 思います。perlとjavascriptを併用するハイブリッドスクリプト で記述されています。カスタマイズには言語の使い分けが必要 です。 2001年11月14日のすえぽん作品です。その5年と2日後 のKENJIさんの、どこまでもつづくのかな、という誰もが抱く 素朴なご質問は、あらたな活用法を示唆してくれました。 KENJIさん、原作者すえぽんさん、ありがとうございました。
|
|