Bir formu kullanarak birden fazla SQL güncelleştirmeleri önlemek için nasıl?

1 Cevap php

Kullanıcıların bir formu göndermek icar ile mysql verilerini güncellemek için çalışıyorum.

Kullanıcı oyunun sonucunu güncelleme olabilir ve kazanan takım mysql +1 galibiyet almak. Kullanıcı her zaman oyun formu ve güncelleştirme görebilirsiniz / oyunu değiştirmek.

Benim soru kullanıcıların tekrar form güncelleme sırasında mevcut kazanan takım, ikinci ya da üçüncü kez 1 galibiyet önlemek için nasıl.

ex: Team A Takımı B yener ve kullanıcı formu gönderir. Mysql Daha sonra Ekibi A. sütun kazanmak için 1, kullanıcıların Team C Takım D yener bulmak ve tekrar formu göndermek, ancak A Takımı, Takım B, C takımı ve Takım D aynı formda tüm vardır, bu yüzden eğer kullanıcı tekrar form gönderdiğinde, A Takımı galibiyet sütun ve Ekibi C 2 galibiyetler 1 galibiyet alacak alacak. Ben sadece 1 galibiyet ile A Takım tutmak istiyorum. Değil eğer mümkünse emin. Herhangi bir cevap için teşekkürler.

Formu 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>

Benim sonuç 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'
}

Ben .. açıkça herhangi bir cevap için teşekkür soruları açıklar umuyoruz.

1 Cevap

Güncelleştirme sorgusu sadece olması gerekir:

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

Geri veritabanına PHP ve yolculuk yapmaya gerek yok; Tek bir gezi yapılabilir.

Nasıl yinelenen gönderimleri önlemek için? Yalnızca belirtilen bir kazanan olmadı oyunlar görüntüleyebilir. Ayrıca, kazanan zaten belirtilmiş değil güncelleme açıklamada edin.