Creating your own Leaderboard / Highscores Easy and Free (PHP & MySQL) [UPDATED 2020]

18
  • 55 favourites

Index

Attached Files

The following files have been attached to this tutorial:

.zip
.capx

highscore-example.capx

Download now 180.37 KB

Stats

26,836 visits, 73,173 views

Tools

PHP to Read and Write Scores

Go to your Dashboard and access your File Manager. Here you can upload files, images, sounds, games, etc... This is where the PHP files will be saved (the ones you downloaded attached to this tutorial).

You should click "public_html" directory and upload there your files and folders. To Upload your PHP files, click the "Upload" button and select 'savescores.php' and 'getscores.php' and 'login.php'. You can also upload a zip file and extract it once uploaded.

Edit Your Database Connection Info

Edit the PHP file 'login.php' and update the database part according to the data of your account - like the image shown below. Then save the changes.

(You can also find this data on your Dashboard Tools -> Database Manager)

Reading Scores (testing our PHP)

To read your highscores, we use the file 'getscores.php'.

Type on your internet browser (Google Chrome, Firefox, etc) your free domain + the path to 'getscores.php'.

For example, my URL to read scores is: http://duquekarlgames.000webhostapp.com/getscores.php

If you can see the 'best scores' you previously saved on the database, you have set it up correctly. Congratulations! :)

Writing Scores

You save scores calling the 'savescores.php' file in your website. For example, to save 'John' and '51' points, we will call from Construct 2 the following URL:

https://duquekarlgames.000webhostapp.com/savescores.php?name=john&score=51

Save a new score using the 'savescores.php'.

Then try 'getscores.php' again. If you can see the new score you just saved on the database, you have everything ready!

The server part is ready. Now you only need to set up Construct 2!

  • 87 Comments

  • Order by
Want to leave a comment? Login or Register an account!
  • Great tutorial for a refresher. Ive just finished reading through the tutorial and will soon be implementing the PHP.

  • [FIXED] The scripts save/get should be updated according to the latest PHP formatting rules. After fiddling after a bit I found that in the save.php you should remove the "id" parts when inserting the score.

  • Hi! Thanks a lot for this tutorial and for giving us the example projects and folders! This is really what users want!

    Could you please explain how could I improve/edit the design of the leaderboard tables? What would be the method? I there a way I can create the design on a software like Dreamweaver and have this php/mysql leaderboard implemented? Ou maybe even edit the design as a page/post on Wordpress?

    Lastly, would you be wiling to help me doing this for a work project of mine? Off course I'll be glad to pay something.

    All the best,

  • Great tutorial! Worked great!

    At first, I wanted my leaderboard to update real-time, requesting the table about once per second, but then my website got shut down for requesting 1000 times more than I was allowed too! Oops!

    Anyways, thanks for the great tutorial!

  • Hi

    Thank you so much for this tutorial. I've managed to get everything working except for 2 issues:

    1: My leaderboard is only showing the top 5 results (the other 4 lines on screen are just showing the default 0 0.

    2: When I sort the results into ASC order (as I want to show the fastest time as the best score) the rank is always wrong by 1. I played the game for the first time and submitted my score and my rank came up as 2. This continues to be wrong with each new entry. I've checked my database and there are the correct number of entries. Am I doing something wrong? How can I amend it so it is correct?

    Can you help? I'd be so grateful!

    • Hey! Glad you liked it!

      1. Some things to consider.

      - Are there more than 5 scores in the Database?

      - Maybe Construct2 is not deecting the Text boxes? Delete all the Text boxes and add them again.

      2. In the PHP file getrank.php it adds +1. Find this line:

      // Print the rank (the number of people who have better score than you + 1)

      echo ($i + 1);

      Then delete the +1 part.

      Hope it helps fix the issues! :)

      • Thank you for replying! Rank was still out using the advice above but fixed it another way (I hope).

        I've definitely got more than 5 scores in the database. It's updating the leaderboard order OK when I submit a new result but still nothing after row 5 (just 0 0). Have tried twice to delete and re-add text boxes (do I need to set/add anything else in the layout? It is hard to tell from your example file - there are lots of additional textScore & textNames but assume that is just for your version? Couldn't see that they were referenced anywhere within the project). Is there anything else you can think of that might be affecting it and need changing? It's so odd.

        • I figured it out, for some reason, the array size is set to only have 10 items in it, you need to make it bigger before you start adding things to it.

          Hope this helps!

          • So in getscores.php I have changed it to this so I get 12 lines of results??:

            // Retrieve data from database

            $sql = "SELECT *

            FROM scores

            ORDER BY score

            LIMIT 24"; // The 'LIMIT 24' part will only read 24 scores. Feel free to change this value

            $result = mysqli_query($con, $sql);

            I currently have 10 scores in my database but my leaderboard is still only showing 5 scores. Is there anything else I need to change in php files or in Construct to adjust the array size?

            Thank you for looking into this for me. It has nothing to do with the initial values being 0 does it? and since 0 is a faster 'time' than other results in my database that it is showing these instead? Although the 0s are not being ordered at the top of the leaderboard so I'm guessing that isn't what's happening. The returned rank IS taking into account all the database records so I still haven't a clue.

  • Load more comments (70 replies)