2016-06-20 2 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

코드 문제는 없으며, 어떻게 해야할지 모르겠습니다. 점수를 계산할 데이터베이스 열에 값을 삽입하는 일종의 함수가 필요합니다. 예를 들어 10 점을 얻은 점수를 합산하여 점수를 계산하면 점수가 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 

을, 당신은 업데이트 단일 행을 유지하려는 가장 현재까지. 이 작업을 확실히 수행 할 수는 있지만 통계를 합산 한 것이 아닌 모든 게임을 그룹별로 확인하고 실제로 추적하는 한 더 간단하게 수행 할 수 있습니다. 당신은 을 얻을 수 개별 조각에서 합계 통계.

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을 내놓았습니다. 그러나 여전히 한 가지 문제가 있습니다. 어떻게 합계 함수로 주문할 수 있습니까? 그것은 다음과 같습니다 : http://prntscr.com/bisr11 기본적으로 # 1 테이블 위치에 $ qty 인 가장 큰 Kills 합계 번호를 가진 사용자를 원합니다 – QuestionForPHP

+0

Nevermind, 귀하의 단계를 사용한 다음 ORDER By totalCills DESC 덕분에. – QuestionForPHP

관련 문제