Как избежать множественных обновлений SQL с помощью формы?

0

Я пытаюсь обновить данные mysql, разрешив пользователям отправить форму.

Пользователь может обновить результат игры, а команда-победитель получит +1 победу в mysql. Пользователь всегда может видеть форму игры и обновлять/изменять игру.

Мой вопрос заключается в том, как предотвратить второе или третье время +1 победу над существующей командой победителей, когда пользователи снова обновят форму.

ex: Команда A бьет команду B, и пользователь отправляет форму. Mysql будет +1, чтобы выиграть столбец для команды A. Позже пользователи узнают, что Team C бьет команду D и снова представляет форму, но Team A, Team B, Team C и Team D находятся в одной и той же форме, поэтому, если пользователь отправляет форму снова, команда A получит 2 победы в выигрышной колонке, а Team C получит 1 выигрыш. Я хочу сохранить команду А только с 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'
}

Надеюсь, я четко объясню свои вопросы. Спасибо за любой ответ.

Теги:
sql-update

1 ответ

4
Лучший ответ

Ваш запрос на обновление должен быть только:

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

Нет необходимости совершать поездку на PHP и обратно в базу данных; это можно сделать за одну поездку.

Как предотвратить дублирование материалов? Отображать только игры, у которых не было указанного победителя. Кроме того, проверьте в инструкции обновления, что победитель еще не указан.

  • 0
    Спасибо за ответ. Установите win = win + 1, это полезно знать. Что касается дублирующих представлений, я хочу, чтобы пользователи могли обновлять игру на тот случай, если они ошиблись в первый раз .... В любом случае, чтобы сделать это? +1 хотя.
  • 0
    @ Джерри: чтобы исправить, в этих ситуациях я бы использовал отдельный экран и запрос.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню