2012-08-15 74 views
1

因此,我首先要做的一點細節。 我有一個在線遊戲系統,用戶在這裏寫一個單詞,這個單詞被髮布到一個數據庫中,並且有一些值。這一切工作正常。某些數據庫邏輯,檢索正確的條目

這裏有一個數據庫條目例如:

uniqueID victim  rival wordguess won 
    6  607260120 504374351  Gg  0 

現在的問題,許多受害者可以啓動對許多競爭對手的遊戲,如何做一個受害者檢查,他們有對他們發起了一個遊戲,他們已經啓動了對一個人的比賽?

我得到了目前正在使用的檢查,這些事情與這些線的兩個PHP文件:

$query = "SELECT `rival` FROM currentgames WHERE `victim` = '$victim'"; 
echo $row["rival"].","; 

並向受害者周圍的正好相反。

現在,在我的Java我檢查的listarray適配器電流值,像這樣:

for (int i = 0;i<NetPlay.rivalArray.length-1;i++) 
     { 
      Log.i("VICTIM ARRAY DATA ", NetPlay.rivalArray[i]); 

      if (NetPlay.rivalArray[i].equals(f.id)) 
      { 
       ingame = true; 
       break; 

      } 
      else 
      { 
       ingame = false; 

      } 
     } 

     for (int i = 0;i<NetPlay.victimArray.length-1;i++) 
     { 
      Log.i("RIVAL ARRAY DATA ", NetPlay.victimArray[i]); 

      if (NetPlay.victimArray[i].equals(NetPlay.myId)) 
      { 
       battle = false; 
       break; 
      } 
      else 
      { 
       battle = true; 

      } 

     } 

     if (battle.equals(false)) 
     { 
      battleBtn.setVisibility(View.INVISIBLE); 
     } 
     else 
     { 
      battleBtn.setVisibility(View.VISIBLE); 
     } 

     if (ingame.equals(true)) 
     { 
      newgameBtn.setVisibility(View.INVISIBLE); 
     } 
     else 
     { 
      newgameBtn.setVisibility(View.VISIBLE); 
     } 

奇怪的是,我可以讓玩家展現它們是否已經初始化一個對陣對手,從而隱藏「新遊戲」按鈕,但我無法使Accept Game按鈕正常工作。 數據庫和SQL絕對是我的弱點,我真的無法弄清楚解決這個問題的正確方法。最初的想法是在數據庫中爲每個用戶/受害者提供他們自己的表格,然而在其他UserId的表格中提出檢查針對他們的遊戲的問題會非常快速地變得混亂。

我也許應該添加這是在一個listview適配器裏面,所以f.id爲每個listview項目進行更改,這些檢查也發生在每個listview適配器上,我意識到這不是非常高效,但我的主要重點是讓它工作,然後從那裏進行優化。

另外要注意的是,我有「新遊戲」按鈕的完美工作,我認爲第二個按鈕將是幾乎相同的一種東西,但無論我的工作方式是什麼,它不工作,我我確定它的東西我只是俯視。 任何想法傢伙?

好的我已經縮小到這樣的事實,即用於檢查遊戲是否由此人發起的遊戲的SQL語句沒有任何返回,所以這顯然是我出錯的地方,但我不能弄清楚什麼是錯的,我嘗試了各種各樣的!

+0

那麼發生了什麼?即使遊戲被接受,「接受遊戲」按鈕是否始終顯示? – Jim 2012-08-16 00:03:30

+0

在您的PHP腳本中,您是否刪除了一些代碼?只要確保,因爲如果你這樣做了,什麼都不會輸出,你所做的只是創建一個字符串。 – Duniyadnd 2012-08-16 00:04:36

+0

我沒有包括所有代碼,只是我認爲相關的部分,它一切正常,只是沒有按預期工作,問題是「接受戰鬥」按鈕應該顯示接受某人開始的遊戲你,但是不管我做什麼我都不能讓它正確顯示,我要麼讓它顯示給每個人,要麼隱藏給每個人,如果這有意義的話? – 2012-08-16 00:09:54

回答

0

不要選擇某人已經在玩的所有玩家。相反,查詢是這樣的:

SELECT `uniqueID` 
FROM currentgames 
WHERE (`victim` = '$victim' AND `rival` = '$rival') 
OR (`victim` = '$rival' AND `rival` = '$victim'); 

這樣,你要麼行回來,或者你不這樣做,你不需要通過行以檢查返回,看是否行之一是問題。這應該會讓接受邏輯變得更容易。

+0

因此,這將獲得該個人遊戲的唯一ID呢?我不確定這會修復它,雖然它與我已經進行的非常相似,只是這是更有效率 – 2012-08-16 00:19:38

+0

好的。那麼你需要找到什麼條件才能使「接受」按鈕正常工作。您是否需要找到一款遊戲,但是其他一些領域有特別的價值來表明遊戲尚未被接受? – 2012-08-16 00:23:28

+0

一旦遊戲結束,它現在會從數據庫中刪除,所以在檢測遊戲是否被接受,存在的簡單方面沒有問題。 如果rivalid = currentrivalid(在列表視圖中)並且如果victimID = myID 我目前正在爲 進行檢查但是它似乎沒有工作 – 2012-08-16 00:28:42