T1704011110

This commit is contained in:
Leander
2017-04-01 11:10:06 +02:00
parent 554c8f1331
commit 8c193673ab
5 changed files with 70 additions and 18 deletions

View File

@@ -13,8 +13,15 @@
$uid = $_GET['uid'];
$length = $_GET['length'];
$length = (($length === '0') || ($length && gettype(+$length) == 'integer')) ? +$_GET['length'] : 10;
$database = new Database();
$questions_count = $database->query('SELECT COUNT(*) FROM "Questions"')['data'][0]['count'];
$db = new Database();
$questions_count = $db->query('SELECT COUNT(*) FROM "Questions"')['data'][0]['count'];
// Return $count random, non repeating numbers in range from $min to $max.
function random_numbers($min, $max, $count){
$numbers = range($min, $max);
shuffle($numbers);
return array_slice($numbers, 0, $count-1);
}
if($length == 0) {
$error = 12101;
@@ -22,19 +29,20 @@
$error = 12102;
$values = array($questions_count);
} else {
if($database->query('SELECT EXISTS (SELECT 1 FROM "Games" WHERE "ID" = $1)', array($uid)) == 't') {
$database->query('DELETE FROM "Games" WHERE "ID" = $1', array($uid));
// Delete existing game for user.
if($db->query('SELECT EXISTS (SELECT 1 FROM "Games" WHERE "ID" = $1)', array($uid)) == 't') {
$db->query('DELETE FROM "Games" WHERE "ID" = $1', array($uid));
}
$database->query('INSERT INTO "Games" ("ID") VALUES ($1)', array($uid));
for($i = 0; $i < $length; $i++) {
do {
$offset = rand(0, $questions_count-1);
$question = $database->query('SELECT "ID" FROM "Questions" OFFSET $1 LIMIT 1', array($offset));
$database->query('INSERT INTO "GamesQuestions" ("Games_ID", "Questions_ID") VALUES ($1, $2)',
array($uid, $question));
} while(pg_last_error != '');
// Create new game for user.
$db->query('INSERT INTO "Games" ("ID") VALUES ($1)', array($uid));
// Find questions for new game and insert into table.
$questions = random_numbers(0, $questions_count-1, $length);
foreach($questions as $question) {
$q = $db->query('SELECT "ID" FROM "Questions" OFFSET $1 LIMIT 1', array($question));
$db->query('INSERT INTO "GamesQuestions" ("Games_ID", "Questions_ID") VALUES ($1, $2)', array($uid, $q));
}
}
$response = Database::create_response($data, $error, $values);
print $response;
?>