質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Perl

Perlは多目的に使用される実用性が高い動的プログラミング言語のひとつです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

1回答

5921閲覧

オリジナルgoodボタンを実装するには

huhunkaad

総合スコア10

Perl

Perlは多目的に使用される実用性が高い動的プログラミング言語のひとつです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

1クリップ

投稿2015/05/14 10:14

初めまして。お世話になります。
お知恵をお借りできたら幸いです。(すでに似たような質問や回答があれば申し訳ありません。)

SYNCK GRAPHICA様で配布されているBBS Pro CGIのように記事やレスごとに独自のイイネを現在利用している掲示板CGIへ実装したいと考えているのですが何かスマートな方法はありませんか?
扱いはtwitterのお気に入り機能やこのサイトでいう評価機能にも似ています。IPなどの取得はあってもなくても良いです(=ログイン機能などは不要です)。

HTMLやCSSのカスタマイズや配布されているjQueryプラグイン、PHP、CGIの利用及び設置はできます。

利用している掲示板CGIはすでにサポートが放棄されていたり更新が見られないazulboxapeboard+ です。

勉強がてらPHPでまっさらな状態から掲示板を組み立てることも視野にいれていますが、記事ごとに反映させるにはどうしたら良いでしょうか?

ざっくりとしたイメージのみで申し訳ありませんが何かヒントを頂ければと思います。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

「いいね」というのは、記事が獲得した評価、というものと、読者自身がこの記事をよかったことを記録にとどめることの2つの機能があります。
副次的な機能として その評価をシェアする、ということがありますね。

つまり、記事単位で 「いいね値」を加算していくことと、
読者単位で どの記事に 「いいね」をつけたか、ということの2つのデータ管理が最低限必要になります。

(そのうえで、同一人物が 記事に「いいね」をいくつもつけていいのか、などの制約条件があるでしょうね。)

今回は、ログイン管理をしないということなので、一応サーバ側からはユーザ認識ができないものと
考えます。そうすると、1つの方針としては次のようなものになるでしょう。

  1. 記事ごとにIDを振ります。一意になるようにしましょう。

  2. 読者は自分のローカルで どの記事に いいねをつけたか管理します。のちのち再度記事を読んだとき、自分が前に「いいね」をつけたこと、そして2度目は押せないようにすること、などをローカルで管理します。

  3. サーバは、読者が「いいね」ボタンを押したタイミングで、記事単位でのいいね値を加算する処理を行います。このとき、トランザクション処理して取りこぼさないようにします。

  4. データが管理できれば、あとは 記事ID で いいね値を取得して 画面に表示。クライアント側では 記事IDたちをみて、クライアント側dbで、自分が 過去「いいね」をつけたか確認して ブラウザで表示を切り替える。とやればOKですね。

では 実際の技術的にはどう実現するか、ですが、

  1. のデータ管理の部分には IndexedDB か localstorage を使うのがよいでしょう。一番簡単には localstorageですが、きちんと管理するには 前者がいいですね。IndexedDBそのものを使うのが敷居が高ければ PouchDBというライブラリが簡単にJSON形式で管理できて楽できますよ。

  2. には いろんなものでできますね。トランザクション処理と書いてしまったのですが、MySQLみたいに きちんとRDBにする必要もないかもしれませんね。利用者が多くなければ CouchDB でも十分かもしれません。そんなに難しいことではありませんよ。

  3. 現状のCGIをそのままにしたいなら、いいね値のサーバからの取得は AJAXで別建てで取るのも一つの手です。現在 表示しようとしている 記事ID(記事ID達) を 送って いいね値を返すだけのサービスを作ってAJAXでとってやるような実装です。

とこんな感じでしょうか。特に難しい点はないのでチャレンジしてみてください。

投稿2015/05/14 14:35

okayu3

総合スコア200

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

huhunkaad

2015/05/14 15:25

大変参考になりました。ありがとうございます。 質問後にも色々調べているうちに今の状態を保ったまま取得するのであればAJAXがすぐに実装できそうなのでそこからチャレンジしてみます。 その他1、2の案にも同時にチャレンジして勉強していきます。 この度は丁寧に回答を頂きありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問