ラウンジ(兼FAQ掲示板)

あんQのコメントつきについて
過去ログ NO.1167527826
□ ひろたか [2006年12月20日16時33分]
NXerさんへ
またまた質問です。
現在、当方のあんQではコメントつきになっています。
そして、コメント一覧に顔アイコン・コメント・日付になっていてそこにさらにどの項目に投票したか投票番号でもかまいませんので付け加えることは出来るでしょうか?
それと、投票を複数回答が可能にできますでしょうか?
宜しくお願いします。
□ ひろたか [2006年12月20日18時32分]
NXerさんへ
追加の質問ですが、以前にもお聞きしたと思います。
次の項目へボタンを押すと何回かの割合でテーマがあるにも関らず表示されず一度前の項目に戻るページを押すと表示されます。
何か問題なのでしょうか?
試験的にサイトを立ち上げましたので検証お願いします。
http://htk-system.com/anq/anq.cgi
□ NXer [2006年12月20日22時30分]

>どの項目に投票したか投票番号でも

投票欄例です。NXer試作です。
---------------------------------
1 ○ 単なるアンケートでないみたい
2 ○ 選択項目がよくわかる
3 ○ コメントの意味が伝わる
--------------------------------
コメント例
-----------------------------------
*** 最新10メッセージ *** 

◇単な..⇒参加している感じがして好感度プラス・次郎 (06/12/20)
◇コメ..⇒数字だけでなくてハートが伝わる・花子 (06/12/20)
◇選択..⇒見たらすぐ分かるのでよい・太郎 (06/12/20)
---------------------------------------------

>顔アイコン・コメント・日付

-----------------------------------------
顔アイコン◇項目頭2文字..⇒コメント(日付)
-----------------------------------------
に変更します。

$in{'select'}では登録時刻の数字になります。そこでその時の
$contentを$sitem に代入します。
-----------------------
688 if ($in{'select'} eq $num) {
#■-------------------------
$sitem=$content;
----------------------

次に、項目はその前から漢字かな2文字4バイト文字を得てさらに..を付け
後の省略記号とします。
-----------------------------この付近です。
696# ■ $mes prossessing for writing ■ plus icon
if ($in{'mes'}) {
#選択項目メモ-----------------------------
$sitem=substr($sitem,0,4)."..";
-------------------------------
$mesnew =$in{'mes'};

1文字項目も試してください。不具合が出たら、if文で処理
してください。

最後に次の位置に、$sitemの挿入です。
715--------------------------------------上元下新
$mes=$icon."◇".$mesnew.$mesdate.$mes;
$mes=$icon."◇".$sitem."⇒".$mesnew.$mesdate.$mes;
----------------------------------------------

直接序数を手入力してもらえば簡単ですが、忘れる人が多いことから
自動的にコメント文に組み込むほうが良いと思います。ただ、
コメント文字数が節約設計ですから、項目も初め4「バイト」2文字
としました。そちらの表や画面幅にあわせて愚案を整形してください。

>投票を複数回答が可能

当方も愚考したのですが、次の指定の意味をどう解釈されますか。

>同一人物による同一項目への重複投票不可

この指定で、あるテーマの同一項目重複投票を禁じています。
しかし、同一テーマの異なる項目に、同一人物が投票できます。
これって、時間差の複数回答であると理解しています。

今はファイル名と選択項目をクッキー名とし、保存期限とともに
クッキー状に、クライエントのコンピュータに焼きつけています。
968-----------------------------
$cook = "$file\,$in{'select'}";
print "Set-Cookie: $cookie_name=$cook; expires=$date_gmt\n";
----------------------------------

むしろアンケート内容によっては、一つのテーマには一度だけ投票が
可能とする、2度目は投票できないとしたい場合もあります。そうする
には、クッキー値$cookを変更する必要があります。

すえぽんさんのあんQが、ひろたかさんのこれからのご要望に応える
ことができるcgiであることは、これまでの「改造工事」で証明され
ています。運用して、さらに化粧をふくめて改造してください。

> http://htk-system.com/anq/anq.cgi
> 何か問題なのでしょうか?

上の制限が機能していないため、その値を最初のクリックでクリア
する空クリックがあるようです。配列でデータを一挙に読み込む
便利さはあるのですが、単位表示がむづかしいですね。
上限を超えると$vcount=0にするルーチンを見直してください。
□ ひろたか [2006年12月21日12時46分]
NXerさんへ
>上限を超えると$vcount=0にするルーチンを見直してください。
この部分↓
if (($vcount*10-$count)>=50){$vcount=0;}#上限は初期化する
をどうすれば回避できるのでしょうか?
何から何まで質問攻めしてしまい本当に申し訳なく思います。
あと、現在あんQではアンケートを作成する画面でアンケートテーマなど設定し登録ボタンをクリックすれば登録しましたの画面へ行くのですが、その段階でアンケートが登録されてしまいます。
当方では、現在アンケートの修正を管理者のみ訂正できるようになっております。
それは、作成者が投票数などをいつでも訂正できる事を防ぐ為、考えました。
そこでなんですが可能であれば、その登録ボタンを確認に変更し、その次の設定しましたの画面で登録ボタンを作り登録する形をとりたいのですが、どうすればいいでしょうか?
宜しくお願いします。
□ NXer [2006年12月21日17時15分]

>どうすれば回避

当方は次のテストしました。$vcount*10>=21 の右辺の値を

テーマ25件で21
テーマ51件で51
テーマ64件で61

です。一度に1〜10単位表示です。保存された$vcountは進むの
クリック回数。つまり21件の時押すと$vcount++で30になりより
大のため初期値0にして1〜10表示になりました。

--------------------
if ($vcount<0){$vcount=0;}#下限は0$vcount=0
#-------------------------------
if ($vcount*10>=21){$vcount=0;}#上限は初期化する
-------------------------------
open(WRITE,"> count.dat") || &error("[ $tmp$file ]が開けませんでした。");
print WRITE $vcount;
close(WRITE);
-----------------------------------
これはあらかじめ安定したテーマ数が分かる時スクリプトに定数を
書き込む方式です。簡単ですから試してください。一定の期間
およそ10単位で書き込みが増える程度なら十分対応できます。
今17件で今後増えそうな場合、31にすれば、進むの空押しが
2度あり、さらに押すと初期値に戻ります。しかし、その間に
登録が続けば、空押し期間は短くなります。少なくとも登録して
間違いなく反映されます。改造は最小限です。お試しください。

この定数的変数を得るにはテーマの総数を把握する必要があります。
これは多少厄介ですが、以下、テーマ総数の記録により単位表示の
制御をするには、です。NXerです。

テーマ$subject[i]の最後の次は空データになります。$countを
引数としています。次で最後の数を得て、保存します。
--------------------------
480 ($subject,$lastmod,$pass,$limit,$ent_mode,$repost_mode,$name,$mail,$url,) = split(/\,/,$subject);
------------------
if ($subject[$count] eq ""){$lastcount=$count;&count_write;}
------------------

次に読み出しと書き込みのサブルーチンと進む、戻る、さらに
上限下限超えの$vcount=0初期化の設定です。
------------------------------
sub view_count{
open(READ,"<","count.dat") || &error("[ $tmp$file ]が開けませんでした。");
@data =<READ>;
close(READ);
$vcount=$data[0];
$lcount=$data[1];
if ($in{'mode'} eq 'forward'){
$vcount++;}# $url 加算 view が一度押されるたびに1増加
elsif ($in{'mode'} eq 'back') {$vcount--;}
if ($vcount<0){$vcount=0;}#下限は$vcount=0
#-------------------------------
if ($lcount-$vcount*10<-1){$vcount=0;}#上限は初期化する
&count_write;
}
sub count_write{#新規サブルーチン化
open(WRITE,"> count.dat") || &error("[ $tmp$file ]が開けませんでした。");
print WRITE $vcount;
print WRITE "\n";#改行コード
print WRITE $lastcount;
close(WRITE);
}
----------------------------
以前そして上掲のルーチンでは当方はデータ数を直接制御用に上限を設定
して問題なく処理できましたが、汎用性はありませんでした。ひろたかさ
んの試行版では進むのクリック分、空クリックが発生していました。
そこで上限を唯一得ることができるテーマの最後の数を得ています。
保存するデータは、次のように改行のある2行のデータです。
---------------
4(改行マーク)
51
--------------
進むを4度押し画面に41〜50が表示されています。次の進む
で51件目最後の一つが表示されます。
@data =<READ>;#連続して読み込み$data[i]配列に格納します。
その値を制御に使います。
この変更で、51の次は、さらに進むを押し込むと$vcount=0と
初期化されて自動的に1〜10に戻ります。もちろん、$vcount
を2あるいは3で終了する時は以前の値を保持しています。
これは運用で処理してください。連続して多数の進む戻るの操作
が集中した場合などの現象は当方では検証できません。また、運用
では、ファイルの保護などの手当てが必要ですが、当方にはその能力
はありません。ご研究ください。

>作成者が投票数などをいつでも訂正できる事を防ぐ為

過去ログで姉妹編のところで次のように触れています。
------------------------------------------------------
編集ルーチンでは項目を非表示にして登録者名などの編集に
制限するなどの手直しが必要です。
---------------------
459 #print "<tr><th>項目</th><th>得票数</th><th>グラフ色</th><th>変更/削除</th></tr>\n";
461〜476 削除かコメント化します。
-----------------------------------------
この変更で得票数などは編集画面では表示されず訂正はでき
ません。
管理者は、管理用anqadmin.cgiなどで共通データを自由に
編集できます。利用者用に、登録者名、url、テーマ、項目の
追加などは残す必要があると思います。名前やテーマの一字違
いで管理者に直してくださいメールがきたりするのを防ぐため
です。

>何から何まで質問攻め

当方に回答能力がない場合に回答しない、してはいけないという
原則を守るのがネチケットと思います。
実際もっと優れたアルゴリズムがあると思うとひろたかさんには
正直、心苦しいことばかりです。
フラグの多用、その場しのぎのサブルーチン、多様な変数の設定
などは、構造化やオブジェクト指向のプログラミングでは落第です。
反省ばかりです。少し背伸びをした回答は、ひろたかさんのあらた
な質問になり、限界を感じています。

一連のご質問がなければ、あんQも、当方には平凡なアンケートcgi
で終わっていました。作品を見せていただいてチームあんQを実感
しています。作品は、参考にさせていただいた、すえぽんさんと杜甫々、
KENT両氏の数々の作品や参考書のお陰です。重ねて感謝申し上げ
ます。綺羅☆(きらほし)の輝きをひろたかさんに少しはお伝えでき
ましたでしょうか。

***********************************以下管見まで。
アンケートWORLDへようこそ、は全体に暖色系にまとまって
おり、歓迎感が溢れています。当方は目の保護のためにスク
リーンで輝度を抑えていますが、それでも明度は高いぐらい
です。
そんな素朴な疑問をアンケートで解消!
ということから、投票しなくて他者の結果をみて解消と思ったの
ですが、そういえば、結果非表示でした。当方の愚案など微塵も
感じないで、投票もコメントも新鮮な感覚で、違和感なくできま
した。投票してのお楽しみ感も、全コメントボタンに溢れています。

http://htk-system.com/anq/anq.cgiでは17テーマですが、それで
もいろいろありますね。
ラウンジの守備範囲を超えそうなので管見を一つだけ付記させて
いただきます。
それは、オープンソースによる生活の知識、知恵の再構築です。
サーチ・エンジンではすでに調べる多くのことがらで、wikipedia
が上位を占めつつあります。比較方法は持ち合わせていませんが
印刷体の百科事典をはるかに越える情報量と思われます。

世論調査においても、貴サイトのあんQsistersがオープンソース
として、従来の手法に代わる情報を提供できそうです。それは、もし
次のような表現が許されるなら、あんQぺデイァ、アンケートによる
教育ということができそうです。pediaとはpaideia・教育の英語形です。
大きな文字版、絵文字版、音声版などの姉妹編を加えたりすることで
よりユーザフレンドリになるものと確信します。good luck to you.
□ ひろたか [2006年12月21日18時12分]
NXerさんへ
たびたびすみません。
sub view_count{
open(READ,"<","count.dat") || &error("[ $tmp$file ]が開けませんでした。");
@data =<READ>;
close(READ);
$vcount=$data[0];
$lcount=$data[1];
if ($in{'mode'} eq 'forward'){
$vcount++;}# $url 加算 view が一度押されるたびに1増加
elsif ($in{'mode'} eq 'back') {$vcount--;}
if ($vcount<0){$vcount=0;}#下限は$vcount=0
#-------------------------------
if ($lcount-$vcount*10<-1){$vcount=0;}#上限は初期化する
&count_write;
}
sub count_write{#新規サブルーチン化
open(WRITE,"> count.dat") || &error("[ $tmp$file ]が開けませんでした。");
print WRITE $vcount;
print WRITE "\n";#改行コード
print WRITE $lastcount;
close(WRITE);
}
↑の箇所ですが書き替えるのでしょうか?
それとも新たに挿入すればいいのでしょうか?
基本な事ですみませんが宜しくお願いします。
□ NXer [2006年12月21日20時15分]

> ↑の箇所ですが書き替えるのでしょうか?

書換です。
count.datファイルを見るか、もしくは次の付近に
変数を表示して進むボタンと表示されるデータの
関係を掴んでください。仮に空クリックがあっても
どういう状況か把握できると思います。不具合はそれで
調整してみてください。
-------------------------------------------
194 if ($count > 10*$vcount && $count<=10*($vcount+1) ){
&subject_view;}
}
print "</table>\n</blockquote>\n";
#---------------------------------------------
print "最後";
print $lastcount;print "番です";
print $vcount;print " 倍率";
---------------------------------上作業モニタ変数
ルーチンの行き先不明もありえますのでローカルサーバで
お願いします。

以上です。NXerより。

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

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