如何在mysql中创建数据只能通过webform选择一次?

时间:2011-10-11 14:11:41

标签: php mysql html

我正在构建一个简单的网络表单(或者绑定!),其中显示了一个足球队列表。这个团队列表位于单列mysql表中。如何在Web表单上选择一个团队,以便在表单上再次无法选择该团队?即确保他们不会被意外选中以互相比赛,或同时进行两次比赛。到目前为止,我的代码如下所示,似乎工作正常。它包括其他主队和客队的相同代码的其他几个迭代。任何指针/帮助都非常感激。

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

2 个答案:

答案 0 :(得分:0)

我方法:一个可能的简单解决方案可以通过javascript。也就是说,一旦在两个组合框中进行了选择,那么在将表单提交到服务器之前,您可以比较这两个值,如果发现它们相同,那么您可以提醒用户这个。

另外,只是添加,虽然你使用javascript验证,但它总是建议在服务器端重新验证,以避免任何黑客攻击。希望这会有所帮助。

II方法:如果您不希望在其他下拉列表中显示在一个下拉列表中选择的团队,那么您将不得不以下列方式使用Ajax:

在一个下拉列表中选择值时 - 触发ajax请求 - 将所选值从下拉列表发送到服务器。现在,修改服务器上的查询以选择除此值之外的所有值,然后将值发送回客户端。这样,用户将能够看到除所选值之外的值。

希望这有帮助。

答案 1 :(得分:0)

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/