スポンサーサイト

  • --/--/--
  • このエントリーをはてなブックマークに追加

スポンサーリンク

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

MySQLとAjaxによる星型評価ボタンの設置方法

  • 2007/08/23
  • このエントリーをはてなブックマークに追加

スポンサーリンク

星型評価ボタン
最近よく見かけるシステムで、MySQLに対応した星型レビューボタンの設置方法です。
サンプルデモ

ダウンロード方法の英語は以下に。
Star Rater Ajax Version

So, I found this great star rater script made in css. But I missed the web 2.0 stuff. So i played arround with it so it would work on a database without having to refresh any pages (but updating the database with AJAX). In this version i use it for rating a image (with unique id = imgId).

興味のある方は簡易翻訳しましたので以下に。
ただし、多少PHPの知識が必要とされますので、あらかじめご了承ください。
IT/Web業界に強い転職サイトGreen

導入方法


(追加記事)
このシステムの脆弱性
ZAPA氏による指摘。公開から7時間で指摘エントリーを作ってくれました。
仕事はやい・・・。

MySQLとAjaxによる星型評価ボタンの脆弱性に注意

1)アイコンを手に入れる
2)JavaScriptを手に入れる


このページで以下の作業を行います。
JavaScript


3)PHPを作る

if($_GET[’rating’] && $_GET[’imgId’]){
$dbh=mysql_connect ("localhost", “#######”, “"#######", “) or die (’I cannot connect to the database because: ‘ . mysql_error());
mysql_select_db (""#######", “);
$imgId = $_GET[’imgId’];
$text = addslashes(strip_tags($_GET[’rating’]));

//ads the rating to imgID in the database
$update = “update vote set voteNr = voteNr + 1, voteValue = voteValue + “.$_GET[’rating’].” WHERE imgId = ‘“.$imgId."‘“;
$result = mysql_query($update);
if(mysql_affected_rows() == 0){
//creates a new row if imgID has no own row yet
$insert = “insert into vote (voteNr,voteValue,imgId) values (’1’,’”.$_GET[’rating’]."’,’$imgId’)";
$result = mysql_query($insert);
}
}

("localhost", “#######”, “"#######", “)は("localhost", “データベースユーザー名”, “"パスワード", “)となっています。

mysql_select_db (""#######", “); はデータベース名を入力します。

このファイルの名前を『update.php』とする。


4)MySQLのセッティング

CREATE TABLE `vote` (
`voteNr` int(8) NOT NULL default ‘0’,
`voteValue` int(8) NOT NULL default ‘0’,
`imgId` varchar(100) NOT NULL default ‘’,
UNIQUE KEY `imgId` (`imgId`)
) TYPE=MyISAM;

テーブル名を『vote』にし、フィールドを作成する。


5)CSSのダウンロード
星を表現するためのCSSをダウンロードしよう。
ダウンロード
先ほどダウンロードしたページの5番目の項目でダウンロードできる。


6)PHPから現在の評価を取り出すコード
$rating = getCurrenRating('12');//12は例、これがIDとなって格納されているデータベースを引っ張る。

これを実行するために、以下の文をページのどこかで表示する必要がある。

<?
function getCurrenRating($imgId){

$sql= "select * from tblVote WHERE imgId= ‘“.addslashes($imgId).”’ LIMIT 0, 1”;
$result=@mysql_query($sql);
$rs=@mysql_fetch_array($result);

return @round($rs[voteValue] / $rs[voteNr],1);

}
?>



7)JavaScriptの呼び出しを忘れない
<script src="rating.js" type="text/javascript"></script>
これをヘッダーに入れておく。

<div id="rating">
<h3>Rating:</h3>
<pre>
<ul class=’star-rating’>
<li class=’current-rating’ id=’current-rating’ style=’width: <? $ratingpx = $rating *25; echo $ratingpx;?>px’><!-- Currently <? echo $rating ?>/5 Stars.--></li>
<li><a href="javascript:rateImg(1,’<? echo $imgId ?>’)" title=’1 star out of 5’ class=’one-star’>1</a></li>
<li><a href="javascript:rateImg(2,’<? echo $imgId ?>’)" title=’2 stars out of 5’ class=’two-stars’>2</a></li>
<li><a href="javascript:rateImg(3,’<? echo $imgId ?>’)" title=’3 stars out of 5’ class=’three-stars’>3</a></li>
<li><a href="javascript:rateImg(4,’<? echo $imgId ?>’)" title=’4 stars out of 5’ class=’four-stars’>4</a></li>
<li><a href="javascript:rateImg(5,’<? echo $imgId ?>’)" title=’5 stars out of 5’ class=’five-stars’>5</a></li>
</ul>
</pre>

『update.php』を読み込む為のJavaScriptを読み込みます。

スタイルシートを読み込み、星型の表示を完成させます。

見事、出来上がり。
と、なるはずです。

コードも間違いが無いように使用する場合は
直接元記事からいただくようにしたほうが良いですね。

ではでは。

スポンサーリンク

トップへ戻る

Twitter版のネタ帳では毎週月曜~金曜までWeb屋さんに役立つ色んな情報や単なるネタまでをつぶやいています。

関連するエントリー

コメント

この記事にコメントする人はクリック

コメントポリシーをお読みください
管理者にだけ表示を許可する

塚地

自分のブログにこういうのを設置してみようかと思いましたが・・
う~ん・・ちょっと難しいかな。今度時間あったらやってみます。

いつも素敵な情報ありがとうございます!

2007/08/24 Fri 11:04| |

Domian 英語

GoodLac じゃなくて Good Luck ですよ!
あああああああああああああああああああああああ 寒い(うそ)。
これからも一読者として応援してます。がんばってください。

2007/08/25 Sat 02:41| |

rm MTはPHP化が必要?

MTに設置しょうとやってみたのですが、
これはMTをPHP化していないとできないでしょうか。
手順の6)以降がよくわからなく。。
よろしくお願いします。

2008/11/20 Thu 14:53| |

Yamada

>MTはPHP化が必要?

そもそも呼び出すファイルの拡張子がPHPじゃないと呼び出せませんね・・・。
MTは使ったことが実はないのですが、cgiだと不可能かもしれません。

2008/11/20 Thu 21:18| |

rm

MTやはりそうですか。。
早速ご回答いただきありがとうございました。

2008/11/21 Fri 01:29| |

FC2Ad

広告


IT・Web業界の求人なら転職サイトgreen(グリーン) ホームページテンプレート、WordPressテーマ、Facebookページテンプレートならクラウドテンプレート ネットマーケティングとは│ネットマーケティング検定 SEOコンサルティング&SEO対策 無料レスポンシブWebデザインテンプレート 広告主募集

あわせて読みたい
フィードメーター - ホームページを作る人のネタ帳

人気の記事一覧

あなたのブログの再訪問者を増やす50の方法

私の経験から感じた事を書き記します。全てが全てその時々で、正しいとは限りませんが、一つの指針としてお使いください。因みに全部リスト化すると230くらいありましたが、それはきっとセミナーとかでやるかなぁと。

http://e0166.blog89.fc2.com/blog-entry-824.html

あなたの生活を確実に拘束し時間を浪費させる動画50

今回は生産性を向上させる事ばかり考えて記事を書いてきたので、逆に年末にかけて忙しい皆さんの時間を出来るだけ拘束し、忙しさを倍増させるものが無いかを考えました。その結果、動画で行こうと言う事になったのが1ヶ月以上前。動画閲覧本数はおそらく600本以上。その中から、おもしろそうなものを50個ベストチョイスいたしました。

http://e0166.blog89.fc2.com/blog-entry-820.html

webデザインのセンスを磨く○○系のwebデザインまとめ

webデザインを学ぶならwebデザインから。と言うわけで、今回は海外のエントリを中心に、○○系のまとめをまとめます。

http://e0166.blog89.fc2.com/blog-entry-817.html

jQueryプラグインのベストトレンド総まとめ2010

もはやこの業界ではかなり浸透しつつあるjQuery。今回はそんなjQueryにスポットを当て、本年度紹介された中でも、ホットなトレンドプラグインをご紹介します。

http://e0166.blog89.fc2.com/blog-entry-816.html

ツイッターの日常における35の行動パターン

私が良く見かける35の行動パターンに名前をつけてみようと思う。年末の誰も見てない時に公開しようと思っていた、ただのネタだったのですが、結構時間がかかりこの時期に・・・。

http://e0166.blog89.fc2.com/blog-entry-823.html

ウェブデザイナーのためのウェブアプリ15

OSがWindowsであろうと、ubuntuであろうと、共通のサービスを受けることができるのがウェブアプリケーションです。ウェブデザイナーの中には、自宅ですでにubuntuを利用している人も多い。また、Mac、Windowsと、各自それぞれの使いやすい物を利用していると思います。

http://e0166.blog89.fc2.com/blog-entry-784.html

愛用するGoogleChromeエクステンション12個

この2年でノートPC2台購入。自他のPCはクラッシュしてリカバリー。会社のPCは新しいのがあたり、再セットアップ。そんなこんなで、会社はまぁともかくとして、とりあえず全PCが比較的3ヶ月に一度リカバリーしてもいいように、自分用にメモとして残しておきます。

http://e0166.blog89.fc2.com/blog-entry-784.html

文章や会話のプレゼンテーションを向上させる方法

文章力がないためにプレゼンに失敗した、会話がうまくできずにプレゼンに失敗した。こういう経験はなかなか無い。なぜなら多くの場合、失敗したことに気がつかないからです。

http://e0166.blog89.fc2.com/blog-entry-802.html

サイトの裏側の意識を変え売り上げをアップする方法

ネットショップ運営者が、あることをちょっとだけ始めてみただけでわずか5ヶ月で売り上げが3倍になりました。はたして、webサイト運営がどのように変わったのでしょうか。。

http://e0166.blog89.fc2.com/blog-entry-749.html

webサイトのリピーターを増やすさりげない5つのコツ

多くのビジネスサイトのアクセス数を支えている大手検索サイト、Yahoo、Googleのアルゴリズムが変わる事で、突然商売がひっくり返る事態を回避する方法。

http://e0166.blog89.fc2.com/blog-entry-746.html
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。