2010-05-31 2 views
0

사용자가 양식을 제출하도록하여 mysql 데이터를 업데이트하려고합니다.양식을 사용하여 여러 SQL 업데이트를 방지하는 방법은 무엇입니까?

사용자는 게임 결과를 업데이트 할 수 있으며, 승리 한 팀은 mysql에서 +1 승리를 얻습니다. 사용자는 항상 게임 양식을보고 게임을 업데이트/변경할 수 있습니다.

제 질문은 두 번째 또는 세 번째 시간을 방지하는 방법입니다. 사용자가 양식을 다시 업데이트 할 때 기존 우승팀에게 +1 우승합니다.

예 : 팀 A가 팀 B를 제치고 사용자가 양식을 제출합니다. mysql은 팀 A의 열을 얻기 위해 +1합니다. 나중에 사용자는 팀 C가 팀 D를 이기고 다시 양식을 제출하지만 팀 A, 팀 B, 팀 C 및 팀 D는 모두 같은 형식으로되어 있으므로 if 사용자가 다시 양식을 제출하면 팀 A는 우승 열에서 2 승을 얻고 팀 C는 1 승을 얻습니다. 팀 A에게 1 승만을 남기고 싶습니다. 가능한 경우 확실하지 않습니다. 어떤 답장을 보내 주셔서 감사합니다.

양식 HTML을

<form> 
//First time The user only select the winning team in winner1 and submit the form 
//Second time the user see the page, The Team A will be selected base on 1 win in mysql 
//when user tried to submit again, 
//Team A will get another 1 win in its record which is not true. 

<select name='winner1'> 
<option>Select the winner</option> 
<option>Team A</option> 
<option>Team B</option> 
</select> 

//User didn't select the winning team first time 
//User submits again with the selected winner team for winner2 . 
//database will be Team A => 2 wins, Team C =>1 win. 

<select name='winner2'> 
<option>Select the winner</option> 
<option>Team C</option> 
<option>Team D</option> 
</select> 
</form> 

내 결과 PHP는 내가 .. 분명히 어떤 답장을 보내 주셔서 감사합니다 내 질문에 설명 희망

for ($i=1; $i<3; $i++){ 

$winner=$_POST['winner'.$i] 

//omit some php query code....... 

select win from team where teamName ='$winner' 

//get win and +1 to win 
$win++ 

update team set win='$win' where teamName ='$winner' 
} 

.

답변

4

귀하의 업데이트 쿼리는 할 필요가 :

UPDATE TEAM 
    SET win = win+1 
WHERE teamName = '$winner' 
--AND win = 0 

다시 데이터베이스에 PHP로 여행하고을 할 필요가 없다; 그것은 한 번의 여행으로 이루어질 수 있습니다.

중복 제출을 방지하려면 어떻게해야합니까? 승자가 지정되지 않은 게임 만 표시하십시오. 또한 승자가 아직 지정되지 않았다는 것을 업데이트 문에서 확인하십시오.

+0

답장을 보내 주셔서 감사합니다. Set win = win + 1을 알고있는 것이 좋습니다. 중복 제출물의 경우 사용자가 처음에 잘못했을 때를 대비하여 게임을 업데이트 할 수있게하고 싶습니다 .... 어쨌든 할 수 있습니까? +1. – FlyingCat

+0

@ Jerry : 문제를 해결하려면 별도의 화면 및 쿼리를 사용하십시오. –

관련 문제