• 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

    • Microsoft confirms Windows Outlook breaks in many ways after major Calendar feature upgrade by Sayan Sen Microsoft has been trying to get more users onto New Outlook for Windows, and it is doing so not just by enforcing the newer app but also by making improvements along the way. In doing so, though, the company has caused the Classic Outlook app to bug out in the past. The classic app received a major Shared Calendar-related upgrade recently, with many " long-awaited improvements" as well as "small changes in form and function." As the name suggests, the Outlook Shared Calendar essentially allows multiple people to interact with and manage the calendar. With Shared Calendar improvements enabled, users will see the following changes: Instant sync and view of shared calendars Editing series end date does not reset the past Accepting meeting without having to send a response Last Modified By no longer shown in the meeting item Adding same calendar multiple times can't be done Duplicate calendars simultaneously selection Attachments addition not possible when responding to a meeting invitation Event drafts auto-save changes The "Download shared folders" setting is ignored Unfortunately, as with any major feature upgrade, there are bugs, and Microsoft has confirmed this is no different. The tech giant has shared official guidance for it so that users can work around the problems. According to the company, "Shared Calendar improvements are now enabled by default in the most recent versions of Outlook, in all update channels for Microsoft 365 Apps," and thus, the bugs are likely to affect many. Here are some of the bugs Microsoft is investigating, as well as their workarounds: Bug Workaround Meeting cancellation sent unexpectedly to some attendees in classic Outlook In a REST shared calendar, after adding or removing an attendee, or forwarding a meeting, a meeting cancellation may be sent unexpectedly to some attendees. Use the Outlook Web App or new Outlook when adding or removing an attendee or forwarding a meeting. Attendees do not get updates on attachment changes by Delegate When a delegate sends an update on a meeting that requires removing an attachment on an occurrence of a meeting series, the recipients may not get some or all of the attachment changes. In the delegate's Sync Issues folder, you'll see sync errors. Example: 17:23:26 Synchronizer Version 16.0.15313 17:23:26 Synchronizing Mailbox 'Delegate User' 17:23:26 Synchronizing local changes in folder 'Manager User' 17:23:27 Uploading to server 'https://outlook.office365.com/mapi/emsmdb/?xxxxxxxx-xx' 17:23:30 Error synchronizing folder 17:23:30 [0-320] There is no known workaround. It is recommended, whenever possible, to save attachments to SharePoint or to OneDrive and share with a link. After an attachment is deleted from an existing meeting, it may reappear after being deleted Please wait approximately one minute to give the sync time to complete. Additionally, it is advisable to save attachments to SharePoint or OneDrive whenever possible and share them using a link. A meeting created by a delegate with limited calendar access disappears and is unsent when a sensitivity label other than "Normal" is selected Three potential solutions to address this issue, each with their own implications for functionality: Manager can update delegate's permissions to allow viewing of private items. Delegate can change the sensitivity label of the meeting to "Normal". Delegate can disable Shared Calendar Improvements (not recommended). Aside from these, Microsoft has also fixed several other bugs, which you can find in the official support article here on the company's website.
    • I’ve just paid £290/$390 for a 4TB Samsung 990 Pro for my PS5 Pro so it’s not too far from the going rate. Microsoft should definitely copy Sony and let users buy their own SSD in their next consoles rather than this proprietary stuff. I paid £374/$505 for the 2TB Seagate card for my Series X a few years ago so it’s not exactly over priced. 4TB of NVMe storage ain’t cheap!
    • The EU regulations force companies to respect users privacy, choice and data. Something all tech companies have abused to the hilt and would continue to do so if it wasn’t for important legislation and laws the EU brought in, which have been adopted elsewhere around the world. The EU can be a nuisance, but they actually do more good than harm. Forcing Apple, Google, Microsoft etc to make changes hasn’t negatively impacted anyone apart from their financials as they aren’t free to pillage our data like they once were, unless they explicitly provide options to obtain consent.
    • Windows 10 Enterprise IoT LTSC will continue getting updates until January 2032. I would expect support from most programs to continue until then. Firefox still supports Windows 7 (until the end of August), which will be just over 16 years since release. Windows 10 will be of a very similar age in January 2032. I'm sure some things like games will move on earlier, but I imagine a Windows 10 machine will be safe and usable for a long time to come yet, despite the pressure and fearmongering from those who stand to gain from selling you a new PC.
    • Refined dock and bug fixes land in latest Elementary OS 8 updates by David Uzondu If you're running Elementary OS 8, there's a new round of updates available, bringing some neat enhancements, particularly to its signature Dock and the underlying window manager, Gala. If you are not familiar, Elementary OS positions itself as a polished alternative to Windows and macOS. It runs its own custom desktop environment called Pantheon, with Gala handling all the window management magic, like animations and how windows behave. In the new update, the Dock gets some notable new tricks, including the return of a couple of features that old-school Plank (the Dock's foundation) users might remember. For starters, the Dock now shows multiple indicator dots beneath an app icon if you have more than one window open for that application, which is useful for quickly seeing what is running. Plus, if you are dragging something and hover over an app icon in the Dock, it will cycle through that app's open windows, making it easier to drop your item into the right place. You can also now long-press an app icon to bring up its context menu, a nice touch for those who prefer that interaction. The elementary OS team also squashed some bugs related to hide modes and memory usage, keeping things running smoothly. Gala itself recently got a massive update, addressing around 20 reported issues and introducing a brand new Gesture Controller. This means users can now swipe up in the Multitasking View to close windows, a slick and intuitive gesture. App titles are now always shown in Multitasking View, a significant improvement for touchscreen users. Users also get notified when they take a screenshot with a keyboard shortcut, and this notification lets them jump straight to the image in Files. Some other welcome Gala improvements include saving window states on sleep and shutdown, and fixing an annoying bug where menus might only show once. For gamers, a fix for Lutris Flatpak installations causing Gala to crash with GE Proton setups will be a relief, and users of the Postman app will be happy to know that window captures for it are no longer partially rendered. Shifting back to Elementary OS 8, in System Settings, choosing light or dark mode properly snoozes your schedule instead of outright disabling it. The Reduce Motion setting has been expanded to cover a wider array of animations, which is a blessing for folks prone to motion sickness. Hotcorners got some fixes too, and there is a new option to keep them active even when an application is full screen. Other notable updates include added screen reader support for notifications and the shortcut overlay, fixes for Flatpak sandbox issues that affected apps like Steam, and the latest version of GNOME Web, which brought better performance and a redesigned bookmarks sidebar. You can download all these updates by opening System Settings, heading to System, and hitting "Update All."
  • Recent Achievements

    • Enthusiast
      Epaminombas went up a rank
      Enthusiast
    • Posting Machine
      Fiza Ali earned a badge
      Posting Machine
    • One Year In
      WaynesWorld earned a badge
      One Year In
    • First Post
      chriskinney317 earned a badge
      First Post
    • Week One Done
      Nullun earned a badge
      Week One Done
  • Popular Contributors

    1. 1
      +primortal
      186
    2. 2
      snowy owl
      131
    3. 3
      ATLien_0
      129
    4. 4
      Xenon
      121
    5. 5
      +Edouard
      91
  • Tell a friend

    Love Neowin? Tell a friend!