Axel Nordh 5 лет назад
Родитель
Сommit
4d859cce88

+ 4 - 4
Assets/Scripts/Database/Database.cs

@@ -660,9 +660,9 @@ public class Database : MonoBehaviour {
         return (int)lastInsert64;
     }
 
-    public NewQuestionData GetNewQuestion(List<int> userAnsweredQuestions, string userName, string gameMode) {
+    public NewQuestionData GetNewQuestion(List<int> userAnsweredQuestions, KeyValuePair<int, String> user, string gameMode) {
         if (gameMode.Equals("Online")) {
-            return OnlineDatabase.Instance.GetNewQuestion(userAnsweredQuestions, userName);
+            return OnlineDatabase.Instance.GetNewQuestion(userAnsweredQuestions, user.Key);
         }
         int gameId = GameObject.Find("GameManager").GetComponent<GameManagerScript>().GameId;
         Color32 questionCategoryColor = new Color32(0, 0, 20, 20);
@@ -680,7 +680,7 @@ public class Database : MonoBehaviour {
 
             string answeredIds = String.Join(",", userAnsweredQuestions);
 
-            string sql = "SELECT questions.id, question, answer, categoryId as category, name, category.R, category.G, category.B, category.A FROM questions INNER JOIN questionToCategory ON questions.id = questionToCategory.questionId INNER JOIN category on category.id = questionToCategory.categoryId WHERE questions.id NOT IN (" + answeredIds + ") AND questions.id NOT IN (SELECT questionId FROM questionsInGame WHERE gameId = " + gameId + " AND userId = (SELECT id from localUsers WHERE name = '" + userName + "')) ORDER BY RANDOM() limit 1";
+            string sql = "SELECT questions.id, question, answer, categoryId as category, name, category.R, category.G, category.B, category.A FROM questions INNER JOIN questionToCategory ON questions.id = questionToCategory.questionId INNER JOIN category on category.id = questionToCategory.categoryId WHERE questions.id NOT IN (" + answeredIds + ") AND questions.id NOT IN (SELECT questionId FROM questionsInGame WHERE gameId = " + gameId + " AND userId = (SELECT id from localUsers WHERE name = '" + user.Value + "')) ORDER BY RANDOM() limit 1";
             cmd.CommandText = sql;
             IDataReader reader = cmd.ExecuteReader();
 
@@ -705,7 +705,7 @@ public class Database : MonoBehaviour {
             }
             reader.Close();
 
-            string saveSentQuestionSql = "INSERT INTO questionsInGame (gameId, questionId, userId) VALUES (" + gameId + ", " + id + ", (SELECT id FROM localUsers WHERE name = '" + userName + "'))";
+            string saveSentQuestionSql = "INSERT INTO questionsInGame (gameId, questionId, userId) VALUES (" + gameId + ", " + id + ", (SELECT id FROM localUsers WHERE name = '" + user.Value + "'))";
             cmd.CommandText = saveSentQuestionSql;
             cmd.ExecuteNonQuery();
 

+ 4 - 4
Assets/Scripts/Database/OnlineDatabase.cs

@@ -524,10 +524,10 @@ public class OnlineDatabase : MonoBehaviour {
 
     public NewQuestionData newQuestionData;
 
-    public NewQuestionData GetNewQuestion(List<int> userAnsweredQuestions, string userName) {
+    public NewQuestionData GetNewQuestion(List<int> userAnsweredQuestions, int userId) {
         int gameId = GameObject.Find("GameManager").GetComponent<GameManagerScript>().GameId;
 
-        Question q = GetQuestionData(gameId, userAnsweredQuestions);
+        Question q = GetQuestionData(gameId, userId);
 
         Color32 categoryColor = new Color32((byte)q.r, (byte)q.g, (byte)q.b, (byte)q.a);
         //            Color32 questionCategoryColor = new Color32((byte)q.r, (byte)q.g, (byte)q.b, (byte)q.a);
@@ -586,10 +586,10 @@ public class OnlineDatabase : MonoBehaviour {
         return questions;
     }
 
-    private Question GetQuestionData(int gameId, List<int> answeredQuestions) {
+    private Question GetQuestionData(int gameId, int playerId) {
         WWWForm form = new WWWForm();
         form.AddField("gameId", gameId);
-        form.AddField("answeredQuestions", String.Join(",", answeredQuestions));
+        form.AddField("playerId", playerId);
 
         string response = CallOnlineDatabaseWithResponse("Question.php", form);
         

+ 1 - 1
Assets/Scripts/MainGame/NewQuestionsPanel.cs

@@ -72,7 +72,7 @@ public class NewQuestionsPanel : MonoBehaviour
                 answerIds.Add(aq.GetId());
             }
 
-            string user = Database.Instance.GetSignedInUser().Value;
+            KeyValuePair<int, String> user = Database.Instance.GetSignedInUser();
             QuestionData = Database.Instance.GetNewQuestion(answerIds, user, gameManager.GetComponent<GameManagerScript>().GameMode);
 
             AnswerText.text = "???? - ????";

+ 3 - 2
dbFiles/Question.php

@@ -8,13 +8,14 @@
 	$conn = new mysqli($hostname, $username, $pass, $database);
 	
 	$gameId = $_POST["gameId"];
-	$answeredQuestions = $_POST["answeredQuestions"];
+	$playerId = $_POST['playerId'];
+	
 	if (!$conn) {
 		die("Connection Failed. ". mysqli_connect_error());
 	}
 	mysqli_set_charset($conn,'utf8');
 	
-	$sql = "SELECT questions.id, question, answer, categoryId as category, name, r,g,b,a FROM questions INNER JOIN questionToCategory ON questions.id = questionToCategory.questionId INNER JOIN category on category.id = questionToCategory.categoryId WHERE questionToCategory.categoryId IN (SELECT categoryId FROM gameCategories WHERE gameId = $gameId) " . ($answeredQuestions == ""?:" AND questions.id NOT IN ($answeredQuestions)") . " ORDER BY RAND() limit 1";
+	$sql = "SELECT questions.id, question, answer, categoryId as category, name, r,g,b,a FROM questions INNER JOIN questionToCategory ON questions.id = questionToCategory.questionId INNER JOIN category on category.id = questionToCategory.categoryId WHERE questionToCategory.categoryId IN (SELECT categoryId FROM gameCategories WHERE gameId = $gameId) AND questions.id NOT IN (SELECT * FROM usersLockedQuestions WHERE gameId = $gameId AND playerId = $playerId) ORDER BY RAND() limit 1";
 	
 	$result = mysqli_query($conn, $sql);