2016-06-20 3 views
-8

私のプログラムを使用している人のためにリーダーボードを作成する必要があるPHPのリーダーボードに問題があります。PHPのゲームのリーダボード/ハイスコア

プログラムはスコアをデータベースに送信し、後で選択したプレーヤーのすべてのゲームスコアを別のページに表示しています。 24時間後にスコアがデータベースから消去されています。私が必要とするのは、ゲームのスコアを送信するために使用される同じPHPで別のデータベース(すでに持っているもの)を使うことです。しかし、代わりに、新しい関数はスコアを他のデータベースに送信することになっています(それはスコアを消去しません)。

この関数は、再生したユーザーが存在しない場合にのみデータベースに新しい行を追加することになっています。プレーヤーが存在し、スコアが送信された場合、そのスコアを同じ列に追加して合計(合計)を計算したいと思います。

例:プレイヤーには10人の死者と10人の死者があります。彼は新しいゲームをプレイし、彼の得点は5キルと5人の死者です。データベースは、DB列が10キルと10人の死者から15人の死者と15人の死者(数学的に合計/加算された、またはあなたが5人の死者と5人の死者と呼んでいる) 。さて、私はこれを行う方法がありますか?リーダーボードの目的は、ユーザーの最高得点を表示するのではなく、常に全死亡数と総死亡数を表示することです。

提案がありますか?

+2

、そしてあなたが助けが必要なコードを使用して、具体的な問題を提供します。

select userId, count(1) as totalGamesPlayed, sum(deaths) as totalDeaths, sum(kills) as totalKills from GameRecord group by userId 

戻り値:次に、あなたのようなことを行うことができます。 – Kritner

+0

提案を開始:既に試したことを表示 –

+0

コードの問題はありません、私はそれを行う方法が分かりません。私は、スコアを計算するデータベース列に値を挿入するために、ある種の関数が必要です。もしそれが奇妙だったならば、得点は単にそれを合計することによって数学を行うだけです - 古い得点5キル=新しい得点なので、それはプレーヤー列のデータベースで15キルに変更する必要があります。 – QuestionForPHP

答えて

0

この疑似やってするのではなく:

シナリオ1:

// user exists 
// determine current score 
// update user, current score + new game score 

シナリオ2:ここでは

// user does not exist 
// insert user with new game score 

を、あなたが更新され、単一の行を維持しようとしているほとんどのアップ現在まで合計。これは間違いなく実行することができますが、統計情報を集計するだけではなく、すべてのゲームを実際に追跡してグループでOKであれば、より簡単に行うことができます。あなたはを取得することができます個々の部分からの合計統計。

GameRecord:ユーザーが以前に関係ない "GameRecord" があったかどうかを

playId int primary key identity 
userId int 
deaths int 
kills int 

-- Game 1 
insert into GameRecord (userId, deaths, kills) 
values (42, 0, 5) 

-- Game 2 
insert into GameRecord (userId, deaths, kills) 
values (42, 1, 5) 

-- Game 3 
insert into GameRecord (userId, deaths, kills) 
values (1, 0, 1) 

このデータでは、「ローリングトータル」を維持するのではなく、各ゲームの記録を保持しています。私はあまりテキストの壁のようなこの外観を作ることをお勧め

userId  totalGamesPlayed  totalDeaths  totalKills 
42   2     1    10 
1   1     0    1  
+0

ちょっと、ありがとう、これは便利ですが、私はすでにこれを考え出しています:数分前にhttp://prntscr.com/bisq3n。しかし、まだ1つの問題は、私は私の合計機能でそれを注文することができますか? http://prntscr.com/bisr11基本的には、$ qtyの最大のKills総数を持つユーザーを#1のテーブルポジションにしたいのです – QuestionForPHP

+0

あなたのステップを使用してORDERを使用しましたBy totalCills DESCありがとうございます。 – QuestionForPHP