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表的主要内容,如果未能解决你的问题,请参考以下文章