slim

Creating a star rating system part (3)

Jan. 5, 2006

In part 2 I show how you could make a star rating system using php and some nifty css Now I want to show you the files that make it all work with a mySQL database. I am also going to show how, with a few minor changes, this can become an independent reusable system. First lets create the table on the database to hold the info for the rating system.

CREATE TABLE ratings(
	id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
	total_votes INT NOT NULL,
	total_value INT NOT NULL,
	which_id INT NOT NULL,
	which_table VARCHAR(255),
	used_ips LONGTEXT NULL
	);

Now you may look at me and say "hey, in the last tutorial you are updating the actual article table, why are you making a new one". The answer is that this approach makes the system stand on its own. With just a minor change to the code we turn this from dependent to independent.

The above code run through a mySQL query will create a table with those columns. This is only needed once per database. This will hold all of the ratings in a table that can be cross checked with article, gallery or other tables to keep track of rating items. Example: a database with two tables; one articles the other ratings. The star ratings page is included in the article page and when someone votes, that vote and ip address is tallied and fed into the ratings table. When the page reloads the rating is then pulled out of the database according to 'which_id' and 'which_table'.

To make this stand on its' own there only needs to be a few small changes.

mysql_query("UPDATE $tableName SET 
total_votes='".$added."', total_value='".$sum."', 
used_ips='".$insert."' WHERE id='".$_GET['id']."' 
AND which_section='".$_GET['section']."'");

Add 'which_section' to the update call and of course to the insert call. I also need to change the url that sends the ratings variable so that it shares what section this belongs to.

<li><a href="#" title="Rate this 1 star out of 5" 
class="one-star" onclick="location='tutorial.php?section=
articles&id=<?php echo $_GET['id'] ?>&vote=1'">1

Below I have linked some common terms to php.net and mysql.com so you can read about what they do to get a better understanding of how they work.

$rating_posted=$_GET['vote'];
//gets the passed voted variable by the stars value

$id=$_GET['id'];
$query=mysql_query("SELECT * FROM 
$tableName WHERE id='".$id."' ")
or die(" Error: ".mysql_error());

$numbers=mysql_fetch_assoc($query);

mySQL databases cannot store an array unless it is coded in a particular way. To keep the ip addresses in the same place I serialized them on the insert -

$count=$numbers['total_votes'];
//how many votes total
$current_rating=$numbers['total_value'];
//total number of rating added together and stored

Throughout the process of calling on the database for information I fed the array into a variable. These variables allow you to call on the data by its column name in the database, making it a breeze to access data.

$insert= serialize($checkIP);
mysql_query("UPDATE $tableName SET 
total_votes='".$added."', total_value='".$sum."', 
used_ips='".$insert."' WHERE id='".$_GET['id']."'
AND which_section='".$_GET['section']."'")");

and then unserialize the array to access the information for ip address comparison.

$checkIP=unserialize($numbers['used_ips']);
//array of ip address that have already voted

There are many handy build in functions of php, one of which is globals, these items make life easier when trying to gather host, form, server or session information from or about a user.

$current_ip=$_SERVER['REMOTE_ADDR'];
//gets the ip address of the current user

This next item is called a ternary conditional. You will love these babies, they are basically a short hand for writing an if/else statement.

$tense=($count==1) ? "vote" : "votes";
//plural form votes/vote

Lastly but not least of all I used number_format built in function of php to give me a nice neat number that I can display anyway I want. Remember how back in the day you had to multiply by some number and divide by another to get 'pretty' floats, well not any more. Simply feed in the float and tell it how many decimal places to display and voile. You'll also notice the '@' symbol in front of each call I make to this function. The reason is that when the rating system is on its first call the numbers associated with it are all zero. This function throws an error if you try to divide zero by zero, so I suppress the error using the '@' symbol.

@number_format($sum/$count,2)

Your comments:

1: Zeerus said:

Again, thanks for all your help on this David, it'll really come in handy, now I just need to buy that hosting account, arghh

2: David said:

Hey Thanks for the kick in the pants to get this going. I'll try to update this as much as possible to keep it fresh. May even open it up to allow the public to enter submissions, but that's down the road a bit.

3: rogie said:

I have the next tutorial up for the CSS for the star rater with the current rating. Check it out at css-star-rating-maintaining-state

4: David said:

All my standards people are going to love this one. I was reading an article about AJAX, as that is one of my next personal goals is to at the very least become familiar with the concepts, and I came across a comment about the article that a viewer made. "[...] turn off java and your whole idea goes down the perverbial toilet[...]" I sat there and said "WOW", thinking about my own star rating system and the javascript 'onclick' that it uses to refresh the page. Then it hit me like a ton of bricks. If all I am doing is refreshing the page, I can make php do it for me and ditch the javascript call thus making my page safer. and so: href="<?php echo $_SERVER['PHP_SELF'] . "?" .$_GET['section'] . "&id=" . $_GET['id'] . "&vote=1";?>" This not only shortens the line but works nicely if javascript is turned off and gives meaning back the href value. Again this does not invalidate what you have, just makes it a whole lot simpler ;)

5: Terrence Yost said:

Ok... this looks great. Can you explain the files in the zip distribution a little better? Why are there three separate DB files? what do I do with them? Why are they not in the main "Star_rating.php" file, for example? Many thanks!

6: David said:

Hello Terrence. the separate connect, open and close files are there so you can use them globally. Meaning that often times you will have more than one require/include so instead of having multiple open and close statements you can use those files in your main page and create an open connection for all of your calls. You can of course combine the connect and open files, I merely left them separate because that is how i initially learned to use them. The 'tablename' file is separate for the exact same reason. For example if you had an article page in one php file and the rating system in its own, and lets say a comments php page, you would then include all three pages on one main php page to get them to work together. So instead of going throughout the files and creating your select, update and insert statements with your table name. you can use the 'tableName.php' file to tell the files where to look in your database. So then if you wanted to use the same base file system for a tutorial site, you could then just copy the pertenant files into another directory and simply change the 'tableName' variable and hook that system up to a totally different set of database information. It's just a way that I personally handle my database creation, for instance my base url is 'tutorial.php' for this site and 'viewArticles.php' for my blog site. but i am using the exact same file just styled differently for both. I have the 'tableName.php' file locally in the corresponding place I name in the file structure of the require/include.

7: Ben Moseley said:

Hey, I know nothing at all about php and mySQL databases. I know CSS and HTML; the rest is on the to-do list, but for now I was wondering if you could help out a fellow noob. I downloaded the files and changed the connectDB file to the correct information. Now I don't know which files to upload where. I have a mySQL database setup and I see I can upload files into that. The question is which ones and also, am I supposed to change any of the data in any of the other files. I really want this feature on my site. My email address is moseley.ben@gmail.com if you need it. Ben Moseley

8: David said:

I'll send you an email Ben.

9: Chris said:

Great addition to Rogie's tutorial David. Quick question, how can this be used multiple times using the same database field. Say if you were to numerous different t-shirt designs lets say all on the same site using the same database to store their respective ratings.

10: David said:

Hey Chris, Ryan Masuga created a really nice multiple rating script, uses AJAX and he has made the files downloadable.

11: SJ said:

I'm very impressed by this rating system. Looks great and is exactly what I wanted for my site. Been searching a while for something like this (you should package it and sell it). Trouble is I know nothing about this programming stuff. I can run php stuff on my server and have an mysql database thingy but I don't understand it at all. I've got the files but now what? How would an ubernoob like myself find out how to use this stuff in my website? Ideally need multiple ratings on each page. And how do i set up my dbase? Can someone point me to a tutorial somewhere please?

12: David said:

I was just Helping Ben with some of the same questions you ask SJ, and it just came to a point where I could not help him beyond actually setting it up for him because of a lack of php knowledge. You need a basic understanding of php to be able to implement these scripts. I am however in the process of writing these as stand alone plug a and play deals for people who have no php experience, but am miles away from any type of release on that. My best answer for you is to go www.w3schools.com and go through their indepth begginners tutorials, and use www.php.net as a reference. To answer your question more directly the first code snippet "create tables" is the database set up, you would simply need to create a php page, require/include the connect, open and close.php pages that are included with the download and publish that page ( view it ) on the server in a web browser. If you put in the correct username, password and database information in the connect.php page that will set up the rating system in the database. Then the first time you run the star rating script in a browser it will propagate the database with the first vote. To see this in action multiple times on a page, view the link to Ryan Masuga in my previous comment. Thanks.

13: Don said:

Hey, looks fantastic so far. The gods are being cruel to me though. I have everything set up, but when I click on one of the stars to submit my rating...well, something and nothing happens. I'm calling the page OK, and getting the 'thank you for your vote' message, but nothing shows up in the database. 8-(

14: David said:

Sounds like you have the database set up correctly because it is seeing the IP address, make sure that if you have changed any variables in the url link that you change those same variables in the 'INSERT' statement.

15: Lucas said:

I apologize in advance for being such a newbie on this topic. I have downloaded your Star Rating System Zip File, now I need to create the mySQL database correct? Do I just create a database with all the code shown on part 3 via phpMyAdmin? Once Again I apologize for being so new to the subject, I hope you don’t think I’m a lost cause because of the lack of knowledge. Thank you very much sir, have a good day.

16: David said:

You are correct. the first thing to do would be to use the part 3 tutorial and set up the database using phpMyAdmin. try to load the star rating system to yourserver and just use a test page with only it so you can see how it works and or test it to make sure it is working how you want it to.

17: H Class said:

I'm keep getting this message. Anyone has a clue? Warning: mysql_query(): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) in /html/star/star_rating.php on line 4 Warning: mysql_query(): A link to the server could not be established in /html/star/star_rating.php on line 4 Error: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

18: H Class said:

This is the "line 4" that's bugging out. What's wierd is that I can actually vote and everything seems to work but I keep getting that error. $query=mysql_query("SELECT total_votes, total_value, used_ips FROM $tableName WHERE id='".$id."' ")or die(" Error: ".mysql_error());

19: david said:

Hey H Class. It looks like its working because the CSS is doing what its supposed to but the it appears that you have not set up your database so you are getting that error. make sure you open the connect.php page that came with, and feed in your database information and make sure that those pages are in the same directory. let me know if you have any other issues.

20: calvin said:

hi david how can i tie this rating system to a photo gallery?...i want my gallery to be database driven, and then give users the ability to rate the pics in the gallery (not created yet)

21: Joey said:

Well, Thanks for the great start. I am super new to PHP and I am working on changing my site over from a windows asp server to a linux PHP server. I would like to include this rating system in a section of my website. I am currently getting a few errors that I dont know what is going on. Notice: Undefined index: vote in C:..................Star2test.php on line 8 Notice: Undefined index: id in C:..................Star2test.php on line 10 Notice: Undefined index: section in C:..................Star2test.php on line 14 Error: Unknown column 'which_section' in 'where clause' Any idea on what is causing this?

22: david said:

Calvin here is a great implementation of ryan masugas ajaz script that uses this system http://www.masuga.com/thelab/ajaxrate/

23: Henry said:

Hi David, this is amazing. However I am new to this, so I am a little bit confuse in here. I upload all the star_rating_php.zip files, change the connectDB.php setting. Ran the "CREATE TABLE ratings". What else do I need to do to input the rating into the database? I have also use the komodomedia.com as the layout, but I just don't understand how does your's connect to komodomedia.com's. Maybe this is just too simple ask, please excuse me for that. Thanks for your time.

24: David said:

I'm going to email you so I can get more information from you. after what you have done it should be as simple as modifing the file to correspond to what ever you are trying to rate's setup.

25: todd said:

hi trying to work through your tutorial here. i was wondering, how does "SELECT title" in the mysql_fetch_assoc figure into the script? is there a table i'm missing? thanks, todd

26: David said:

Todd, not sure where you are seeing select title. but if you mean the $tablename variable, its so you can set the table in the database to pull the info from, so for instance if you are using the name 'article' if you assign that to $tablename, then that is the table from th database that you will be calling info from.

27: newbie said:

Very great tutorial. I don't have very much experience in php and I couldn't get on running this star rating sistem. Do you have a complete newer version, working that I can use it. Could you please send it to me by e-mail. Thank you very much.

28: David said:

Hello tiny, unfortunatly you do need a basic level of experience to get the rating system to work. This system is a complete and working version, I am working on an ajax version right now, that will in fact create the tables in the database for the rating system

29: David said:

Hey Gus, you somehow need to change the connection so the system can identify that you are using a local host, if you are able to connect to your locally installed database with other scripts, use that connection, the connection files in this tutorial are meant for people who are not familiar with connecting to a database. the rating system has to be able to connect to the same database as the the other tables, you mentioned two sites not sure if you are tring to access both with the system might have to create two different ones if I'm understanding what you are trying to do.

30: david said:

@problem, send me a screen shot I'll take a look

31: Chris Buckley said:

Good idea, but for the security-concious among you, watch out for SQL injections; protect your SQL queries with mysql_real_escape_string() when using GET or POST variables like this.

32: David said:

Good tip Chris looking back at it now, i need to update this or write a new tut, cause this code has evolved beyond this in my current use with ajax and what not.

33: Tim said:

Hello, this system is great and all but I wondered if it would be easy to change the code so that instead of an ip address it would only allow users to vote and only allow them to vote once. Also, this would work for multiple pages on a site right?

35: world of warcraft gold said:

We are a world class wow gold store online. We supply cheap wow gold,You may buy cheap wow gold here. There is wow power leveling for sale; you can buy really cheap world of warcraft gold here. Neglected which camps you in ,you also can buy wow gold here, you may come to http://www.inwowgold.com.

37: warhammer gold said:

[/size][/url] [url=http://www.vipwarhammergold.com/][color=#0000ff]buy warhammer gold[/color][/url] [url=http://www.vipwarhammergold.com/][color=#0000ff]war gold[/color][/url][/size] [size=4][url=http://www.buyfastgold.com/][size=4][color=#0000ff]warhammer gold[/color][/size][/url] [url=http://www.buyfastgold.com/buy-warhammer-gold/][color=#0000ff]buy warhammer gold[/color][/url] [url=http://www.buyfastgold.com/][size=4][color=#0000ff]war gold[/color][/size][/url][/size] [size=4][url=http://warhammer-gold.rgtrcredit.com/][size=4][color=#0000ff]warhammer gold[/color][/size][/url] [url=http://warhammer-gold.rgtrcredit.com/Buy-warhammer-gold.html][color=#0000ff]buy warhammer gold[/color][/url] [url=http://warhammer-gold.rgtrcredit.com/][color=#0000ff]war gold[/color][/url][/size] [size=4][url=http://warhammer.hellgate-pd.com/][size=4][color=#0000ff]warhammer gold[/color][/size][/url] [url=http://warhammer.hellgate-pd.com/buy-warhammer-gold.html][color=#0000ff]buy warhammer gold[/color][/url] [url=http://warhammer.hellgate-pd.com/][size=4][color=#0000ff]war gold[/color][/size][/url][/size] [size=4][url=http://www.warhammer100.com/][size=4][color=#0000

38: warhammer gold said:

[/size][/url] [url=http://www.vipwarhammergold.com/][color=#0000ff]buy warhammer gold[/color][/url] [url=http://www.vipwarhammergold.com/][color=#0000ff]war gold[/color][/url][/size] [size=4][url=http://www.buyfastgold.com/][size=4][color=#0000ff]warhammer gold[/color][/size][/url] [url=http://www.buyfastgold.com/buy-warhammer-gold/][color=#0000ff]buy warhammer gold[/color][/url] [url=http://www.buyfastgold.com/][size=4][color=#0000ff]war gold[/color][/size][/url][/size] [size=4][url=http://warhammer-gold.rgtrcredit.com/][size=4][color=#0000ff]warhammer gold[/color][/size][/url] [url=http://warhammer-gold.rgtrcredit.com/Buy-warhammer-gold.html][color=#0000ff]buy warhammer gold[/color][/url] [url=http://warhammer-gold.rgtrcredit.com/][color=#0000ff]war gold[/color][/url][/size] [size=4][url=http://warhammer.hellgate-pd.com/][size=4][color=#0000ff]warhammer gold[/color][/size][/url] [url=http://warhammer.hellgate-pd.com/buy-warhammer-gold.html][color=#0000ff]buy warhammer gold[/color][/url] [url=http://warhammer.hellgate-

41: scanit said:

Wow cheats Wow cheat happened everyday. Many players become the victim of wow cheat, do you know how did this happen? What kind of form do wow cheats been? Cheats for WOW can come in a variety of different forms. While WOW does not actual have cheat codes, some players use bugs in the game code to their advantage. This is commonly referred to as an exploit (as in exploiting an error made by the games programmers.) While exploits work for a period of time, they are eventually discovered by Blizzard and fixed in a future patch. Mod or Mods is another form of wow cheating in WOW. This is done by modifying some aspect of the game. For example changing the screen colors to make night time game play more visible would be considered a mod. You are giving yourself an advantage over other players who have not modified their display in any shape or form. Read more about WOW mods. Walkthroughs and other types of guides are also considered by many to be a WOW cheat. Bots are yet another way about the wow cheat. They are external software that run while you are playing the game, they are often used to automate some type of in game task to benefit your character in some way. They are also known as Wallhacks, aimbots or simply wow bots. Besides that, some wow cheats happened because they trade with some game website. I always buy wow gold and power leveling service from www.farmer100.com. I think they are reliable and their customer is sweet. TaultUnleashed is a nice forum too, They offer thousands Worldof warcraft cheap wow gold wow powerleveling wow account wow level wow accounts wow guide free wow wow china wow blog

43: scanit said:

Wow cheats Wow cheat happened everyday. Many players become the victim of wow cheat, do you know how did this happen? What kind of form do wow cheats been? Cheats for WOW can come in a variety of different forms. While WOW does not actual have cheat codes, some players use bugs in the game code to their advantage. This is commonly referred to as an exploit (as in exploiting an error made by the games programmers.) While exploits work for a period of time, they are eventually discovered by Blizzard and fixed in a future patch. Mod or Mods is another form of wow cheating in WOW. This is done by modifying some aspect of the game. For example changing the screen colors to make night time game play more visible would be considered a mod. You are giving yourself an advantage over other players who have not modified their display in any shape or form. Read more about WOW mods. Walkthroughs and other types of guides are also considered by many to be a WOW cheat. Bots are yet another way about the wow cheat. They are external software that run while you are playing the game, they are often used to automate some type of in game task to benefit your character in some way. They are also known as Wallhacks, aimbots or simply wow bots. Besides that, some wow cheats happened because they trade with some game website. I always buy wow gold and power leveling service from www.farmer100.com. I think they are reliable and their customer is sweet. TaultUnleashed is a nice forum too, They offer thousands

46: ohj said:

%u7687%u6F64 %u7687%u6F64 %u7687%u6F64 %u8336%u306E%u3057%u305A%u304F%u304A%u8A66%u3057%u30BB%u30C3%u30C8 %u30BB%u30EB%u30D6%u30E9%u30A4%u30C8 %u30A2%u30E0%u30E9%u30A8%u30C3%u30BB%u30F3%u30B9%u3067%u9AEA%u5065%u3084%u304B%u306B %u6C5F%u539F%u9053%u5316%u7CA7%u54C1%u304A%u8A66%u3057%u30BB%u30C3%u30C8 %u30EC%u30C7%u30A3%u30FC%u30B9%u30D7%u30A8%u30E9%u30EA%u30A2%uFF19%uFF19%uFF05 %u30E0%u30C1%u30E3%u30C1%u30E3%uFF1Amuchacha%uFF1A %u30B0%u30E9%u30B0%u30E9%uFF1Agrand-ground %u4E8C%u91CD%u307E%u3076%u305F%u306B%u3059%u308B%u65B9%u6CD5 %u307E%u3064%u3052%u30A8%u30AF%u30B9%u30C6%u300C%u30A2%u30A4%u30E9%u30C3%u30B7%u30E5%u300D%u901A%u8CA9 %u30A2%u30A4%u30DB%u30FC%u30F3%u901A%u8CA9 %u30EA%u30D0%u30A4%u30BF%u30E9%u30C3%u30B7%u30E5 %u30A2%u30F3%u30D7%u30EB%u30FC%u30EB%u304A%u8A66%u3057%u30BB%u30C3%u30C8 %u30A2%u30B9%u30BF%u30EA%u30D5%u30C8%u304A%u8A66%u3057%u30BB%u30C3%u30C8 %u30C8%u30EA%u30CB%u30C6%u30A3%u30FC%u30E9%u30A4%u30F3%u304A%u8A66%u3057%u30BB%u30C3%u30C8 %u30D6%u30ED%u30FC%u30C9%u30A4%u30AA%u30F3 %u4E09%u4E03%u77F3%u9E78 %u30CA%u30CE%u30A2%u30AF%u30A2%u30CA%u30C1%u30E5%u30E9%u30EB%u30BD%u30FC%u30D7 %u30D9%u30C8%u30CA%u30E0%u682A%u306E%u53E3%u5EA7%u958B%u8A2D %u30EA%u30D0%u30A4%u30BF%u30E9%u30C3%u30B7%u30E5 %u30D9%u30A2%u30DF%u30CD%u30E9%u30EB %u30D3%u30FC%u30B0%u30EC%u30F3 %u7D14%u91D1%u7A4D%u7ACB%u3066 %u30AA%u30D5%u30A3%u30B9%u5BB6%u5177%u901A%u8CA9 %u9178%u7D20%u30AB%u30D7%u30BB%u30EB%u30AC%u30A4%u30C9 %u52A0%u5727%u30C8%u30EC%u30FC%u30CB%u30F3%u30B0 %u30AA%u30FC%u30D9%u30EB%u30B8%u30E5 %u30A6%u30A3%u3000%u30A2%u30D4%u30B7%u30A2 %u30C0%u30A4%u30A8%u30C3%u30C8%u98DF%u54C1%u901A%u8CA9 %u30A2%u30EB%u30B8%u30EB%u30EA%u30F3 %u5316%u7CA7%u54C1%u304A%u8A66%u3057%u30BB%u30C3%u30C8 %u30EC%u30FC%u30B5%u30FC%u30C0%u30A4%u30A8%u30C3%u30C8 EGF%u5316%u7CA7%u54C1%u30D1%u30BD%u30A2%u30D1%u30BD %u30A2%u30B9%u30BF%u30AD%u30E5%u30A2 %u5916%u53CD%u6BCD%u8DBE%u306E%u4E88%u9632%u3068%u77EF%u6B63 H%uFF06M%uFF08%u3078%u30CD%u30B9%uFF06%u30E2%u30FC%u30EA%u30C3%u30C4%uFF09 %uFF2F%u811A%u306E%u6539%u5584%u3068%u77EF%u6B63 %u96FB%u52D5%u81EA%u8EE2%u8ECA %u30D5%u30FC%u30EC%u30BB%u30E9%u30D4%u30FC %u30B7%u30ED%u30A2%u30EA%u5BFE%u7B56%u30AC%u30A4%u30C9 %u30AB%u30EB%u30B8%u30A7%u30EB %u9234%u866B%u5BFA %u30D5%u30FC%u30C7%u30A3%u30A2 %u30B9%u30D1%u30EA%u30BE%u30FC%u30C8 %u30AB%u30EB%u30CB%u30C1%u30F3%u30AF%u30A4%u30FC%u30F3 %u30AB%u30EB%u30CB%u30C1%u30F3%u30AF%u30A4%u30FC%u30F3 %u306B%u3093%u306B%u304F%u6CE8%u5C04%u3063%u3066%u30AD%u30AF%u306E %u8CEA%u5C4B:%u5927%u962A %u8CEA%u5C4B:%u6771%u4EAC %u8CEA%u5C4B:%u540D%u53E4%u5C4B @%u501F%u91D1%u76F8%u8AC7 %u5225%u308C%u65B9 %u3086%u305F%u3093%u307D %u30C8%u30E2%u30BB%u30E9%u30D4%u30FC%u3068%u306F %u6B6F%u4E26%u3073 %u77EF%u6B63%u6CBB%u7642 %u30A2%u30FC%u30C8%u30E1%u30A4%u30AF%u3067%u3044%u3053%u3046 %u65E5%u713C%u3051%u30B5%u30ED%u30F3%u3067%u3044%u3053%u3046 %u8D85%u97F3%u6CE2%u30A8%u30AF%u30B9%u30C6 TOIEC%u52C9%u5F37%u6CD5 %u501F%u91D1%u7121%u6599%u76F8%u8AC7 %u30D9%u30E9%u30F3%u30C0%u3000%u30CF%u30C8%u5BFE%u7B56 %u9ED2%u9BDB%u306E%u91E3%u308A%u65B9 %u5C11%u5E74%u91CE%u7403%u306E%u30D4%u30C3%u30C1%u30F3%u30B0%u6307%u5C0E%u6CD5 %u30B9%u30CE%u30DC%u30FC%u306E%u6ED1%u308A%u65B9 %u8584%u6BDB%u5BFE%u7B56%uFF65%u629C%u3051%u6BDB%u5BFE%u7B56 %u5373%u65E5%u767A%u884C%u3000%u30AF%u30EC%u30B8%u30C3%u30C8%u30AB%u30FC%u30C9 %u30D9%u30C8%u30CA%u30E0%u682A%u53E3%u5EA7%u958B%u8A2D %u30AF%u30EC%u30B8%u30C3%u30C8%u30AB%u30FC%u30C9%u3000%u5373%u65E5%u767A%u884C %u30BB%u30EB%u30D6%u30E9%u30A4%u30C8 %u30EA%u30D0%u30A4%u30BF%u30E9%u30C3%u30B7%u30E5 %u30D5%u30A7%u30D6%u30EA%u30CA%u3000%u30B8%u30A7%u30EB%u30D1%u30C3%u30AF %u30A2%u30A4%u30DB%u30FC%u30F3 %u8336%u306E%u3057%u305A%u304F %u8336%u306E%u3057%u305A%u304F

48: warhammer gold said:

come here to view this news, now all wow players can buy warhammer gold and Cheap warhammer gold,very cheaper warhammer gold from our website,we have much wow gold for sale,we supply cheapest wow gold for you, if you have more gold in wow ,you can also buy wow gold to us ,as we have more wow gold sale, so you can purchase gold for wow and gold in wow game, from here you can buy wow gold or wow gold us. we also have aoc gold and warhammer gold on sale.Masters of the hunt, wilderness buy warhammer gold trackers and the strongest ranged DPS in cheap warhammer gold, Hunters play an essential role in the dangerous cheapest warhammer gold land of Azeroth. Able to tame wild animals to service warhammer gold loyal companions, Hunters are excellent soloers buy warhammer gold and can single-handedly fight multiple beasts simultaneously and cheap warhammer gold still emerge victorious. Their strength lies in long-ranged cheapest wow gold combat, but Hunters are still quite capable wow gold up close in melee. They are easily considered one of the strongest overall characters in buy wow gold and have quickly become a popular favourite for many players.One of the key unique cheap aoc gold powers of the Hunter is their ability to track a variety of creatures. Unlike Druids who can only Track Humanoids, Hunters can track virtually everything; elementals,cheapest wow gold beasts, humanoids and even hidden and sheathed creatures! This ability, plus their incredibly high Damage-Per-Second (DPS) coupled with their trained pet, makes the world of warcraft gold Hunter the most valued farming class in the game. Not only are Hunters capable in solo-combat, but they bring a buy world of warcraft gold lot to a group as well.

51: wow gold said:

Here, the alternative is not about what to doworld of warcraft goldwow poinstead of taking them,wow orit is about what to do as well buy wow goldas taking antibiotics and howcheap wow goldto protect yourself after you'vwow power levelinge finished the course.Twow powerlevelinghe key is to take a supplement of the two dofus kamasmain probiotics we neekamas dofusd for the intestine, lacto-bacillus aciLord of the Rings Online Golddophilus and bifidobacterium bifidum.BLOTRO Goldoth help to detoxify the LOTR Goldbowel, manufacture B vitamins fly for fun penyaand keep yeasts and undesflyff penyairable bacteria in check, but arbuy flyff golde damaged by antibiotics. Ear ffxi gilinfection A short fast wibuy ffxi gill help.Stick to water and juiceFinal Fantasy XI gilfor the first 24 or 36 hours and beEverQuest 2 goldcause the body is not distracted eq2 platby the digestive process,ffxi gilyou will fight the infection moreFinal fantasy xi gilefficiently.Hot packs and cold compressesbuy ffxi gilease symptoms.Both Ugg Bootsgarlic and echinacea are antiviral and Ugg Bootsantibacterial and liquorice is a good immune system enhancer.Ugg BootsStudies show treating otitis with antibiotics leads to more ear problems, more frequently.The best option is usually no antibiotics at all, except in the case of acute otitis.Instead, after visiting the doctor, concentrate on easing your child's symptoms while their immune system fights the infection on its own.

53: James said:

Hello, my script seem to work fine, and coem up with the message "Rating: 1.00 {1 votes cast} Thank you for your vote!" however nothing is inserted into the database, please help , thanks james

Changelog