2016-04-12 12 views
0

私のウェブサイトには毎日の質問があり、ユーザーが経験値(XP)を取得する正しい答えを選択することに基づいています。mySQLのデータセットを一度だけ更新する方法

mySQLデータベースに2つのテーブルがあります。 1)各質問は、彼らが私が持っている正しい質問に答える一度各ユーザは、テーブルのユーザーにXP()今

を持つテーブルquestionbankでxp_value()

  • を持っている2)ユーザー

    • をquestionbankこのクエリでのif文:

      そう
      $mysqli->query("UPDATE users SET xp = xp + '$xp_value' WHERE id = '$userID'"); 
      

      は、もちろん、私は成功した新しい値にXPのユーザーを更新、しかし、問題はもちろんであるユーザーが戻ってこれに答えることができます彼/彼女のxpを増加させる無限の時間の質問。

      xpを更新するだけのコード化戦略を探していますが、ユーザーが質問に答えようとしている他のすべての時間は、xpを与えず、彼/彼女が望んでいるかどうか再度確認します。

      は oliver_foxx

  • +1

    これを達成するには、どのような質問に答える必要があります。あなたは、ユーザーXが質問Aに答えて経験Bを得たと言うことができるDB設計が必要です。そのようにして、更新を行うときに、まずユーザーがその質問にすでに回答しているかどうかを確認してください – Erick

    +0

    ユーザー。そのためには別のテーブルが必要です。ユーザーが戻って同じ質問に再び答えると、そのテーブルに対してチェックする必要があります。そしてそのユーザーのためにその質問のエントリがある場合、そのユーザーに任意のXPポイントを与えます。 –

    +0

    あなたはユーザーテーブルのみを更新していますが、ユーザーがどの質問を回答したかをどのように知っていますか? – mitkosoft

    答えて

    0

    は、一日を追跡し、あなたの時間を感謝しますか?あなたは毎日の質問をしているので、XPは、最後の更新が '今日'でないときにのみ授与されるべきです。

    +0

    毎日の質問には良いアイデアのようですが、新しい質問のアップロード時間が遅れているとバグが発生する可能性があります。しかし、私はそれをそのまま実行し、このコメントを更新します。ありがとう! –

    0

    あなたが言うことができる新しいテーブルが必要になります。ユーザーXがこの時間と日付に質問Aに回答しました。

    更新を行う際に、ユーザーが質問に既に回答しているかどうかを簡単に確認できます。

    ユーザーと質問の2つの参照表があります。質問表には、各質問の経験が含まれます。