Как сделать так, чтобы данные в mysql выбирались только один раз через веб-форму?

#php #mysql #html

#php #mysql #HTML

Вопрос:

Я создаю простую веб-форму (или привязку к ней!), Которая отображает список футбольных команд. Этот список команд находится в таблице mysql с одним столбцом. Как я могу сделать так, чтобы, если команда была выбрана в веб-форме, ее нельзя было выбрать снова в форме? т.Е. Чтобы убедиться, что они случайно не выбраны для игры друг с другом или не играют дважды одновременно. Мой код пока выглядит так, как показано ниже, и, похоже, работает нормально. Он включает в себя несколько других итераций того же кода для других команд хозяев и гостей. Любые указания / помощь с благодарностью.

 <select name="hometeam">
<?php
$query = "SELECT * FROM teams order by teamname";

$result = mysql_query($query);

while($row = mysql_fetch_array($result))
{
  echo "<option value="".$row['teamname']."">".$row['teamname']."</option>n  ";
}

?>
</select>
<select name="hometeam2">
<?php
$query = "SELECT * FROM teams order by teamname";

$result = mysql_query($query);

while($row = mysql_fetch_array($result))
{
  echo "<option value="".$row['teamname']."">".$row['teamname']."</option>n  ";
}

?>
</select>
  

Ответ №1:

I метод: возможным и простым решением этого может быть использование javascript. То есть, как только выбор был сделан в обоих полях со списком, то перед отправкой формы на сервер вы можете сравнить два значения, и если они окажутся одинаковыми, вы можете предупредить пользователя об этом.

Кроме того, просто для добавления, хотя вы проверяете с помощью javascript, но всегда желательно повторно проверять на стороне сервера, чтобы избежать взлома. Надеюсь, это поможет.

Метод II: Если вы не хотите показывать команду, выбранную в одном раскрывающемся списке, в другом раскрывающемся списке, то для этого вам придется использовать Ajax следующим образом:

При выборе значения в одном выпадающем списке — запустите ajax-запрос — отправка выбранного значения из выпадающего списка на сервер. Теперь измените запрос на сервере, чтобы выбрать все значения, исключая это значение, а затем отправьте значения обратно клиенту. Таким образом, пользователь сможет видеть значения, исключая выбранное.

Надеюсь, это поможет.

Комментарии:

1. Мне нравится метод 2. Это было больше похоже на то, что я думал. Теперь, чтобы найти учебник по Ajax. 🙂

Ответ №2:

jQuery сделал бы это довольно просто:

 <script type="text/javascript">
$(document).ready(function() {
    $("select[name=hometeam]").change(function() {
        if ( $(this).val() == $("select[name=hometeam2]").val() ) {
            alert("This team cannot play itself!");
        }
    });

    $("select[name=hometeam2]").change(function() {
        if ( $(this).val() == $("select[name=hometeam]").val() ) {
            alert("This team cannot play itself!");
        }
    });
});
</script>
  

http://jquery.com/

Комментарии:

1. Это здорово и работает так, как описано, хотя я надеялся на способ даже не предоставлять пользователю возможность выбора команды дважды.