【问题标题】:how to prevent duplicate data if data get from DB?如果数据来自数据库,如何防止重复数据?
【发布时间】:2011-03-28 04:04:00
【问题描述】:

我有一个由两个文本字段和一个组合框组成的表单。 我想防止来自客户端的重复条目数据。 我从数据库中获取组合框数据,例如:

<select id="line" name="faline" >
<?php
   $sql="SELECT `Line_Name` FROM `prod_sch` WHERE `Line_Name` LIKE 'FA %' GROUP BY `Line_Name` ORDER BY `Line_Name`";
   if ($sql) {
               $res=mysql_query($sql) or _doError(_ERROR30 . ' (<small>' . htmlspecialchars($sql) . '</small>): ' . mysql_error() );
              }
   while ($dat = mysql_fetch_array($res, MYSQL_NUM)) {
           echo "\t\t\t\t\t\t\t\t<option value='".$dat[0]."'>".$dat[0]."</option>\n";
         }
?>
</select>

如何合并或修改这段代码:

<script language="javascript" type="text/javascript">
    $(function() {
        $("#Button1").click(function(e) {
            var itemExists = false;
            var txt = $("#Text1").val();
            e.preventDefault();
            $("#Select1 option").each(function() {
                if ($(this).text() == $.trim(txt)) {
                    itemExists = true;
                    alert('Item already exists');
                }
            });

          if (!itemExists) {
          $("#Select1").append("<option value=\"1\">" + txt + "</option>");
          $("#Text1").val('');
          }
        });
    });           
</script>   

【问题讨论】:

  • 您在哪里采用了这种缩进样式?以前没见过,看起来有点……乱七八糟。

标签: php jquery duplicates


【解决方案1】:

首先,使用Line_Names 构建一个数组:

<select id="line" name="faline" >
<?php
   $sql="SELECT `Line_Name` FROM `prod_sch` WHERE `Line_Name` LIKE 'FA %' GROUP BY `Line_Name` ORDER BY `Line_Name`";
   if ($sql) {
               $res=mysql_query($sql) or _doError(_ERROR30 . ' (<small>' . htmlspecialchars($sql) . '</small>): ' . mysql_error() );
              }

   $lineNames = array();
   while ($dat = mysql_fetch_array($res, MYSQL_NUM)) {
           $lineNames[] = $dat[0];
         }

然后拨打array_unique:

   $lineNames = array_unique($lineNames);

最后再次迭代:

   foreach ($lineNames as $lineName) {
           echo "\t\t\t\t\t\t\t\t<option value='".$lineName."'>".$lineName."</option>\n";
           }
?>
</select>

【讨论】:

  • 我相信我的回答更有效率,更何况它的代码更少:)
  • 这在我看来像是一个 PHP 问题,而不是 SQL 问题。
  • @all:请再次检查我的问题..我已经改变了。
【解决方案2】:

我相信使用SELECT DISTINCT 可以解决问题。

【讨论】:

    【解决方案3】:

    您不能只使用 SQL 为您执行此操作吗?即通过使用 distinct 关键字

    $sql="SELECT distinct `Line_Name` FROM `prod_sch` WHERE `Line_Name` LIKE 'FA %' GROUP BY `Line_Name` ORDER BY `Line_Name`";
    

    抱歉,在我的意思是与众不同之前,我有独特之处。

    【讨论】:

    • 我认为 UNIQUE 是一个索引约束。真的可以这样用吗?
    • 我已经改变了我的问题..获取组合框数据没有问题。
    猜你喜欢
    • 2018-12-29
    • 1970-01-01
    • 2020-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    相关资源
    最近更新 更多