Long Story short im making a game using only php/html/css and I have this code a
ID: 3911040 • Letter: L
Question
Long Story short im making a game using only php/html/css and I have this code and its not working ...
The game is deal or no deal
<? php
if (! session_start ()) {
echo "Sessions are required!" ;
exit ;
}
// name of this file
$ page = $ _SERVER [ 'PHP_SELF' ];
// Name for person this can be linked through a session or via a cookie
$ username = $ _SERVER [ 'REMOTE_ADDR' ];
// The numbers that participate can be made as much as possible with a minimum of 2 numbers
$ numbers = array ( '1' , '5' , '10' , '20' ,50 , 100 , 200 , 300 , 400 , 500,
1000 , 5000 , 10000 , 20000 , 30000 , 40000 , 50000 , '100000' , '125000' , '250000' );
// At which turns the 'bank' has to make an offer, after the last number goes a bid also this can be infinitely
$ bid = array ( '6' , '9');
// name of the table in which the game is located
$ tablename = 'game' ;
// Title file
$ title = 'Deal or no Deal' ;
// Do you want everything to be kept, or everything will be removed afterwards.
// TRUE = YES and FALSE = NO
$ destroy = true ;
// the code
echo "
<! DOCTYPE HTML PUBLIC " - // W3C // DTD HTML 4.01 Transitional // EN "
" http: //www.w3.org/TR/html4/loose.dtd ">
<html>
<head>
<title> " . $ title . "</ title>
<style type = 'text / css'>
background-color:white;
border:1px solid black;
}
div{
font-family:verdana;
}
table.list{
border:1px solid black;
width:100px;
text-align: center;
}
td.open{
background-color:lightgrey;
}
.kop{
text-align:center;
}
</style>
</head>
<body>
<form method='post' action='".$page."'> ";
// koffer openen
$db_user = "root"; // Gebruiker voor MySQL
$db_pass = ""; $ db_host// Password for MySQL
= "localhost"; // Host voor MySQL; standaard localhost
$db_db ="game"; // Database
mysql_connect($db_host,$db_user,$db_pass) or die(mysql_error());
mysql_select_db($db_db) or die(mysql_error());
//kleine extra's
function injection($value) {
if (get_magic_quotes_gpc()) {
$value = stripslashes($value);
}
if(version_compare(phpversion(),"4.3.0") == "-1") {
return mysql_escape_string($value);
} else {
return mysql_real_escape_string($value);
}
}
function errormsg($msg){
$page = $_SERVER['PHP_SELF'];
echo "<center><fieldset><legend><b>Error</b></legend>".$msg."<br><br><a href="">Klik hier om terug te gaan</a></fieldset></center>";
exit;
}
$sql = "SELECT * FROM ".$tablename." WHERE name='".$username."' AND done='false' AND sessieid='".session_id()."'";
if(!$query = mysql_query($sql)){
trigger_errormsg(errormsg ( 'Something went wrong with reading the game that might be in progress.' ));
}
$ max = count ( $ numbers );
if ( mysql_fetch_row ( $ query ) == 0 ) {
// if there is no game in progress, it must be checked if there is another game or needs to be created.
$ sql = "SELECT * FROM" . $ tablename . "WHERE name = '" . $ username . "'AND done =' false '" ;
if (! $ sql )) {
trigger_errormsg ( errormsg ( 'Something went wrong!' ));
}
if ( mysql_fetch_row ( $ query )! = 0 ) {
// When there is a game where you went out in the middle
echo "<div align = center> <b> You did not complete your previous game! </ b> <br > <br> " ;
if ( $ destroy == true ) {
$ sql = "DELETE FROM" . $ tablename . "WHERE name = '" . $ username . ""
}else{
$sql = "UPDATE ".$tablename." SET done='true' WHERE name='".$username."' AND done='false'";
}
if(mysql_query($sql)){
echo"<input type='submit' name='start' value='Opnieuw' />";
}else{
errormsg("Er is een probleem met het maken van een nieuwe game.");
}
echo"</div></form></body></html>";
exit;
}else{
if(isset($_POST['play'])){
//wanneer er geen spel is.
shuffle($getallen);
$randomsuits = '';
foreach($getallen as $element) {
$randomsuits .= $element.' ';
}
$sql = "INSERT INTO ".$tablename." (name,random,sessieid)VALUES('".$username."','".$randomsuits."','".session_id()."')";
if(mysql_query($sql)){
header('location: '.$page.'');
}else{
errormsg("Er is iets fout gegaan");
}
}
echo"<form method='post' action='".$page."'><div align=center><input type='submit' name='play' value='speel Deal or no Deal'></form></div>";
exit;
}
}
else
{
//wanneer er een spel is word alles voorbereid.
$sqlgame = "SELECT * FROM ".$tablename." WHERE name='".$username."' AND done='false' AND sessieid='".session_id()."'";
if(!$query = mysql_query($sqlgame)){
trigger_errormsg(errormsg('Er is iets fout gegaan.'));
}
$fetch = mysql_fetch_object($query);
}
// de koffer die moet worden opengemaakt
if(isset($_POST['koffer'])){
$id = injection($_POST['koffer']);
if(is_numeric($id) AND $id <= $max AND $id >= '0' AND $fetch->casename != $id){
$boem = explode(' ', $ fetch -> random );
$ boemchosen = explode ( '' , $ fetch -> chosen );
$ id -;
if ( array_search ( $ boem [ $ id ], $ boemchosen )! = NULL ) {
// means that a suitcase has already been opened or does not exist.
header ( 'location:' . $ page . '' );
exit ;
} else {
$ chosen = $ fetch->chosen.' '.$boem[$id];
$sql = "UPDATE ".$tablename." SET chosen='".$chosen."',turn=turn+1 WHERE name='".$username."' AND done='false' ";
if(mysql_query($sql)){
$koffernummer = $id+1;
$euro = "€".number_format($boem[$id], 0, '.', '.');
echo "<div align='center'>In koffer ".$koffernummer." zat het bedrag van ".$euro."!</div><br>";
}
else
{
errormsg("Er is iets fout gegaan!");
}
}
}else{
header('location: '.$page.'');
}
}
// When the user agrees with the deal of the bank
elseif ( isset ( $ _POST [ 'deal' ]))
{
if ( in_array ( $ fetch -> turn , $ bid ) OR $ fetch -> turn > = end ( $ bid )) {
$ euro = "& euro;" . number_format ( $ fetch -> lastoffer , 0 , '.' , '.' );
if ($destroy == true){
$sql = "DELETE FROM ".$tablename." WHERE name='".$username."'";
}else{
$sql = "UPDATE ".$tablename." SET done='true' WHERE name='".$username."'";
}
if(mysql_query($sql)){
$boem = explode(' ',$fetch->random);
$ euro2 = "& euro;" . number_format ( $ boom [ $ fetch -> casename ], 0 , '.' , '.' );
echo "<div class = text align = center> <b> You have the suitcase" . $ fetch -> casename . "successfully sold to the bank for:" . $ euro . "</ b> <br>
<b> If you did not agree, your suitcase was:" . $ euro2 . "worth! </ b>
<br>
<input type = 'submit' name = 'start' value = 'Play again!'>
</ div> " ;
exit ;
} else { errormsg ( " Something went wrong! " );}
} else { header ( ' location: ' . $ page . ' );}
// suitcase choose
}
// the case chosen by the user.
elseif ( isset ( $ _ POST [ 'new case']))
{
$ id = injection ( $ _ POST [ 'box new']);
if(is_numeric($id) AND $id <= $max AND !ereg(' ',$id)){
if(empty($fetch->casename)){
$sql = "UPDATE ".$tablename." SET casename='".$id."' WHERE name='".$username."'";
if(mysql_query($sql))
{
echo "<center> You have chosen number" . $ id . "<br>
you are now redirected </ center>
<meta http-equiv = 'refresh' content = '1; url =" . $ page . "'>" ;
exit ;
} else {
errormsg ( "Something went wrong." );
}
} else {
header ( 'location:' . $ page . '' );
errormsg("Ongeldige koffer");
}
}
if(!$fetch->casename){
echo"<center><div class=tekst style='width:50%'><h1 class='kop'>Kies een koffer</h1><br>";
echo"<table width='20%' align='center'>";
for($i=0;$i < $max;$i++){
$b = $i+1;
$links = $i+1;
$rechts = $b+1;
echo"<tr><td> <input type='submit' name='koffernieuw' value='".$links."'> </td><td> <input name=koffernieuw type='submit' value='".$rechts."'> </td></tr>";
$i = $b++;
}
echo"</table></div></center>";
}elseif(!empty($fetch->random) AND !empty($fetch->casename) AND $fetch->done == 'false'){
if(!$query = mysql_query($sqlgame)){
trigger_errormsg(errormsg('Er is iets fout gegaan.'));
}
$fetch = mysql_fetch_object($query);
echo"<center><div class=tekst style='width:50%; text-align:center;'>";
$boem = explode(' ',$fetch->random);
$boemchosen = explode(' ',$fetch->chosen);
$max = count($boem);
$need = $max - count($boemchosen);
$euro = "€".number_format($boem[($fetch->casename-1)], 0, '.', '.');
if($need <= 1){
echo" Je koffer was: ".$euro." waard!<br>
<input type='submit' name='start' value='Opnieuw spelen!'>'";
if($destroy == true){
$sql = "DELETE FROM ".$tablename." WHERE name='".$username."'";
}else{
$sql = "UPDATE ".$tablename." SET done='true' WHERE name='".$username."'";
}
if(!mysql_query($sql)){
errormsg ( "Something went wrong in completing this" . $ tablename . "!" );
}
exit ;
}
echo "<table valign = top align = left>" ;
for ( $ i = 0 ; $ i < $ max ; $ i ++) {
$ b = $ i + 1 ;
$ left = $ i + 1 ;
$ right = $ b + 1 ;
echo"<tr>";
// 1e rij
if($links < $max){
if($links != $fetch->casename){
if(array_search($boem[$i], $boemchosen) != NULL)
{
echo"<td> <input type='button' value='".$links."'> </td>";
}
else
{echo "<td><input type='submit' name='koffer' value='".$links."'> </td>";}
}
else
{echo"<td><input value='Mijn koffer: ".$links."' type='button'></td>";}
}
// 2e rij
if($rechts < $max){
if($rechts != $fetch->casename){
if(array_search($boem[$b], $boemchosen) != NULL)
{
echo"<td> <input type='button' value='".$rechts."'> </td>";
}else
{echo "<td> <input type='submit' name='koffer' value='".$rechts."'> </td>";}
}else{echo"<td><input value='Mijn koffer: ".$rechts."' type='button' ></td>";}
echo"</tr>";
$i =
"€".number_format($getallen[$i], 0, '.', '.');
if(array_search($getallen[$i], $boemchosen) != NULL)
{
echo"<tr><td class='open'><s>".$getal."</s></td></tr>";
}
else
{
echo"<tr><td>".$getal."</td></tr>";
}
}
echo"
</table></td></tr></table>";
if(in_array($fetch->turn,$bod) OR $fetch->turn >= end($bod)){
$koffers = count($boem)-count($boemchosen);
$open = array_sum($boemchosen);
$totaal = array_sum($getallen);
$ans = floor(($totaal-$open)/($koffers));
if($fetch->lastoffer != $ans){
$sql = "UPDATE ".$tablename." SET lastoffer='".$ans."' WHERE name='".$username."'";
if(!mysql_query($sql)){
errormsg("Er is iets fout gegaan");
exit;
}
}
if($fetch->turn < end($bod) AND array_search($fetch->turn, $bod)){
$key = array_search($fetch->turn, $bod);
$new = $key+1;
$is = array_search($bod[$new], $bod);
$num = $bod[$is]-$ bid [ $ key ];
} else {
$ num = 1 ;
}
echo "<br> <h3> The bank offers: & euro;" . number_format ( $ ans , 0 , '.' , '.' ). "for your suitcase </ h3>
If you go further you still have" . $ num . "open suitcase! <br>
<form method = post> <input type = 'submit' name = 'deal' value = 'DEAL'> </ form>" ;
echo"</form></body></html>";
?>
and then I have a second segment
CREATE TABLE `game` (
`id` int(4) NOT NULL AUTO_INCREMENT,
`name` varchar(20) NOT NULL,
`lastoffer` varchar(20) NOT NULL,
`done` varchar(10) NOT NULL DEFAULT 'false',
`random` longtext NOT NULL,
`turn` int(4) NOT NULL DEFAULT '0',
`casename` varchar(30) NOT NULL,
`chosen` longtext NOT NULL,
`sessieid` longtext NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
Explanation / Answer
I have modified the variables declaration... Please check once if you still get any error or any thing, please give me comment...
<? php
if (! session_start ()) {
echo "Sessions are required!" ;
exit ;
}
// name of this file
$page = $_SERVER ['PHP_SELF'];
// Name for person this can be linked through a session or via a cookie
$username = $_SERVER ['REMOTE_ADDR'];
// The numbers that participate can be made as much as possible with a minimum of 2 numbers
$numbers = array ( 1 , 5 , 10 , 20 ,50 , 100 , 200 , 300 , 400 , 500, 1000 , 5000 , 10000 , 20000 , 30000 , 40000 , 50000 , 100000 , 125000 , 250000 );
// At which turns the 'bank' has to make an offer, after the last number goes a bid also this can be infinitely
$bid = array (6 , 9);
// name of the table in which the game is located
$tablename = 'game' ;
// Title file
$title = 'Deal or no Deal' ;
// Do you want everything to be kept, or everything will be removed afterwards.
// TRUE = YES and FALSE = NO
$destroy = true ;
// the code
echo "
<! DOCTYPE HTML PUBLIC " - // W3C // DTD HTML 4.01 Transitional // EN "
" http: //www.w3.org/TR/html4/loose.dtd ">
<html>
<head>
<title> " . $title . "</ title>
<style type = 'text/css'>
background-color:white;
border:1px solid black;
}
div{
font-family:verdana;
}
table.list{
border:1px solid black;
width:100px;
text-align: center;
}
td.open{
background-color:lightgrey;
}
.kop{
text-align:center;
}
</style>
</head>
<body>
<form method='post' action='".$page."'> ";
// koffer openen
$db_user = "root"; // Gebruiker voor MySQL
$db_pass = "";// Password for MySQL
$db_host = "localhost"; // Host voor MySQL; standaard localhost
$db_db = "game"; // Database
mysql_connect($db_host,$db_user,$db_pass) or die(mysql_error());
mysql_select_db($db_db) or die(mysql_error());
//kleine extra's
function injection($value) {
if (get_magic_quotes_gpc()) {
$value = stripslashes($value);
}
if(version_compare(phpversion(),"4.3.0") == "-1") {
return mysql_escape_string($value);
} else {
return mysql_real_escape_string($value);
}
}
function errormsg($msg){
$page = $_SERVER['PHP_SELF'];
echo "<center><fieldset><legend><b>Error</b></legend>".$msg."<br><br><a href="">Klik hier om terug te gaan</a></fieldset></center>";
exit;
}
$sql = "SELECT * FROM ".$tablename." WHERE name='".$username."' AND done='false' AND sessieid='".session_id()."'";
if(!$query = mysql_query($sql)){
trigger_errormsg(errormsg ( 'Something went wrong with reading the game that might be in progress.' ));
}
$max = count($numbers);
if ( mysql_fetch_row($query) == 0 ) {
// if there is no game in progress, it must be checked if there is another game or needs to be created.
$sql = "SELECT * FROM" . $tablename . "WHERE name = '" . $username . "'AND done =' false '" ;
if (!$sql )) {
trigger_errormsg (errormsg('Something went wrong!'));
}
if (mysql_fetch_row ($query)!=0 ) {
// When there is a game where you went out in the middle
echo "<div align = center> <b> You did not complete your previous game! </ b> <br > <br> " ;
if ( $destroy == true ) {
$sql = "DELETE FROM" . $tablename . "WHERE name = '" . $username . ""
}else{
$sql = "UPDATE ".$tablename." SET done='true' WHERE name='".$username."' AND done='false'";
}
if(mysql_query($sql)){
echo"<input type='submit' name='start' value='Opnieuw' />";
}else{
errormsg("Er is een probleem met het maken van een nieuwe game.");
}
echo"</div></form></body></html>";
exit;
}else{
if(isset($_POST['play'])){
//wanneer er geen spel is.
shuffle($getallen);
$randomsuits = '';
foreach($getallen as $element) {
$randomsuits .= $element.' ';
}
$sql = "INSERT INTO ".$tablename." (name,random,sessieid) VALUES('".$username."','".$randomsuits."','".session_id()."')";
if(mysql_query($sql)){
header('location: '.$page.'');
}else{
errormsg("Er is iets fout gegaan");
}
}
echo"<form method='post' action='".$page."'><div align=center><input type='submit' name='play' value='speel Deal or no Deal'></form></div>";
exit;
}
}
else
{
//wanneer er een spel is word alles voorbereid.
$sqlgame = "SELECT * FROM ".$tablename." WHERE name='".$username."' AND done='false' AND sessieid='".session_id()."'";
if(!$query = mysql_query($sqlgame)){
trigger_errormsg(errormsg('Er is iets fout gegaan.'));
}
$fetch = mysql_fetch_object($query);
}
// de koffer die moet worden opengemaakt
if(isset($_POST['koffer'])){
$id = injection($_POST['koffer']);
if(is_numeric($id) AND $id <= $max AND $id >= '0' AND $fetch->casename != $id){
$boem = explode(' ', $fetch -> random );
$boemchosen = explode ( '' , $fetch -> chosen );
$id -;
if ( array_search ( $boem [ $id ], $boemchosen )! = NULL ) {
// means that a suitcase has already been opened or does not exist.
header ( 'location:' . $page . '' );
exit ;
} else {
$chosen = $fetch->chosen.' '.$boem[$id];
$sql = "UPDATE ".$tablename." SET chosen='".$chosen."',turn=turn+1 WHERE name='".$username."' AND done='false' ";
if(mysql_query($sql)){
$koffernummer = $id+1;
$euro = "€".number_format($boem[$id], 0, '.', '.');
echo "<div align='center'>In koffer ".$koffernummer." zat het bedrag van ".$euro."!</div><br>";
}
else
{
errormsg("Er is iets fout gegaan!");
}
}
}else{
header('location: '.$page.'');
}
}
// When the user agrees with the deal of the bank
elseif (isset($_POST [ 'deal' ]))
{
if(in_array($fetch->turn, $bid ) OR $fetch->turn > = end($bid)) {
$euro = "& euro;" . number_format($fetch->lastoffer , 0 , '.' , '.' );
if ($destroy == true){
$sql = "DELETE FROM ".$tablename." WHERE name='".$username."'";
}else{
$sql = "UPDATE ".$tablename." SET done='true' WHERE name='".$username."'";
}
if(mysql_query($sql)){
$boem = explode(' ',$fetch->random);
$euro2 = "& euro;" . number_format ( $boom [$fetch->casename ], 0 , '.' , '.' );
echo "<div class = text align = center> <b> You have the suitcase" . $fetch->casename . "successfully sold to the bank for:" . $euro . "</ b> <br>
<b> If you did not agree, your suitcase was:" . $euro2 . "worth! </ b>
<br>
<input type = 'submit' name = 'start' value = 'Play again!'>
</ div> " ;
exit ;
} else { errormsg ( " Something went wrong! " );}
} else { header ( ' location: ' . $page );}
// suitcase choose
}
// the case chosen by the user.
elseif ( isset ( $_POST['new case']))
{
$id = injection ( $_POST [ 'box new']);
if(is_numeric($id) AND $id <= $max AND !ereg(' ',$id)){
if(empty($fetch->casename)){
$sql = "UPDATE ".$tablename." SET casename='".$id."' WHERE name='".$username."'";
if(mysql_query($sql))
{
echo "<center> You have chosen number" . $id . "<br>
you are now redirected </ center>
<meta http-equiv = 'refresh' content = '1; url =" . $page . "'>" ;
exit ;
} else {
errormsg ( "Something went wrong." );
}
} else {
header ( 'location:' . $page . '' );
errormsg("Ongeldige koffer");
}
}
if(!$fetch->casename){
echo"<center><div class=tekst><h1 class='kop'>Kies een koffer</h1><br>";
echo"<table width='20%' align='center'>";
for($i=0;$i < $max;$i++){
$b = $i+1;
$links = $i+1;
$rechts = $b+1;
echo"<tr><td> <input type='submit' name='koffernieuw' value='".$links."'> </td><td> <input name=koffernieuw type='submit' value='".$rechts."'> </td></tr>";
$i = $b++;
}
echo"</table></div></center>";
}elseif(!empty($fetch->random) AND !empty($fetch->casename) AND $fetch->done == 'false'){
if(!$query = mysql_query($sqlgame)){
trigger_errormsg(errormsg('Er is iets fout gegaan.'));
}
$fetch = mysql_fetch_object($query);
echo"<center><div class=tekst>";
$boem = explode(' ',$fetch->random);
$boemchosen = explode(' ',$fetch->chosen);
$max = count($boem);
$need = $max - count($boemchosen);
$euro = "€".number_format($boem[($fetch->casename-1)], 0, '.', '.');
if($need <= 1){
echo" Je koffer was: ".$euro." waard!<br>
<input type='submit' name='start' value='Opnieuw spelen!'>'";
if($destroy == true){
$sql = "DELETE FROM ".$tablename." WHERE name='".$username."'";
}else{
$sql = "UPDATE ".$tablename." SET done='true' WHERE name='".$username."'";
}
if(!mysql_query($sql)){
errormsg ( "Something went wrong in completing this" . $tablename . "!" );
}
exit ;
}
echo "<table valign = top align = left>" ;
for ( $i = 0 ; $i < $max ; $i++) {
$b = $i + 1 ;
$left = $i + 1 ;
$right = $b + 1 ;
echo"<tr>";
// 1e rij
if($links < $max){
if($links != $fetch->casename){
if(array_search($boem[$i], $boemchosen) != NULL)
{
echo"<td> <input type='button' value='".$links."'> </td>";
}
else
{echo "<td><input type='submit' name='koffer' value='".$links."'> </td>";}
}
else
{echo"<td><input value='Mijn koffer: ".$links."' type='button'></td>";}
}
// 2e rij
if($rechts < $max){
if($rechts != $fetch->casename){
if(array_search($boem[$b], $boemchosen) != NULL)
{
echo"<td> <input type='button' value='".$rechts."'> </td>";
}else
{echo "<td> <input type='submit' name='koffer' value='".$rechts."'> </td>";}
}else{echo"<td><input value='Mijn koffer: ".$rechts."' type='button' ></td>";}
echo"</tr>";
$i = "€".number_format($getallen[$i], 0, '.', '.');
if(array_search($getallen[$i], $boemchosen) != NULL)
{
echo"<tr><td class='open'><s>".$getal."</s></td></tr>";
}
else
{
echo"<tr><td>".$getal."</td></tr>";
}
}
echo"</table></td></tr></table>";
if(in_array($fetch->turn,$bod) OR $fetch->turn >= end($bod)){
$koffers = count($boem)-count($boemchosen);
$open = array_sum($boemchosen);
$totaal = array_sum($getallen);
$ans = floor(($totaal-$open)/($koffers));
if($fetch->lastoffer != $ans){
$sql = "UPDATE ".$tablename." SET lastoffer='".$ans."' WHERE name='".$username."'";
if(!mysql_query($sql)){
errormsg("Er is iets fout gegaan");
exit;
}
}
if($fetch->turn < end($bod) AND array_search($fetch->turn, $bod)){
$key = array_search($fetch->turn, $bod);
$new = $key+1;
$is = array_search($bod[$new], $bod);
$num = $bod[$is]-$bid [ $key ];
} else {
$num = 1 ;
}
echo "<br> <h3> The bank offers: & euro;" . number_format ( $ans , 0 , '.' , '.' ). "for your suitcase </ h3>
If you go further you still have" . $num . "open suitcase! <br>
<form method = post> <input type = 'submit' name = 'deal' value = 'DEAL'> </ form>" ;
echo"</form></body></html>";
?>
and then I have a second segment
CREATE TABLE `game` (
`id` int(4) NOT NULL AUTO_INCREMENT,
`name` varchar(20) NOT NULL,
`lastoffer` varchar(20) NOT NULL,
`done` varchar(10) NOT NULL DEFAULT 'false',
`random` longtext NOT NULL,
`turn` int(4) NOT NULL DEFAULT '0',
`casename` varchar(30) NOT NULL,
`chosen` longtext NOT NULL,
`sessieid` longtext NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.