過去ログ NO.1164854462
□ ひろたか [2006年11月27日21時13分]NXerさんこんにちわ! 一通り思い通りのものが出来、大変嬉しく思っていたのですが、サイトを立ち上げ見に来て頂く方の気持ちになって考えていたところ、下記何点かのような事が出来るならよりいい事なのですがどうでしょうか? @トップページにあたるアンケート一覧ページのアンケートテーマが20件を超えると自動的に次頁へというボタンができ(既に出来ていてもいい)21件目以降は2ページ目に表示されるようにすることは出来ますでしょうか? 例えばアンケートテーマが沢山出来てきた時に順番に表示されるのはいいのですが結果だけでも見にくる人もおられるかと思います。そんな方が100件のアンケートテーマの中から探すより20件ごとに表示されれば調べやすいのではと。。。 Aアンケート投稿時にカテゴリの項目も選択でき、アンケート一覧のページに検索窓が付き、そのカテゴリごとに検索表示されるようにできるのでしょうか? なおかつアンケート一覧ページの列にそのカテゴリの表示も出来れば有難いです。 例えば検索窓に芸能とうてばアンケート一覧に表示されているアンケートは芸能のカテゴリで登録されたアンケートだけ表示するみたいな事です。 Bトップのアンケート一覧の列にそのアンケートの総投票数が表示できないでしょうか? 可能な範囲で構いませんのでご教授お願い申し上げます。
□ ひろたか [2006年11月28日09時50分]NXerさんこんにちわ! もう一つお願いしたいのですが(もう一つもう一つで本当に沢山依頼しすみません) @アンケート一覧のページの列項目にアンケートを投稿された投稿者という列を組み込みたいのですが、お願いします。 列項目は入れれたのですが、登録者の名前が上手く枠内に納まらず。 今後の為にどこをこうしたら組み込めるのかも書いていただけたら有難いです。それでは宜しくお願いします。
□ NXer [2006年11月28日14時02分] >見に来て頂く方の気持ち すでに幾つかテーマを登録されましたか。NXerです。
以下改造してあらたなcgiのファイル名をanq_subject.cgiとします。 元版はanq.cgiとします。
その1>次頁へというボタン
大切なお断り、 1.1 この変更はデータ構造に変化なしです。当方には不明の今のファイル名 と/tempmes などのディレクトリ名変更なしです。 1.2 これは当方のプログラミング能力の制約ないです。他によい方法がある と思われます。ご自身で理解しにくい処理でしたら後のメンテナンスを考え ご検討ください。条件文の それ、そして、それだけ を表示する が 2分割、3分割で違う点など作った当方も時時トレースできなくなります。
すえぽんさんの原作を利用して、ボタン代わりの機能を付加してみます。 ボタンにしたい場合は投票・更新ボタン例を見てください。データは16件 作成してテスト済みです。しかし、自コンピュータ内のサーバでテストで きる環境を繰り返し推奨します。再度質問の時はそれら環境を必ず書いて ください。障害の発生の責任は当方には一切ありませんが、貴コンピュー タのディスク内容のバックアップをするなど不測の事態に備えてください。 すくなくとも今開発中のあんQのcgiは、CD−ROMなどの外部記憶媒体 に保存されますことを推奨します。なぜなら、改造案のまとまったスクリ プトは、世界中にひろたかさんのディスク上とサーバ上の2つしかないから です。
初期値設定 ----------------------------------------- #テーマ一覧flag $page_view=1; #最初の5件起動時に表示 $page_view1=0; #次の6〜10件 次のページで表示 $page_view2=0; #残り任意の数だけ表示 #---------------- 初期設定ここまで -------直上付近どこでも可
50件なら25件づつ2度のリスト表示。最後は #$page_view2=0; と#を 前に付けて非実行文にします。 20件20件10件3度表示なら上のまま。90件ほどなら 30件づつ3ページまで。
124 &get_cookie; --------------------------挿入 if ($in{'mode'} eq 'new_page1') {$page_view=0;$page_view1=1;} if ($in{'mode'} eq 'new_page2') {$page_view=0;$page_view2=1;} if ($in{'mode'} eq 'first_page') {$page_view=1;} ----------------------------- if ($in{'mode'} eq 'reg' || $in{'mode'} eq 'adreg' || $in{'mode'} eq 'change') { ®ist; } --------------------------------- 最初の当方の例1〜5件 $page_view=1 の値 次の6〜10件 は $page_view=0 と旗をゼロにする そのページの旗$page_view1=1 を立てる 次の11〜16件 は $page_view=0 とまた旗をゼロにする そのページの旗$page_view2=1 を立てる
そしてまた元に戻るとき$page_view=1 と旗を立て直すています。 それ、そして、それだけ になるように分岐条件を場合分けしています。
183 else { $inf = "終了";} 184 } #-----------------------------------------挿入 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;} #--------------------------------------------- 189 } この括弧からは元のスクリプトです。 190 print "</table>\n</blockquote>\n"; if ($open_mode) { print "■<a href='$script?mode=new_open'>新しいアンケートテーマを設定する</a>\n"; --------------------------------------↓ここから挿入 print "<br><br>\n";} if ($open_mode) { print "◆<a href='$script?mode=new_page1'>次の5つテーマを見る</a>\n"; } if ($open_mode) { print "◆<a href='$script?mode=new_page2'>残りのテーマを見る</a>\n"; } if ($open_mode) { print "◆<a href='$script?mode=first_page'>始めの5つのテーマを見る</a>\n"; } ---------------------------------------↑ここまで print "</blockquote>\n"; ---------------------------------------------------------
最後に表示サブルーチンです。現スクリプトの sub copy { } の後、最後に追加します。 -------------------------------------------- 994 sub subject_view{ print "<tr><td align=center>$count</td><td><a href='$script?data=$_'>$subject</a></td><td>$up</td><td>$inf</td></tr>\n"; } --------------------------------
if (($page_view>=1 && $count<=5)||($first_view>=1 && $count<=5)) この行の括弧は (1(2...............&&.........2)||(3..............&&.........3)1) の対応に注意してください。 A && B A も B も同時に真 C || D C か D のいずれかが真 という条件文です。括弧一つ欠けても、perlは全体が動作しません。 この括弧でエラーが発生しても、そのエラーに気づくことはむづかしい ため、印刷して括弧に違う色のマーカを付けて対応を確実にしてください。
その2) >カテゴリの項目
愚案ついでに、カテゴリ追加ですが、今$mailは収集する必要性が少ない ことから、この変数をカテゴリ名にされてはいかがですか。 表示欄の名称を変える程度のとても簡単な変更です。そして上の186行の表示で すでに見出しはできていますから、それを変えるだけです。
-----------------------------------データ構造、変更なし $mailを使う $subject,$lastmod,$pass,$limit,$ent_mode,$repost_mode,$name,$mail,$url,$mes,) = split(/\,/,$subject); ------------------------------------------見出し例 176 else { print "<table class=plain>\n<tr><th class=plain>テーマ</th><th class=plain>カテゴリ</th><th class=plain>開始日</th><th class=plain>終了日</th></tr>\n"; } □□------------------------------------------------- 186 print "<tr><td class=plain>□<a href='$script?data=$_'>$subject</a></td><td class=plain>$mail</td><td class=plain>$up</td><td class=plain>$inf</td></tr>\n"; ------------------------------------------------ -------------------------確認ページ表示例 設定者の名前: nxer カテゴリ: 都市生活 #表示名入力とともに要変更 ホームページ テーマ 住みたい世界の町 投票項目: □パリ □ロンドン □NY □東京 ------------------------ 一覧表示例 ----------------------------------------実際は罫線入り テーマ カテゴリ 開始日 終了日 □住みたい世界の町 都市生活 2006年11月28日 無期限 ------------------------------------------- 投稿者は先入観を与えるため表示しない例。
カテゴリは100件程度なら、目で見てリストの位置などを 記憶することができます。★芸能★ ☆スポーツ☆など の記号で背景画像・背景色によってかなり同一カテゴリを 発見しやすくするかも分かりません。 また、おや、こんなテーマもあるのかという思わぬ発見 (serendipity)もこの種のウェブページの楽しみの一つ と愚考します。
その3) >投稿された投稿者 >総投票数が表示
総投票数はデータ構造の変化を伴うためにcgiファイル名と作業ディレクトリ 名を変更して新たにデータを作成する必要があると思われます。 変数を$ttl ($total) ------------------------------------------ $subject,$lastmod,$pass,$limit,$ent_mode,$repost_mode,$name,$mail,$url,$ttl,$mes,) = split(/\,/,$subject); ------------------------------------------ のようになります。
しかし、その3)の2つの変更は次のような矛盾を含みます。
ひろたかさんが最初の変更動機が、アンケートの結果を非表示にして 先入観なしに投票を促すものでした。 テーマ一覧で総得票数や投稿者氏名を投票前に公表することは テーマによる選択以外に、得票の多いテーマや投稿者で選択する 要素が加わります。 現行でも、総得票のない、または、少ないテーマはますます投票 されずに、他の多いテーマが選択されるかも知れません。
一度公表され、自ウェブサイトで宣伝したりご友人に協力して もらい、より多数の試験的な運用を1週間程度されてはいかが ですか。結果が上手くいけば、テーマやカテゴリの立て方など も試すことができるかもわかりません。
以上運営問題もラウンジの枠内と考えて触れさせていただきました。
>もう一つもう一つ すえぽん作品の設置改造よりも、むしろ、このような利用方法の質問 のほうがあんQについては多いかも知れません。あんQの検索結果は 約18,200 件でしたが、その中にはひろたかさんの参考になる面白い 運用例が沢山あると思います。
cgiの開発では、通常は企業や諸機関、団体で協議し、技術者にcgiの 仕様の詳細を伝え、開発を依頼します。最も大きな制約は予算です。 次に目的です。目的の変更は、データ構造の変更につながり、新た に別作品を作るのに等しい労力を要することもあります。一覧画 面の要素をテーマ、開始日、期日と契約しても、のちのち一つ、ま た一つ、と変更をプログラマーに依頼人が要求することはよくある ことと思われます。過去の設置例などで事前に十分な検討が必要に なります。すえぽん作品は、サンプルです。それでほとんど必要な 要件を満たしています。しかし、たかひろさんの要求水準を十分に は満たしていません。また一つ、その上限は運用と共に続きます。 しかし、これまでの変更改造から、ご自身で解決がほとんどつくと 思います。
□ ひろたか [2006年11月28日16時58分]NXerさん回答有難うございます。 カテゴリの追加の件ですが$mailを利用して設置できたのですが、入力項目をセレクトで選択できるようにするにはどうすればいいでしょうか? カテゴリ分類はとりあえず政治・芸能・趣味・その他という感じで出来ればお願いします。
□ ひろたか [2006年11月28日18時03分]NXerさんご教授お願いします。 現在、当方のアンケートはNXerさんのお陰でアンケートの投票をしないとグラフが表示されないのですが、一度投票してまた見に来た時にグラフが隠れているのは問題ではないかと少し疑問に思っています。 そこで質問です。 ユーザーが一度、投票するとその日の内はグラフが表示されている風には出来ますでしょうか? また、新規で投票される方には初回は表示してほしくないです。 質問2) 投票項目を追加時に任意に画像を添付する事は可能でしょうか? 現在、思案中の案ですが、可能であれば組み込みたいと考えています。
□ NXer [2006年11月28日20時57分] >カテゴリ分類
16項目の内初期画面表示後、芸能で選択した当方の画面です。 ----------------------------------------NXer 番号 テーマ カテゴリ開始日 終了日 2 TV番組top10 芸能 2004年11月01日 終了 5 あややCD10 芸能 2005年11月06日 終了
■新しいアンケートテーマを設定する ◆次の5つテーマを見る ◆残りのテーマを見る ◆始めの5つのテーマを見る
政治 芸能 趣味 その他 --------------------------------------------------------- これは最初に5項目の初期画面がでたあと、芸能を選択しテーマ一覧表示 状態。枠の罫線省略。
その1)初期設定挿入 --------------------- #カテゴリflag $ctgry="なし"; #---------------- 初期設定ここまで ----------------#
その2)分岐条件 &get_cookie; if ($in{'mode'} eq 'new_page1') {$page_view=0;$page_view1=1;} if ($in{'mode'} eq 'new_page2') {$page_view=0;$page_view2=1;} if ($in{'mode'} eq 'first_page') {$page_view=1;} -------------------------------上既存下挿入カテゴリ追加可能 if ($in{'mode'} eq 'politics') {$ctgry="政治";} if ($in{'mode'} eq 'entertainment') {$ctgry="芸能\";} if ($in{'mode'} eq 'hobbies') {$ctgry="趣味";} if ($in{'mode'} eq 'others') {$ctgry="その他";} #-------------------------------------
その3)一覧表表示 -----------------------------------
191 else { $inf = "終了";} } #-----------------------------カテゴリ別一覧表示 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"; -------------------------------------------
その4)カテゴリ選択表作成
if ($open_mode) { print "■<a href='$script?mode=first_page'>始めの5つのテーマを見る</a>\n"; } #---------------------------------------挿入 print "<br><br><table><tr><td>\n"; print "<a href='$script?mode=politics'>政治</a></td><td>\n"; print "<a href='$script?mode=entertainment'>芸能\</a></td><td>\n"; print "<a href='$script?mode=hobbies'>趣味</a></td><td>\n"; print "<a href='$script?mode=others'>その他</a></td></table>\n"; #---------------------------------- print "</blockquote>\n"; ----------------------------------- 他に変更なし。
カテゴリ別の場合は、各分野に理想的な均等の割合で40件4カテゴリ なら一度に10件の表示程度になるために表示単位制限はしてありません。 一度にカテゴリすべて表示です。
画面の整理はしてありません。ご要望を当方の能力の範囲で処理 した愚案です。カテゴリの未入力はエラーとする処理などを組み 込んでください。あるいは未入力は自動的にその他にしてもよい のですが、その他が増えすぎる恐れもあります。 そのあたりは運用で様子をみてください。 ********************************************重要な警告 繰り返します。サーバでの直接のテストは、当方のテストにもかか わらずとても危険な行為です。万一障害発生時には契約が取り消 されます。かならずサーバの規約を読んでください。当方の改造 スクリプトによるいかなる障害も当方の責任ではありません。
□ ひろたか [2006年11月29日21時01分]NXerさんこんばんわ! カテゴリごとの表示ローカルサーバーでは問題なく動作しております。 今後も引き続き不具合が起こらないか慎重に確認していきます。 現在、そのカテゴリごとの表示をセレクトボタンを作成しその横に表示ボタンを作成することは出来たのですが上手く動作しませんでした。 やはりまだまだ自分で組み込む事がうまくできません。 そこで教えていただきたいのですが、現在のカテゴリごとの表示をセレクトで選択し表示ボタンをクリックすれば、表示出来るようにできますでしょうか? よろしくお願いいたします。
|
|