• 0

[PHP] Some sort of scoreboard.


Question

Hi there!

In two weeks we have some big fun activity day at school, in groups, and people are supposed to get points for it. Now, I'm charged with making a scoreboard and I thought it must be easy to just run a quick XAMPP server on a laptop, and on the external screen having a webpage in fullscreen with autorefresh, while I am on the laptop itself to enter scores.

I was thinking something about a page for all groups (about 40) with, next to each group, 25 input boxes. For the scoreboard it should just add up all of the 25 boxes for each group (to get a total score) and then display them in the right order. (highest points first).

Now, I know HTML, so formatting is no issue, and I know some PHP, but I don't know anything of integrating MySQL in PHP...

Anyone can give me a jumpstart?

Ty

Ambroos

Link to comment
https://www.neowin.net/forum/topic/749726-php-some-sort-of-scoreboard/
Share on other sites

7 answers to this question

Recommended Posts

  • 0

Hi,

This tutorial is just about the best on the internet...

http://www.tizag.com/mysqlTutorial/

Basically, you do the following:

1) Create a database and a table to store the scores (use phpmyadmin provided in xampp)

2) Connect to the database with a username and password

mysql_connect("localhost", "USERNAME", "PASSWORD") or die(mysql_error());
mysql_select_db("DBNAME") or die(mysql_error());

2) Insert the scores into the database

mysql_query("INSERT INTO TABLENAME (column1, column2etc) VALUES ('.$_POST['textbox1'].', '.$_POST['textbox2'].' ) ") or die(mysql_error());

3) Query, and output the scores from the database and format using HTML to display it on a page

$query = "SELECT * FROM TABLENAME ORDER BY COLUMN ASC"; 	 
$result = mysql_query($query) or die(mysql_error());
while($row = mysql_fetch_array($result)){
	echo $row['column1']. " - ". $row['column2'];
	echo "<br />";
}

4) You can order the scores by using ORDER BY as per above, and just tell it which column you want to order by...

5) You'll need to add your scores together which you can do using either the SQL Count function, or by putting the scores into an array and counting them using PHP.

As long as you set the table, database and column names correctly, that would give the following functioning script. You just need an input page with a form setup for the scores to be typed into.

<?php

mysql_connect("localhost", "USERNAME", "PASSWORD") or die(mysql_error());
mysql_select_db("DBNAME") or die(mysql_error());

mysql_query("INSERT INTO TABLENAME (column1, column2etc) VALUES ('.$_POST['textbox1'].', '.$_POST['textbox2'].' ) ") or die(mysql_error());

$query = "SELECT * FROM TABLENAME ORDER BY COLUMN ASC"; 	 
$result = mysql_query($query) or die(mysql_error());

// the while loop will run until there are no more results to display

while($row = mysql_fetch_array($result)){
	echo $row['column1']. " - ". $row['column2'];
	echo "<br />";
}

?>

Get familiar with connecting and outputting, and then you can post your code and I'm sure someone will help you with the counting functions...

  • 0

Hey,

mysql_query("INSERT INTO TABLENAME (column1, column2etc) VALUES ('.$_POST['textbox1'].', '.$_POST['textbox2'].' ) ") or die(mysql_error());

Just make sure you validate your input! As anyone could put in some dodgy values into the textboxes and it would be ran as a SQL query.

Look here: http://www.tizag.com/mysqlTutorial/mysql-p...l-injection.php

  • 0
  Knad said:
Hey,

mysql_query("INSERT INTO TABLENAME (column1, column2etc) VALUES ('.$_POST['textbox1'].', '.$_POST['textbox2'].' ) ") or die(mysql_error());

Just make sure you validate your input! As anyone could put in some dodgy values into the textboxes and it would be ran as a SQL query.

Look here: http://www.tizag.com/mysqlTutorial/mysql-p...l-injection.php

We will run the script only on one pc (which doubles as a server) just for one day, and it won't be connected to any networks, so that won't be necessary since I will be the only person entering values.

@Pip: thanks, gonna try it!

  • 0
  Knad said:
Hey,

mysql_query("INSERT INTO TABLENAME (column1, column2etc) VALUES ('.$_POST['textbox1'].', '.$_POST['textbox2'].' ) ") or die(mysql_error());

Just make sure you validate your input! As anyone could put in some dodgy values into the textboxes and it would be ran as a SQL query.

Look here: http://www.tizag.com/mysqlTutorial/mysql-p...l-injection.php

:blush: fair cop guv

@Ambroos, glad you're enjoying it - what knad says is a good habit to get into...

If you're only using form input, you could just stick this line at the top of every page with your connect string

//stolen from php.net
array_map("mysql_real_escape_string",$_POST);

can you tell I'm bored...

  • 0
  pip said:
:blush: fair cop guv

@Ambroos, glad you're enjoying it - what knad says is a good habit to get into...

If you're only using form input, you could just stick this line at the top of every page with your connect string

//stolen from php.net
 array_map("mysql_real_escape_string",$_POST);

can you tell I'm bored...

:D

Thanks, I'll remember it.

Okay, now my score input form is done and everything works fine in my Virtualboxed Xampp! Just using a simple JS to add up all the scores for the single matches. To do: make the scoreboard with autosort... and that'll be tomorrow :p

Ty everyone ^^ I love Neowin

(now i just hope our school's IT department will give me an admin username/pass so i can at least install xampp)

  • 0

Hi everyone!

Just finished my stuff, and I'd just like to show you what I've made! Wouldn't have been possible without Pip's great hints links and examples!

Screenshots are from a virtualboxed XP with Firefox 3.1b3 and the window resolution we will be using to project it with.

1. Select what group you want to edit (uses form post that a php page picks up)

post-151800-1237843550_thumb.png

2. Enter the scores for the group (O1 - O20 stands for the 20 different things ppl can get scores for, eten and geld are two bonusthings they get points for).

A javascripts adds up all the form fields and puts the total in totaal. (the +1 buttons just add 1 to the corresponding text field).

post-151800-1237843666_thumb.png

3. Update done page, shows a quick review of the group you just edited. Go to group input on left side to start new edit

post-151800-1237843713_thumb.png

4. The live scoreboard (for display on a second monitor) shows the Top 10 with groupnames and corresponding scores (the 'totaal' thing). Small between brackets is the group ID (number they will have to remember themselves too) so I can find things quickly if something is wrong etc.

post-151800-1237843832_thumb.png

I know it needs some font tweaking, but that's just some CSS and a 1 minute job, but not today!

If anything goes really wrong I can always just go to PHPMyAdmin and fix it. Nothing should go wrong though, I'm the only one who will be entering scores so I know what to do :p

I am VERY happy with the result as it is EXACTLY what I wanted ^^ It felt awesome to create something yourself if it doesnt exist yet!

Thanks everyone!

This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Posts

    • Vivaldi 7.4.3684.52 by Razvan Serea Vivaldi is a cross-platform web browser built for – and with – the web. A browser based on the Blink engine (same in Chrome and Chromium) that is fast, but also a browser that is rich in functionality, highly flexible and puts the user first. A browser that is made for you. Vivaldi is produced with love by a founding team of browser pioneers, including former CEO Jon Stephenson von Tetzchner, who co-founded and led Opera Software. Vivaldi’s interface is very customizable. Vivaldi combines simplicity and fashion to create a basic, highly customizable interface that provides everything a internet user could need. The browser allows users to customize the appearance of UI elements such as background color, overall theme, address bar and tab positioning, and start pages. Vivaldi features the ability to "stack" and "tile" tabs, annotate web pages, add notes to bookmarks and much more. Vivaldi 7.4.3684.52 changelog: [Address bar] URL is searched instead of opening (VB-117198) [Chromium] Update to 136.0.7103.179 [Settings][Workspaces] Add Workspace Rule button hidden by 4th rule (VB-117181) Download: Vivaldi 64-bit | 125.0 MB (Freeware) Download: Vivaldi 32-bit | ARM64 View: Vivaldi Home Page | Screenshot Get alerted to all of our Software updates on Twitter at @NeowinSoftware
    • NTLite 2025.06.10482 by Razvan Serea NTLite is a Windows configuration tool that allows you to modify your existing Windows install or an image yet to be deployed, remove Windows components, configure and integrate, speed up the Windows deployment process. Reduce Windows footprint on your RAM and storage drive memory. Remove components of your choice, guarded by compatibility safety mechanisms, which speed up finding that sweet spot. Windows Unattended feature support, providing many commonly used options on a single page for easy setup. Easily integrate a single or multiple drivers, update or language packages. Package integration features smart sorting, enabling you to seamlessly add packages for integration and the tool will apply them in the appropriate order, keeping hotfix compatibility in check. One of the important new features of NTLite (compared to its predecessors) is the ability to modify an already installed the operating system, by removing unnecessary components. Supports Windows 11, 10, 8.1 and 7, x86 and x64, live and image. Server editions of the same versions, excluding support for component removals and feature configuration. ARM64 image support in the alpha stage. Does not support Checked/Debug, Embedded, IoT editions, nor Vista or XP. NTLite 2025.06.10482 changelog: Fix Image: Image optimization would be skipped if both boot.wim and install.wim would keep only one edition Image: Crash after exporting unloaded image in certain situations Upgrade UI-Translation: Thanks for Turkish (Salih DURDU), Georgian (Anonymous) Download: NTLite 64-bit | 21.5 MB (Free, paid upgrade available) Download: NTLite 32-bit | 19.3 MB Link: NTLite Home Page | NTLite Features | Screenshot Get alerted to all of our Software updates on Twitter at @NeowinSoftware
    • CrystalDiskMark 9.0.1 is out.
    • Wonder if the HDMI Forum will allow AMD to use HDMI 2.2 under Linux.
    • Where did you hear visio is discontinued? It's still available and being updated on Office 365 and even has an online free version now too.. and dont tell me because visio 2021 has EOL listed a Oct 13, 2026.. they have a beta version right now for visio 2026
  • Recent Achievements

    • Week One Done
      Wayne Robinson earned a badge
      Week One Done
    • One Month Later
      Karan Khanna earned a badge
      One Month Later
    • Week One Done
      Karan Khanna earned a badge
      Week One Done
    • First Post
      MikeK13 earned a badge
      First Post
    • Week One Done
      OHI Accounting earned a badge
      Week One Done
  • Popular Contributors

    1. 1
      +primortal
      691
    2. 2
      ATLien_0
      264
    3. 3
      Michael Scrip
      201
    4. 4
      +FloatingFatMan
      167
    5. 5
      Steven P.
      140
  • Tell a friend

    Love Neowin? Tell a friend!