我有一个HTML表,每行都有文本输入,根据所讨论的表,可能有五到五百个唯一的文本输入需要单独存储它们的输入,因此可以在同一行调用和显示它们。
使用我当前的数据库连接脚本和 HTML 设置方式,所有输入都将存储在同一个表中,无法区分一组数据或另一组数据。
除了必须为每个输入创建一个单独且唯一的脚本之外,这个问题的解决方案是什么?
$(document).ready(function() {
$(".toggler").click(function(e) {
e.preventDefault();
$('.cat' + $(this).attr('data-prod-cat')).toggle();
});
});
$('.submit').click(function(e){
e.preventDefault();
var me = $(this);
$.ajax({
type:"post",
data: {price : me.closest('.input').val()},
url: "link/to/your/mysql/function/"
}).done(function(html){
alert(success);
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<table>
<tr>
<td>Product</td>
<td>Price</td>
<td>Destination</td>
<td>Updated on</td>
</tr>
<tr>
<td>Oranges</td>
<td>100</td>
<td>
<button class="toggler" data-prod-cat="1">+ On Store</button>
</td>
<td>22/10</td>
</tr>
<tr class="cat1" style="display:none">
<td style="white-space: nowrap">Enter Amount:
<input type="text" maxlength="4" name="quantity" class="input" /> <a href="#" class="submit" type="submit" value="Submit">Submit</a>
</td>
</tr>
<tr>
<td>Apples</td>
<td>100</td>
<td>
<button class="toggler" data-prod-cat="2">+ On Store</button>
</td>
<td>22/10</td>
</tr>
<tr class="cat2" style="display:none">
<td style="white-space: nowrap">Enter Amount:
<input type="text" maxlength="4" name="quantity" class="input" /> <a href="#" class="submit" type="submit" value="Submit">Submit</a>
</td>
</tr>
</table>
<html>
<body>
<?php
$con = mysql_connect("mysql_url","id","password");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("database_name", $con);
$var = $_POST[price];
$sql="INSERT INTO table (price)
VALUES
('$var')";
if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
echo "1 record added";
mysql_close($con)
?>
</body>
</html>
如果我正确理解您的问题,您希望能够输入新数据,而不必为每个条目运行单独的命令。
我还看到您为每个字段都有一个单独的提交按钮,这可能是不明智的。
您现在可以尝试两件事:
1) 创建一个全局提交按钮,该按钮对整个表计数。您可以在 PHP 中使用 foreach()
循环来获取单独的值并构建单个 SQL 命令,如下所示:
$sql = "INSERT INTO table VALUES(price) VALUES";
$ran_once = false;
foreach($_POST as $p) {
if($ran_once) {$sql .= ", ";}
else {$sql .= "('$p')";}
$ran_once = true;
}
$sql .= ";";
2)您可以使用jquery为您单击的每个"提交"按钮动态发送数据。这可以通过$.post( [address], {[data]}, [success])
功能来完成。
旁注:我看到很多人仍然使用mysql_*
而不是mysqli_*
。我都用过,我认为mysqli_*
比mysql_*
容易得多(在 php 中)
您可以使用内联数据属性。生成页面时,将其添加到每个提交按钮:
data-cat="id-of-cat-goes-here"
通过这种方式,您可以跟踪哪个按钮适用于哪个类别。
您可以使用jQuery轻松访问这些值。下面的代码将为您提供按钮相关类别的 ID(假设this
是当您单击按钮时)。
$(this).data('cat');
有关如何使用数据属性的更多信息:MDN - 数据属性。