我需要将以下输入的数据插入数据库。整个<div class="clone">
可以使用jquery进行克隆,并且还会为名称添加+1,例如,下一个创建的div将具有名为name =“npm [] 1”,name =“apm [] 1”等的输入。 /> <div class="list" id="sub">
部分列表可以检查的商店子类别(商店可以有多个子类别),并且他们的名字也获得+1。这样好吗?
<div class="clone">
<label>Shop name</label><input type="text" name="npm[]0" id="npm" required>
<label>Address</label><input type="text" name="apm[]0" id="apm" required>
<label>City</label><input type="text" name="mipm[]0" id="mipm" required>
<label>Working hours</label><input type="text" name="rv[]0" id="rv" required>
<label>Tel</label><input type="text" name="ktf[]0" id="ktf" required>
<label>Mob</label><input type="text" name="ktm[]0" id="ktm" required>
<label>E-mail</label><input type="text" name="kea[]0" id="kea" required>
<label>Contact person</label><input type="text" name="ipko[]0" id="ipko" required>
<a id="select" class="ctpct">Select shop subcategory</a>
<div class="list" id="sub">
<?php
$a="select a.id,a.cat,b.x,b.subcat,b.cat_id from cat a
inner join
subcat b
on a.id = b.cat_id
where b.cat_id !=1
order by a.id";
$res = mysql_query($a) or die(mysql_error());
$cat = '';
while ($re = mysql_fetch_array($res))
{
if( $cat === '' )
{
$cat = $re["cat"];
echo "<div class='catdis'>";
echo "<h2>$cat</h2>";
}
elseif( $cat !== $re["cat"] )
{
$cat = $re["cat"];
echo "</div>";
echo "<div class='catdis'>";
echo "<h2>$cat</h2>";
}
$subcat= $re["subcat"];
$id= $re["x"];
echo "<input type='checkbox' name='subcat[]0' value='$id'> $subcat<br />";
}
?>
</div>
</div>
PHP部分:
foreach ($_POST as $key => $value) {
$values = mysql_real_escape_string($value);
$query2 = "INSERT INTO shops(n, a, c, wh, tel, mob, mail, con) VALUES ('$values')";
$rs2=mysql_query($query2) or die(mysql_error());
}
现在,php部分我打印了这个“列数与第1行的值计数不匹配”,这可能是因为在那个克隆div下我有更多的输入,正常的。我是一个php新手所以你可以帮我解决这个问题。我需要它为每个商店插入数据,从“商店名称”输入到“商店”中的“联系人”,并在表'shop_subcat'中选择子类别,子类别_id和shop_id,谢谢!
答案 0 :(得分:1)
您应该输入输入字段名称name="apm[]"
。 PHP专门处理以[]
结尾的名称,它将所有输入转换为数组。所以你可以这样做:
foreach ($_POST['apm'] as $apm) {
...
}
处理所有这些输入。
您的name="apm[]0"
不遵循此模式,因此无效。
另外,从输入中删除id
属性。 ID必须是唯一的,当您克隆DIV时,您正在创建重复项。
要解决SQL错误,您需要修复查询。您列出了要插入的7列,因此您必须提供7个值。
$input_count = count($_POST['npm']);
for ($i = 0; $i < $input_count; $i++) {
$n = mysql_real_escape_string($_POST['npm'][$i]);
$a = mysql_real_escape_string($_POST['apm'][$i]);
// Repeat above pattern for all the other inputs
$query2 = "INSERT INTO shops(n, a, c, wh, tel, mob, mail, con)
VALUES ('$n', '$a', '$c', '$wh', '$mob', '$mail', '$con')";
$rs2=mysql_query($query2) or die(mysql_error());
}