ラウンジ(兼FAQ掲示板)

あんQについて質問です。
過去ログ NO.1164947451
□ ひろたか [2006年11月29日16時01分]
NXerさんご教授お願いします。
別スレにて記入しましたが再度投稿させて頂きます。
現在、当方のアンケートはNXerさんのお陰でアンケートの投票をしないとグラフが表示されないのですが、一度投票してまた見に来た時にグラフが隠れているのは問題ではないかと少し疑問に思っています。
そこで質問です。
ユーザーが一度、投票するとその日の内はグラフが表示されている風には出来ますでしょうか?
また、新規で投票される方には初回は表示してほしくないです。
質問2)
投票項目を追加時に任意に画像を添付する事は可能でしょうか?
現在、思案中の案ですが、可能であれば組み込みたいと考えています。
質問3)
アンケート終了日が現在日付になっているのですが締め切り1週間2週間3・4・5・6週間とし最大でも1ヶ月に簡単に設定できるようにしたいのですがどうでしょうか?
質問4)
アンケート投票項目を追加した際のアンケート項目の並びの順番がバラバラなのでアイウエオ順とその他は必ず一番下に並ぶようになりますでしょうか?
たくさん書きましたが宜しくお願いします。
□ NXer [2006年11月29日20時25分]

>質問1)投票見に来た時にグラフが

アンケート設置の最初の要望は、おそらく短期間、例、1週間で締
め切り、その後のアクセスで利用者に結果を返す、という当方の
想定でした。投票直後の集計、そして全体は締め切り直後からわか
り、当初の趣旨に合致しているように思われます。

締め切り期間が長く、その間で投票終了者に、中間結果を知らせ
るには、
1.1 利用者の善意を信頼できる場合は、ボタンを押せば中間表示サ
ブルーチンで表示できたり、表示の旗を立てることで表示できると思
われます。過去ログでボタンや旗の立て方を応用してください。

信頼できない場合で、しかも締め切りまでにどうしても中間集計
結果を知りたい人は申し出があれば、メールで仮のパスワードを
発行します。そのパスワードをファイル名に含む、ひろたかさん
の結果表示のあんQにリンクするanq12345.htmlページのURLをし
らせます。そのページにアクセスしていただくのも解決策です。
ただし12345はパスワードですから定期的に12abc,22ezq など変更
します。かなりセキュリティは高度になります。

>ユーザーが一度、投票するとその日の内はグラフが表示されてい
る風には出来ますでしょうか?

これは、グラフ表示画面でブラウザの「名前を付けて保存」をすれば
その日以降いつでも見ることができます。また、ブラウザの印刷
機能で印字できます。利用法のガイドで説明します。

>新規で投票される方には初回は表示してほしくないです。

投票直後の結果表示もしないなら旗を0にすれば表示されません。

質問2)投票項目を追加時に任意に画像を添付

これは、設置者にはとても簡単にできます。ただし、タグを許可
すると表が乱れ、また、悪用されるために通常は、できません。
セキュリティを考えると、

anqmaster.cgi タグ許可
anquser.cgi  タグ不許可

と2本インストールします。tempファイルは共有します。
138行目付近---------------------------------
# $value =~ s/<.*?>//g;# html 許可
----------------------------------------------
anqmaster.cgiでは138行目に#をつけてコメント文・非実行文にします。


好きな月の形 というテーマです。
-------------------------------------項目に以下の入力をします。
十三夜 <img src=img/13th_night_moon.jpg width=100 height=60>
--------------------------------------------------------------------
img srcタグです。

ただし、画像は自らが著作権を有するかフリー素材などで利用規定で
許可されている画像です。画像をともなうアンケートは従来の文字中心
のアンケートとは違った結果になるかもしれません。
そのため文字アンケートと画像アンケートの二種類をセットにして
それらの回答の信頼性を確認する必要があります。好きなアイスクリーム
で画像と文字でどのような結果になるのでしょうか。

画像は、アンケートの表のサイズから10kバイト程度で十分と思われます。
imgディレクトリに転送しておきます。利用者から画像アンケートの希望が
あれば一定の規則を作り、設置者で編集機能を使いあとから追加の変更が
できます。

質問3)終了日が現在日付
>1週間2週間3・4・5・6週間とし最大でも1ヶ月に簡単に設定

cgiのフリーソフトでカレンダ表示があれば、新しいテーマ設定欄の上また
は下にそれを表示するのも解決策と思います。万年カレンダのサブルーチ
ンを組み込みます。あるいはフレームでカレンダページを表示するのはど
うですか。ブログでよく見かけます。それらを参考にしてください。

質問4)アンケート項目の並びの順番

「バラバラ」を良く見ると登録順になっていませんか。項目順に
並べ替え(ソート)するには、過去ログを見てください。
ソートキーの変更で多分可能と思われます。例を示します。

231行付近------------------------------------------
$key{$_} = $num; #ソートキーを登録順の数値とします
$key{$_} = $content; #ソートキーを内容順の文字列とします
--------------------------------棒グラフ省略
1 ブルドッグ   3  37.50%
2 ダックスフント 0  0%
3 チワワ     3  37.50%
4 パピヨン    1  12.50%
5 秋田犬     0  0%
-------------------------------------
当方のローカルサーバのソートでは、英数文字、かな、漢字
で整序されました。それぞれのサーバの並べ替えに多少の違い
があるかもしれません。

以上です。
*******************************************************
繰り返し警告します。サーバで直接cgiをテストすることは
当方でテストしていますが、大変危険です。不具合の発生の
責任は当方には一切ないことをおことわりします。
*******************************************************
□ ひろたか [2006年11月30日14時52分]
NXerさんまず始めに回答有難うございました。
ボタンを押せば中間表示サブルーチンで表示できたりする方法ですが、私なりにいろいろ調べてみてみたのですが、お恥ずかしいながら、ちょっとよく解りません具体的に教えていただけないでしょうか?
それと先日、カテゴリごとに表示が出来るように組み込んでいただいたのですが、どうのようにしたら下記のような事が可能になりますでしょうか?
(したい事)
セレクトフォームにて各カテゴリが選択でき、なおかつその横に表示ボタンをつけて表示ボタンをクリックすればそのカテゴリの表示が出来るという代物です。
ようするにスポーツをセレクトフォームから選択し、表示ボタンをクリックすると表示できればOKです。
私なりに以下のように考えたのですが。。。
print "<form action='$script' method=POST>\n";
for ($i = 0; $i < 10; $i++) { if (! $i) { print "<option>○政治・経済○<option>▲芸\能\(音楽/俳優/その他)▲<option>◆スポーツ◆<option>★趣味・流行★<option>■恋愛■<option>□IT関係□<option>◎ゲーム・漫画・アニメ◎<option>▼その他▼"; }else { print"<option>"; }
}
print "</select>\n";
print "<input type=submit value=' 表\示\ ' class=btn></td></form>\n";
初心者の為、検討違いな事をしているかもしれませんが。。。
よろしくお願いします。
□ NXer [2006年11月30日20時08分]

過去ログの例とよく似ていますが、これはテーマ一覧のページ
の行付近です。NXerです。

>中間表示

その1)
ガイド方式です。現在のスクリプトに挿入します。
-------------------------------
161 &header;
print "<A HREF=\"http://ひろたかさんサーバ/index.htm\">|トップ|</A>\n";
print "<A HREF=\"http:// ひろたかさんサーバ/anq/anq_revisit.cgi\">再訪問|</A>\n";
print "<A HREF=\"http:// ひろたかさんサーバ/anq/view.htm\">使い方|</A>\n";
print "<br><br>\n";
--------------------------------------------------
改造はこれだけ。

その2)新しいcgiファイルの作成、今のものを次のように改造します。

これまでのスクリプトは結果非表示のスクリプトです。その旗 $scoreview=0を
1にします。
---------------------------------
#得票率表示/非表示フラッグ ゼロは非表示
$scoreview=1;
-------------------------------
134 elsif ($in{'data'}) {$scoreview=1; &html; }
------------------------------------

そして-------------------
# このファイルの名前
$script = "anq_revisit.cgi";
------------------------------
と変更して、その名前で保存します。新しい全表示用になったcgiファイル
anq_revisit.cgi 
を転送、パーミッション設定をします。
利用者運用あんQの163で、このファイル(再訪用)にリンクを張りました。

利用者用投票前非表示の、上でガイドをつけたあんQを起動
して、「再訪問」をクリックすればおそらく、新規あんQが開きます。

cgiでは、見かけは1本ですが、複数のスクリプトの集合体
になることがしばしばあります。ファイル名で内容がわかる
ようにしたり、またコメント文を付けておく必要があります。

専用ボタンを作る時は、そのボタンにリンクを張ります。
いずれにしても利用者に、締め切り前の結果を返すものです。
締め切り後は、すべて表示されます。

過去ログにまわされた別件です。最新の書き込みへの回答になります。

□ ひろたか [2006年11月29日21時01分]
>セレクトボタン

ですが、ラジオボタンのことと思いますが、リストボックス
が select option 機能があることから、こちらでサンプルを
作成してみました。作ってみると、カテゴリ選択に意味が加わり
画面全体に動的な要素が加味される感じです。

初期設定--------------過去ログと同じ
#カテゴリflag
$ctgry="なし";
#---------------- 初期設定ここまで ----------------#

--------------------------------------------過去ログと同じ
130 if ($in{'mode'} eq 'politics') {$ctgry="政治";}
if ($in{'mode'} eq 'entertainment') {$ctgry="芸能\";}
if ($in{'mode'} eq 'hobbies') {$ctgry="趣味";}
if ($in{'mode'} eq 'others') {$ctgry="その他";}
#-------------------------------------
if ($in{'mode'} eq 'reg' || $in{'mode'} eq 'adreg' || $in{'mode'} eq 'change') { ®ist; }
---------------
--------------過去ログと同じ
191 else { $inf = "終了";}
}
#----------------------カテゴリ別一覧表示1行 eqは文字列等号
if ($mail eq $ctgry){&subject_view;}
#-----------------------------カテゴリ選択なし初期一覧
elsif ($ctgry eq "なし"){
 if (($page_view>=1 && $count<=5)||($first_view>=1 && $count<=5)){&subject_view;}
 elsif ($page_view1>=1 && ($count>=6 && $count<=10)) {&subject_view;}
 elsif ($page_view2>=1 && $count>10) {&subject_view;}
  }
----------------上挿入
}#この括弧は元
print "</table>\n</blockquote>\n";
-------------------------------------------
222 if ($open_mode) { print "■<a href='$script?mode=first_page'>始めの5つのテーマを見る</a>\n"; }
#--------------------------挿入
print "<form action='$script' method=POST>\n";
print "<table class=plain><tr><td class=plain>\n";
print "<select size='4' name='mode'>\n";
print "<option value='politics'>政治</option>\n";
print "<option value='entertainment'>芸能\</option>>\n";
print "<option value='hobbies'>趣味</option>\n";
print "<option value='others'>その他</option>\n";
print "</td></tr></table><br>\n";
print "<table><tr><td class=plain><input type='submit' value='カテゴリ選択'></td>\n";
print "<td class=plain><input type='reset' value=' リセット ' ></td></form></table>\n";
#---------------------------------------
print "</blockquote>\n";
©
--------------------------2行元

画面スペースの都合で、2行にすれば、select size=2
政治、芸能が表示され残りは、スライドバーを下げて
みます。これからカテゴリが増える場合にも画面構成は
初期値の行数で収まることから、リストボックスは
優れタグです。
------------------------------------------
print "<select size='4' name='mode'>\n";
-------------------------------------------

ラジオボタンの場合
print "<select size='4' name='mode'>\n";
などを
print "<input type='radio' name='mode' value='politics'>政治<br>
のようにすれば多分上のスクリプトで動作すると思われます。name属性
でcgiにmode=politicsを引き渡します。
ラジオボタンの欠点は、増加したとき、下に長く伸びていくことです。
いろんなアイディアをお試しください。その都度ファイル名を変えて
保存すれば、後に別のソフトにサブルーチンとして利用できます。しかし、
今の汗(perspiration)が、きらりと光るアイディア(inspiration)に
なることを、当方は残念ながら、まったく保証できません。

なお、htmlのタグなどは、次の参考文献や参考サイトを利用しています。
当方の考えのほとんどすべては、すえぽんサイトやそれらから学んだも
のです。すえぽんさん、アンクさん、杜甫々さんに感謝申し上げます。

1 アンク、ホームページ辞典、翔泳社、2001
2 杜甫々 『とほほのWWW入門』<http://www.tohoho-web.com/> 

suepon.com | CGI作成/CGI制作 | JavaScript | ドメイン検索 | バナー自動作成 | Google ダンスツール | 松浦亜弥 | H.P.memo | パソコン | ネイル

Copyright (C) 2002 - 2008 suepon , All rights reserved. Powered by CGI Script Market.