关于我首先尝试做什么的一点细节。 我有一个在线游戏系统,用户写一个单词,这会被发布到一个带有一些值的数据库。一切正常。
这是一个数据库条目示例:
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);
}
奇怪的是,我可以让玩家展示他们是否已经初始化了对手的比赛,从而隐藏了“新游戏”按钮,但是我无法让“接受游戏”按钮正常工作。 数据库和SQL绝对是我的弱点,我真的无法找到一种正确的方法来解决这个问题。最初的想法是在数据库中为每个User / Victim提供他们自己的Table,然后在其他UserId表中提出检查游戏的问题,会很快变得混乱。
我可能还应该在listview适配器中添加这个,所以每个listview项的f.id更改,这些检查也发生在每个listview适配器上,我意识到这不是很有效但我的主要关注点正在开始工作,然后从那里进行优化。
另外需要注意的是,我的“新游戏”按钮工作得很好,我认为第二个按钮几乎就是同样的东西,但无论我在哪个方面工作,它都行不通,我'我确定它只是在俯视。 任何想法的家伙?
好吧我已经把它缩小到这样一个事实:用于检查游戏是否已被这个人发起的SQL语句没有返回任何内容,所以这显然是我出错的地方但是我无法想象出了什么问题,我尝试了各种各样的事情!
答案 0 :(得分:0)
不要选择某人已经在比赛的所有球员。相反,查询类似:
SELECT `uniqueID`
FROM currentgames
WHERE (`victim` = '$victim' AND `rival` = '$rival')
OR (`victim` = '$rival' AND `rival` = '$victim');
这样,您要么返回一行,要么不返回,并且您不需要检查返回的行以查看其中一行是否有问题。这也应该使您的Accept逻辑变得更容易。