jquery表单插件将重复条目保存到mysql表

Posted

技术标签:

【中文标题】jquery表单插件将重复条目保存到mysql表【英文标题】:jquery form plugin saving duplicate entries to mysql table 【发布时间】:2012-02-14 15:47:33 【问题描述】:

我正在为朋友的网站设计管理面板。我正在使用 jquery 表单插件提交表单而不刷新页面。由于这种形式需要将图像上传到服务器,我无法使用我更熟悉的ajax。

这是我的表单/jquery:

    <script type="text/javascript" src="jquery.form.js"></script>

    <script type="text/javascript" >
     $(document).ready(function()  

                $('#submitform').live('click', function()            
                           $("#preview").html('');
                    $("#preview").html('<img src="loader.gif" />');
                $("#imageform").ajaxForm(
                            target: '#preview'
            ).submit();

                );
            ); 
    </script>

<form id="imageform" method="post" enctype="multipart/form-data" action='pages/addprodprocess.php'>
<table >
<tr>
<td>Product Name:</td> <td><input type="text" name="prodname" id="prodname" placeholder="Product Name"/></td>
</tr>
<tr>
<td>Product Description:</td> <td><textarea name="proddesc" id="proddesc" placeholder="Product Description"></textarea></td>
</tr>
<tr>
<td>Product Price:</td> <td><input type="text" name="prodprice" id="prodprice" placeholder="Price eg. 7.99"/></td>
</tr>
<tr>
<td>Product Category:</td> <td>
<?php
   $getcats = mysql_query("select * from product_cats");
    if(mysql_num_rows($getcats) == 0)
    echo '<select id="prodcat" name="prodcat" disabled="disabled">';
           echo '<option>Please create a category first!</option>';
           echo '</select>';
           else 
           echo '<select id="prodcat" name="prodcat">';
   while($cats = mysql_fetch_array($getcats))
   echo '<option value="'.$cats['cat_id'].'">'.$cats['cat_name'].'</option>';
   
   echo ' </select>';

   
   ?></td>
</tr>
<tr>
<td>Product image:</td> <td><input type="file" name="photoimg" id="photoimg" /></td>
</tr>

<tr><td></td><td><input type="submit" value="submit" id="submitform"/></td></tr>
</table>
</form>
<div id='preview'>
</div>

我的表单/jquery 似乎工作正常,问题是在提交时处理表单。 提交后,它会发送到我的“addprodprocess.php”页面进行处理,效果很好,但是当将表单值保存到 mysql 时,它会将重复项(相同的数据不止一次)保存到表中!

这是我的处理页面:

<?php
$link2 = mysql_connect('localhost', 'username', 'pass'); 
if (!$link2) 
    die('Could not connect: ' . mysql_error());

mysql_select_db('database'); 

//ADD PRODUCT
if (isset($_FILES['photoimg'])) 
$path = "../products/";
       $valid_formats = array("jpg", "png", "gif", "bmp");
    if(isset($_POST) && $_SERVER['REQUEST_METHOD'] == "POST")
        
            $name = $_FILES['photoimg']['name'];
            $size = $_FILES['photoimg']['size'];

            if(strlen($name) && strlen($_POST['prodname']) && strlen($_POST['proddesc']) && strlen($_POST['prodprice']) && strlen($_POST['prodcat']))
                
                    list($txt, $ext) = explode(".", $name);
                    if(in_array($ext,$valid_formats))
                    
                    if($size<(1024*1024))
                        
                            $actual_image_name = time().substr(str_replace(" ", "_", $txt), 5).".".$ext;
                            $tmp = $_FILES['photoimg']['tmp_name'];
                            if(move_uploaded_file($tmp, $path.$name))
                                
                                mysql_query("INSERT INTO `products` (`product_name`,`product_desc`,`product_img`,`product_price`,`product_cat`) VALUES('".$_POST['prodname']."','".$_POST['proddesc']."','".$name."','".$_POST['prodprice']."','".$_POST['prodcat']."')");

                                    echo "<img src='products/".$name."'  class='preview' height='75' width='75'>";
                                
                            else
                                echo "failed";
                                
                        
                        else
                        echo "Image file size max 1 MB";
                                           
                        
                        else
                        echo "Invalid file format..";   
                        
                

            else
                echo "All fields MUST be filled in!";
                

            exit;
        
          
        ?>      

任何可以帮助我的人,将不胜感激!

【问题讨论】:

【参考方案1】:

在 INSERT 之前运行 SELECT 并确保它返回 NULL。

【讨论】:

以上是关于jquery表单插件将重复条目保存到mysql表的主要内容,如果未能解决你的问题,请参考以下文章

使用 jQuery ajax 和 PHP 复制到 mySQL 的条目

WordPress小部件中的重复表单字段?

如何处理重复条目的错误?

将表单条目保存到变量并添加到表中

JSF 2.0将动态表单保存到数据库[重复]

消除链接到查询结果的重复表单条目