diff --git a/src/web/php/db/typing_exam_collection.php b/src/web/php/db/typing_exam_collection.php index f240cce..2bfec29 100644 --- a/src/web/php/db/typing_exam_collection.php +++ b/src/web/php/db/typing_exam_collection.php @@ -90,7 +90,9 @@ class TypingExamCollection extends DBMethodContainer $query = " SELECT TypingExamRecordID, Record FROM typing_exam_record - WHERE MaestroID = ? AND PlayerID = ? AND WritingID = ? AND DATE(RecordDateTime) = DATE(NOW()) AND HOUR(RecordDateTime) = HOUR(NOW())"; + WHERE MaestroID = ? AND PlayerID = ? AND WritingID = ? + AND RecordDateTime >= CAST(DATE_FORMAT(NOW(), '%Y-%m-%d %H:00:00') AS DATETIME) + AND RecordDateTime < CAST(DATE_FORMAT(NOW(), '%Y-%m-%d %H:00:00') AS DATETIME) + INTERVAL 1 HOUR"; $stmt = $this->mysqli->prepare($query); $stmt->bind_param("iii", $maestroID, $playerID, $writingID); $stmt->execute(); @@ -165,12 +167,14 @@ class TypingExamCollection extends DBMethodContainer $query = " SELECT DATE(RecordDateTime), MAX(Record) FROM typing_exam_record - WHERE MaestroID = ? AND PlayerID = ? AND DATE(RecordDateTime) <= ? AND WritingID = ? + WHERE MaestroID = ? AND PlayerID = ? AND WritingID = ? + AND RecordDateTime < DATE(?) + INTERVAL 1 DAY + AND RecordDateTime >= DATE(?) - INTERVAL 7 DAY GROUP BY DATE(RecordDateTime) ORDER BY RecordDateTime DESC LIMIT 7"; $stmt = $this->mysqli->prepare($query); - $stmt->bind_param('iisi', $maestroID, $playerID, $date, $writingID); + $stmt->bind_param('iisss', $maestroID, $playerID, $writingID, $date, $date); $stmt->execute(); $stmt->bind_result($date, $highestRecord); @@ -190,12 +194,15 @@ class TypingExamCollection extends DBMethodContainer $query = " SELECT TER.playerID As PlayerID, U.Name AS Name, MAX(TER.Record) AS HighScore FROM typing_exam_record TER, player U - WHERE TER.MaestroID = ? AND TER.playerID = U.playerID AND YEAR(TER.RecordDateTime) = YEAR(?) AND MONTH(TER.RecordDateTime) = MONTH(?) AND DAYOFMONTH(TER.RecordDateTime) = DAYOFMONTH(?) AND HOUR(TER.RecordDateTime) = HOUR(?) AND TER.WritingID = ? AND TER.Record >= 0 + WHERE TER.MaestroID = ? AND TER.WritingID = ? + AND TER.RecordDateTime >= DATE(?) + INTERVAL HOUR(?) HOUR + AND TER.RecordDateTime < DATE(?) + INTERVAL (HOUR(?) + 1) HOUR + AND TER.PlayerID = U.playerID AND TER.Record >= 0 GROUP BY TER.playerID ORDER BY MAX(TER.Record) DESC; "; $stmt = $this->mysqli->prepare($query); - $stmt->bind_param('issssi', $maestroID, $date, $date, $date, $time, $writingID); + $stmt->bind_param('iissss', $maestroID, $writingID, $date, $time, $date, $time); $stmt->execute(); $stmt->bind_result($playerID, $name, $highScore); @@ -215,12 +222,15 @@ class TypingExamCollection extends DBMethodContainer $query = " SELECT TER.playerID As PlayerID, U.Name AS Name, MAX(TER.Record) AS HighScore FROM typing_exam_record TER, player U - WHERE TER.MaestroID = ? AND TER.playerID = U.playerID AND YEAR(TER.RecordDateTime) = YEAR(?) AND MONTH(TER.RecordDateTime) = MONTH(?) AND DAYOFMONTH(TER.RecordDateTime) = DAYOFMONTH(?) AND TER.WritingID = ? AND TER.Record >= 0 + WHERE TER.MaestroID = ? AND TER.WritingID = ? + AND TER.RecordDateTime >= DATE(?) + AND TER.RecordDateTime < DATE(?) + INTERVAL 1 DAY + AND TER.PlayerID = U.playerID AND TER.Record >= 0 GROUP BY TER.playerID ORDER BY MAX(TER.Record) DESC; "; $stmt = $this->mysqli->prepare($query); - $stmt->bind_param('isssi', $maestroID, $date, $date, $date, $writingID); + $stmt->bind_param('iiss', $maestroID, $writingID, $date, $date); $stmt->execute(); $stmt->bind_result($playerID, $name, $highScore); @@ -240,12 +250,15 @@ class TypingExamCollection extends DBMethodContainer $query = " SELECT TER.playerID As PlayerID, U.Name AS Name, MAX(TER.Record) AS HighScore FROM typing_exam_record TER, player U - WHERE TER.MaestroID = ? AND TER.playerID = U.playerID AND YEAR(TER.RecordDateTime) = YEAR(?) AND MONTH(TER.RecordDateTime) = MONTH(?) AND TER.WritingID = ? AND TER.Record >= 0 + WHERE TER.MaestroID = ? AND TER.WritingID = ? + AND TER.RecordDateTime >= CAST(DATE_FORMAT(?, '%Y-%m-01') AS DATE) + AND TER.RecordDateTime < CAST(DATE_FORMAT(?, '%Y-%m-01') AS DATE) + INTERVAL 1 MONTH + AND TER.PlayerID = U.playerID AND TER.Record >= 0 GROUP BY TER.playerID ORDER BY MAX(TER.Record) DESC; "; $stmt = $this->mysqli->prepare($query); - $stmt->bind_param('issi', $maestroID, $date, $date, $writingID); + $stmt->bind_param('iiss', $maestroID, $writingID, $date, $date); $stmt->execute(); $stmt->bind_result($playerID, $name, $highScore); @@ -265,12 +278,15 @@ class TypingExamCollection extends DBMethodContainer $query = " SELECT TER.playerID As PlayerID, U.Name AS Name, MAX(TER.Record) AS HighScore FROM typing_exam_record TER, player U - WHERE TER.MaestroID = ? AND TER.playerID = U.playerID AND YEAR(TER.RecordDateTime) = YEAR(?) AND MONTH(TER.RecordDateTime) = MONTH(?) AND DAYOFMONTH(TER.RecordDateTime) = DAYOFMONTH(?) AND HOUR(TER.RecordDateTime) = HOUR(?) AND TER.WritingID = ? AND TER.Record < 0 + WHERE TER.MaestroID = ? AND TER.WritingID = ? + AND TER.RecordDateTime >= DATE(?) + INTERVAL HOUR(?) HOUR + AND TER.RecordDateTime < DATE(?) + INTERVAL (HOUR(?) + 1) HOUR + AND TER.PlayerID = U.playerID AND TER.Record < 0 GROUP BY TER.playerID ORDER BY MAX(TER.Record) ASC; "; $stmt = $this->mysqli->prepare($query); - $stmt->bind_param('issssi', $maestroID, $date, $date, $date, $time, $writingID); + $stmt->bind_param('iissss', $maestroID, $writingID, $date, $time, $date, $time); $stmt->execute(); $stmt->bind_result($playerID, $name, $highScore); @@ -290,12 +306,15 @@ class TypingExamCollection extends DBMethodContainer $query = " SELECT TER.playerID As PlayerID, U.Name AS Name, MAX(TER.Record) AS HighScore FROM typing_exam_record TER, player U - WHERE TER.MaestroID = ? AND TER.playerID = U.playerID AND YEAR(TER.RecordDateTime) = YEAR(?) AND MONTH(TER.RecordDateTime) = MONTH(?) AND DAYOFMONTH(TER.RecordDateTime) = DAYOFMONTH(?) AND TER.WritingID = ? AND TER.Record < 0 + WHERE TER.MaestroID = ? AND TER.WritingID = ? + AND TER.RecordDateTime >= DATE(?) + AND TER.RecordDateTime < DATE(?) + INTERVAL 1 DAY + AND TER.PlayerID = U.playerID AND TER.Record < 0 GROUP BY TER.playerID ORDER BY MAX(TER.Record) ASC; "; $stmt = $this->mysqli->prepare($query); - $stmt->bind_param('isssi', $maestroID, $date, $date, $date, $writingID); + $stmt->bind_param('iiss', $maestroID, $writingID, $date, $date); $stmt->execute(); $stmt->bind_result($playerID, $name, $highScore); @@ -315,12 +334,15 @@ class TypingExamCollection extends DBMethodContainer $query = " SELECT TER.playerID As PlayerID, U.Name AS Name, MAX(TER.Record) AS HighScore FROM typing_exam_record TER, player U - WHERE TER.MaestroID = ? AND TER.playerID = U.playerID AND YEAR(TER.RecordDateTime) = YEAR(?) AND MONTH(TER.RecordDateTime) = MONTH(?) AND TER.WritingID = ? AND TER.Record < 0 + WHERE TER.MaestroID = ? AND TER.WritingID = ? + AND TER.RecordDateTime >= CAST(DATE_FORMAT(?, '%Y-%m-01') AS DATE) + AND TER.RecordDateTime < CAST(DATE_FORMAT(?, '%Y-%m-01') AS DATE) + INTERVAL 1 MONTH + AND TER.PlayerID = U.playerID AND TER.Record < 0 GROUP BY TER.playerID ORDER BY MAX(TER.Record) ASC; "; $stmt = $this->mysqli->prepare($query); - $stmt->bind_param('issi', $maestroID, $date, $date, $writingID); + $stmt->bind_param('iiss', $maestroID, $writingID, $date, $date); $stmt->execute(); $stmt->bind_result($playerID, $name, $highScore); diff --git a/src/web/server/record/app_ranking.php b/src/web/server/record/app_ranking.php index b2857b6..ab6a4d1 100644 --- a/src/web/server/record/app_ranking.php +++ b/src/web/server/record/app_ranking.php @@ -25,7 +25,10 @@ function get_ranking_hour($maestroID, $appID) { $query = " FROM best_record BR, player P - WHERE BR.PlayerID = P.PlayerID AND DATE(BR.RecordDateTime) = DATE(NOW()) AND HOUR(BR.RecordDateTime) = HOUR(NOW()) AND BR.MaestroID = ? AND BR.AppID = ? + WHERE BR.MaestroID = ? AND BR.AppID = ? + AND BR.RecordDateTime >= CAST(DATE_FORMAT(NOW(), '%Y-%m-%d %H:00:00') AS DATETIME) + AND BR.RecordDateTime < CAST(DATE_FORMAT(NOW(), '%Y-%m-%d %H:00:00') AS DATETIME) + INTERVAL 1 HOUR + AND BR.PlayerID = P.PlayerID GROUP BY BR.PlayerID "; if(is_highest_record_prefer_app($appID)) { @@ -55,7 +58,10 @@ function get_ranking_day($maestroID, $appID) { $query = " FROM best_record BR, player P - WHERE BR.PlayerID = P.PlayerID AND DATE(BR.RecordDateTime) = DATE(NOW()) AND BR.MaestroID = ? AND BR.AppID = ? + WHERE BR.MaestroID = ? AND BR.AppID = ? + AND BR.RecordDateTime >= CURDATE() + AND BR.RecordDateTime < CURDATE() + INTERVAL 1 DAY + AND BR.PlayerID = P.PlayerID GROUP BY BR.PlayerID "; if(is_highest_record_prefer_app($appID)) { @@ -85,7 +91,10 @@ function get_ranking_month($maestroID, $appID) { $query = " FROM best_record BR, player P - WHERE BR.PlayerID = P.PlayerID AND MONTH(BR.RecordDateTime) = MONTH(NOW()) AND BR.MaestroID = ? AND BR.AppID = ? + WHERE BR.MaestroID = ? AND BR.AppID = ? + AND BR.RecordDateTime >= CAST(DATE_FORMAT(CURDATE(), '%Y-%m-01') AS DATE) + AND BR.RecordDateTime < CAST(DATE_FORMAT(CURDATE(), '%Y-%m-01') AS DATE) + INTERVAL 1 MONTH + AND BR.PlayerID = P.PlayerID GROUP BY BR.PlayerID "; if(is_highest_record_prefer_app($appID)) { diff --git a/src/web/server/record/history_record.php b/src/web/server/record/history_record.php index 651ad58..7474ecc 100644 --- a/src/web/server/record/history_record.php +++ b/src/web/server/record/history_record.php @@ -26,8 +26,11 @@ function get_history_record($maestro_id, $app_id, $player_id, $date) { $query = " FROM best_record BR - INNER JOIN app AS AA - ON BR.MaestroID = ? AND BR.PlayerID = ? AND DATE(BR.RecordDateTime) <= ? AND BR.AppID = ".$app_id." AND BR.AppID = AA.AppID + INNER JOIN app AS AA + ON BR.AppID = AA.AppID + WHERE BR.MaestroID = ? AND BR.AppID = ? AND BR.PlayerID = ? + AND BR.RecordDateTime < DATE(?) + INTERVAL 1 DAY + AND BR.RecordDateTime >= DATE(?) - INTERVAL 7 DAY GROUP BY DATE(BR.RecordDateTime) ORDER BY DATE(BR.RecordDateTime) DESC LIMIT 7 @@ -39,8 +42,7 @@ function get_history_record($maestro_id, $app_id, $player_id, $date) { $query = "SELECT DATE(BR.RecordDateTime) AS Date, MIN(BR.BestRecord) AS HighScore, AA.AppName AS AppName".$query; } $stmt = $db_conn->prepare($query); - // $stmt->bind_param('iisi', $maestro_id, $player_id, $date, $app_id); - $stmt->bind_param('iis', $maestro_id, $player_id, $date); + $stmt->bind_param('iisss', $maestro_id, $app_id, $player_id, $date, $date); $stmt->execute(); $stmt->bind_result($date, $score, $app_name); diff --git a/src/web/server/record/ranking_record_day.php b/src/web/server/record/ranking_record_day.php index cc92cdd..3741b32 100644 --- a/src/web/server/record/ranking_record_day.php +++ b/src/web/server/record/ranking_record_day.php @@ -26,7 +26,10 @@ function get_ranking_record_day($maestro_id, $date, $app_id) { $query = " FROM best_record BR, player U - WHERE BR.MaestroID = ? AND BR.playerID = U.playerID AND YEAR(BR.RecordDateTime) = YEAR(?) AND MONTH(BR.RecordDateTime) = MONTH(?) AND DAYOFMONTH(BR.RecordDateTime) = DAYOFMONTH(?) AND AppID = ? + WHERE BR.MaestroID = ? AND BR.AppID = ? + AND BR.RecordDateTime >= DATE(?) + AND BR.RecordDateTime < DATE(?) + INTERVAL 1 DAY + AND BR.PlayerID = U.playerID GROUP BY BR.playerID "; if(is_highest_record_prefer_app($app_id)) { @@ -37,7 +40,7 @@ function get_ranking_record_day($maestro_id, $date, $app_id) { $query = $query."ORDER BY MIN(BR.BestRecord) ASC;"; } $stmt = $db_conn->prepare($query); - $stmt->bind_param('isssi', $maestro_id, $date, $date, $date, $app_id); + $stmt->bind_param('iiss', $maestro_id, $app_id, $date, $date); $stmt->execute(); $stmt->bind_result($playerID, $name, $high_score); diff --git a/src/web/server/record/ranking_record_hour.php b/src/web/server/record/ranking_record_hour.php index f96beeb..26e3ba8 100644 --- a/src/web/server/record/ranking_record_hour.php +++ b/src/web/server/record/ranking_record_hour.php @@ -26,7 +26,10 @@ function get_ranking_record_hour($maestro_id, $date, $time, $app_id) { $query = " FROM best_record BR, player U - WHERE BR.MaestroID = ? AND BR.playerID = U.playerID AND YEAR(BR.RecordDateTime) = YEAR(?) AND MONTH(BR.RecordDateTime) = MONTH(?) AND DAYOFMONTH(BR.RecordDateTime) = DAYOFMONTH(?) AND HOUR(BR.RecordDateTime) = HOUR(?) AND AppID = ? + WHERE BR.MaestroID = ? AND BR.AppID = ? + AND BR.RecordDateTime >= DATE(?) + INTERVAL HOUR(?) HOUR + AND BR.RecordDateTime < DATE(?) + INTERVAL (HOUR(?) + 1) HOUR + AND BR.PlayerID = U.playerID GROUP BY BR.playerID "; if(is_highest_record_prefer_app($app_id)) { @@ -37,7 +40,7 @@ function get_ranking_record_hour($maestro_id, $date, $time, $app_id) { $query = $query."ORDER BY MIN(BR.BestRecord) ASC;"; } $stmt = $db_conn->prepare($query); - $stmt->bind_param('issssi', $maestro_id, $date, $date, $date, $time, $app_id); + $stmt->bind_param('iissss', $maestro_id, $app_id, $date, $time, $date, $time); $stmt->execute(); $stmt->bind_result($playerID, $name, $high_score); diff --git a/src/web/server/record/ranking_record_month.php b/src/web/server/record/ranking_record_month.php index 5651aa6..6ce1ab3 100644 --- a/src/web/server/record/ranking_record_month.php +++ b/src/web/server/record/ranking_record_month.php @@ -26,7 +26,10 @@ function get_ranking_record_month($maestro_id, $date, $time, $app_id) { $query = " FROM best_record BR, player U - WHERE BR.MaestroID = ? AND BR.playerID = U.playerID AND YEAR(BR.RecordDateTime) = YEAR(?) AND MONTH(BR.RecordDateTime) = MONTH(?) AND AppID = ? + WHERE BR.MaestroID = ? AND BR.AppID = ? + AND BR.RecordDateTime >= CAST(DATE_FORMAT(?, '%Y-%m-01') AS DATE) + AND BR.RecordDateTime < CAST(DATE_FORMAT(?, '%Y-%m-01') AS DATE) + INTERVAL 1 MONTH + AND BR.PlayerID = U.playerID GROUP BY BR.playerID "; if(is_highest_record_prefer_app($app_id)) { @@ -37,7 +40,7 @@ function get_ranking_record_month($maestro_id, $date, $time, $app_id) { $query = $query."ORDER BY MIN(BR.BestRecord) ASC;"; } $stmt = $db_conn->prepare($query); - $stmt->bind_param('issi', $maestro_id, $date, $date, $app_id); + $stmt->bind_param('iiss', $maestro_id, $app_id, $date, $date); $stmt->execute(); $stmt->bind_result($playerID, $name, $high_score); diff --git a/src/web/server/record/update_result_record.php b/src/web/server/record/update_result_record.php index 22140a1..1004217 100644 --- a/src/web/server/record/update_result_record.php +++ b/src/web/server/record/update_result_record.php @@ -64,11 +64,12 @@ function get_best_record($maestro_id, $app_id, $player_id) { $query = " SELECT BestRecordID, BestRecord FROM best_record - WHERE MaestroID = ? AND AppID = ? AND PlayerID = ? AND DATE(RecordDateTime) = DATE(NOW()) - AND HOUR(RecordDateTime) = HOUR(NOW()) + WHERE PlayerID = ? AND AppID = ? AND MaestroID = ? + AND RecordDateTime >= CAST(DATE_FORMAT(NOW(), '%Y-%m-%d %H:00:00') AS DATETIME) + AND RecordDateTime < CAST(DATE_FORMAT(NOW(), '%Y-%m-%d %H:00:00') AS DATETIME) + INTERVAL 1 HOUR "; $stmt = $db_conn->prepare($query); - $stmt->bind_param("iii", $maestro_id, $app_id, $player_id); + $stmt->bind_param("iii", $player_id, $app_id, $maestro_id); $stmt->execute(); $stmt->bind_result($prev_best_record_id, $prev_best_record); $stmt->fetch();